ggplot2之颜色设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ggplot2之颜色设置相关的知识,希望对你有一定的参考价值。

参考技术A https://www.sohu.com/a/348752646_785442

https://www.jianshu.com/p/567e4a2c295a

①color:对点和线的颜色进行调整;当为柱状图或者空心散点时,color仅改变边框颜色。

eg:红色外框的条形图

>ggplot(df, aes(x=type, y=number)) + geom_bar(stat="identity", colour="#FF9999")

②fill:改变一些作为填充对象的颜色。

eg:黑色外框、红色填充的条形图

>ggplot(df, aes(x=type, y=number)) + geom_bar(stat="identity", fill="#FF9999", colour="black")

除了对颜色进行全局性的修改,也可以将变量值映射为颜色,就是用颜色来表示某个变量,需要将它置于aes 命令之中。同时在对图形属性进行映射之后,可使用标尺控制这些属性的显示方式, 其显示规律如下:

/ggplot2中提供了两种色标功能,用于使用rcolorbrewer调色板:

scale_fill_brewer()用于箱形图,条形图,小提琴图,点图等

scale_color_brewer()用于行和点

/ggplot2的scale系列函数一般使用三个单词,用_连接,如scale_fill_gradient和 scale_color_continuous等。

第一个单词都是scale;

第二个是color和fill等可更改的颜色参数,对应分组使用的颜色函数即可。比如柱状图,fill是柱子的填充颜色,这时就使用scale_fill系列函数来更改颜色。点图使用color分组,则使用scale_color_系列函数来更改颜色;

第三个单词的不同,可分为以下两种情况:

①离散型:在颜色变量是离散变量的时候使用,比如分类时每一类对应一种颜色。

1)manual :直接指定分组使用的颜色

#直接指定颜色

>p + scale_fill_manual(values=c("red", "blue", "green", "yellow","orange"))

#或者直接指定对应分组颜色

>p + scale_fill_manual(values=c("Fair" = "red", "Good" = "blue", "Very Good" = "green" , Premium = "orange", Ideal = "yellow"))

#设置颜色透明度

>p + scale_fill_manual(values=alpha(c("#6495ED","#969696",0.5)))

2)hue :通过改变色相(hue)饱和度(chroma)亮度(luminosity)来调整颜色

3)brewer :使用ColorBrewer的颜色

/ brewer用于调用包ColorBrewer 中的配色方案,要想 了解所有的调色板 ,可以使用RColorBrewer::display.brewer.all查看。

/ 显示某个色盘的颜色

>display.brewer.pal(n, name)

函数参数的描述:

n:调色板中不同颜色的数量,最小值为3,最大值取决于调色板。

name:ColorBrewer列表中的调色板名称。 例如name = RdBu。

/想要 显示调色盘中某个色块的名称 :

>library(RColorBrewer)

>brewer.pal(n = 8, name = "Dark2")

[1] "#1B9E77" "#D95F02" "#7570B3" "#E7298A" "#66A61E" "#E6AB02" "#A6761D"## [8] "#666666"

/brewer的使用案例

>p + scale_fill_brewer(palette="Dark2")  #填充箱型图、条形图、小提琴图、点图等

>p + scale_color_brewer(palette="Dark2")  #用于点等

4)grey :使用不同程度的灰色

#通过start end 两个参数指定,0为黑,1为白,都在0-1范围内

eg:p + scale_fill_grey  #使用不同程度的灰色

p + scale_fill_grey(start=1, end=0)   #设定灰度范围

② 连续型: 颜色变量是连续变量的时候使用,比如0-100的数,数值越大颜色越深。

1)gradient 创建渐变色

p <- ggplot(df, aes(x, y)) + geom_point(aes(colour = z1))

gradient 创建渐变色#参数设定节点颜色

p + scale_color_gradient(low = "white", high = "black")

#设置中间过渡色

p + scale_color_gradient2(low = "red", mid = "white", high = "blue")

#使用R预设调色板

p + scale_color_gradientn(colours =rainbow(10))

2) distiller 使用ColorBrewer的颜色

#将ColorBrewer的颜色应用到连续变量上

p + scale_color_distiller(palette = "Spectral")

p + scale_color_distiller(palette = "Greens")

3) identity 使用color变量对应的颜色,对离散型和连续型都有效

R语言与医学统计图形-11ggplot2几何对象之散点图

ggplot2绘图系统——几何对象之散点图

以geom开头的函数超过30个。几何对象和标度函数scale密不可分。只有在aes中传入某个变量,scale才能发挥作用。

所谓标度scale,就是图形遥控器,用于控制元素属性。相对于color/shape等参数而言,可以进行更多、更精确的设置。

颜色标度设置

颜色梯度(gradient)标度(scale)函数。

#双色梯度函数
scale_color_gradient(...,high='#56B1F7',low='#132B43',...)
scale_fill_gradient

#三色梯度函数
scale_color_gradient2(...,low=muted('red'),mid='white',high=muted('blue'),...)
scale_fill_gradient2

#自定义n色梯度函数,接受颜色向量
scale_color_gradientn(...,colors,...)
scale_color_gradientn

#手动设置颜色标度函数(对已有设置颜色不满意时)
scale_color_mauual(..,values)
scale_fill_mauual

示例。

df <- data.frame(x=runif(100),y=runif(100),
                 z1=rnorm(100),z2=abs(rnorm(100)))

#color后接连续型变量也可做到颜色梯度展示,但只是映射,没那么精细。
ggplot(df,aes(x,y))+geom_point(aes(color=z2))

ggplot(df,aes(x,y)) +geom_point(aes(color=z1))+
  scale_color_gradient2() #默认的三色梯度

技术图片

ggplot(df,aes(x,y)) +geom_point(aes(color=z1))+
  scale_color_gradient(low='green',high = 'blue') 

ggplot(df,aes(x,y)) +geom_point(aes(color=z1))+
  scale_color_gradientn(colors = RColorBrewer::brewer.pal(5,'Set3')) 

技术图片

ggplot(mtcars,aes(mpg,wt))+geom_point(aes(color=factor(cyl)))+
  scale_color_manual(values = c("red","blue","green"))
#注意传入的颜色向量长度必须和颜色映射变量因子水平一致

技术图片

点的形状标度

标度函数中形状函数。

scale_shape(...,solid=TRUE) 
#默认实心点

#自定义点型
scale_shape_manual(...,values)

示例。

ggplot(dsmall,aes(carat,price))+geom_point(aes(shape=cut))+
  scale_shape_manual(name='diamonds',values = c(1:5))
#注意此处1:5和基础绘图包中的点形状代号是一样的

技术图片

点的大小标度

点的大小标度函数有:

scale_radus(name,breaks,labels,limits,range,trans,guide)

scale_size(name,breaks,labels,limits,range,trans,guide)

scale_size_area(...,max_size)

scale_size_manual

示例。

ggplot(mpg,aes(displ,hwy,size=hwy))+
  geom_point()+
  scale_size(name = 'hwy size',breaks = c(12,24,44),
             labels = c('low','middle','high'))


ggplot(mpg,aes(displ,hwy,size=hwy))+
  geom_point()+
  scale_radius() #将hwy大小传至圆点半径

技术图片

df <- data.frame(x=c(0:10),y=c(20:30))
ggplot(df,aes(x=x,y=y,size=x))+
  geom_point()+
  scale_size_area()

技术图片

以上是关于ggplot2之颜色设置的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2 facets 设置绘图颜色

如何设置 ggplot2 填充颜色以聚合统计信息?

R语言可视化包ggplot2包通过因子变量设置图像颜色实战

R语言使用ggplot2包的快速可视化函数qplot绘制分组直方图(分组颜色设置)实战

ggplot2渐变如何设置自定义颜色和值?

R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(设置异常值的形状颜色)实战