在ggplot2语法中,颜色作为一种图形属性,作用如同x的位置、y的位置、大小等。使用颜色这个属性时,我们需要考虑到很多维度或者说自由度。如表示离散数据时应该使用什么样的调色板?是否要使用几种不同的渐变色系?如何选择合适的颜色使得视觉有缺陷的人也能正确读图?
这里我们从两个方面来具体讨论,离散变量
和连续变量
的调色
一、离散变量
1、方法
scale_colour/fill_discrete() 色轮周围均匀等距色(同hue)
scale_colour/fill_hue() 色轮周围均匀等距色(同discrete)
scale_colour/fill_grey() 灰度调色板
scale_colour/fill_brewer() ColorBrewer调色板
scale_colour/fill_manual() 自定义颜色
2、默认调色板
这里不详细展开
scale_colour/fill_discrete() 色轮周围均匀等距色(同hue)
scale_colour/fill_hue() 色轮周围均匀等距色(同discrete)
> p <- ggplot(uspopage,aes(x = Year,y =Thousands,fill=AgeGroup))+geom_area()
> p
3、ColorBrewer调色板
ColorBrewer: Color Advice for Maps (colorbrewer2.org)
ColorBrewer包提供了很多调色板,我们先来看一下有哪些:
> library(RColorBrewer)
> display.brewer.all()
作图时,可以使用palette参数进行选择:
> p+scale_fill_brewer(palette = "Set3")
颜色是不是好看了很多呢?
4、灰度调色板
这里灰度值的调整是01之间的数字表示的,默认是0.20.8之间进行调节
> library(patchwork)
Warning message:
程辑包‘patchwork’是用R版本4.0.3 来建造的
> p1 <- p+scale_fill_grey(start = 0.9,end = 0.1)
> p2 <- p+scale_fill_grey(start = 0.1,end = 0.9)
> p1|p2
5、自定义调色板
使用scale_colour/fill_manual() 自定义颜色时,主要调节value参数,内容既可以是颜色的名称(red, blue, yellow等),也可以是RGB形式(#CC6666,#7777DD等),那我怎么知道有哪些值可以使用呢?
> colours()
共有657种颜色供我们选择
而RGB颜色十六进制表可以网上查询:🎨 HTML Color Codes (html-color.codes)
具体绘图同上使用:
> h <- ggplot(heightweight,aes(x = ageYear,y = heightIn,colour=sex))+geom_point()
> p1 <- h+scale_color_manual(values = c("yellow","blue"))
> p2 <- h+scale_fill_manual(values = c("#FF666","#7777AA"))
> p1|p2
二、连续变量
1、方法
scale_colour/fill_brewer() ColorBrewer调色板 (其中有连续型调色板)
scale_colour/fill_gradient() 自定义颜色(2种渐变色)
scale_colour/fill_gradient2() 自定义颜色(3种渐变色)
scale_colour/fill_gradientn() 自定义颜色(4种渐变色)
2、ColorBrewer调色板
参考离散型变量,palette
调用合适的调色板
3、自定义调色板
类似离散型自定义调色板,颜色也可以自己定义或者使用RGB值指定。
> h <- ggplot(heightweight,aes(x = ageYear,y = heightIn,colour=weightLb))+geom_point(size=3)
> h1 <- h+scale_color_gradient(low = "white",high = "black")
> h2 <- h+scale_color_gradient2(low = muted("salmon"),mid = "white",high = muted("blue"),midpoint = 110)
> h3 <- h+scale_color_gradientn(colours = c("violetred","whitesmoke","pink","blue"))
> (h+h1)/(h2+h3)
这里我们仅仅分享了ggplot中常见的几种配色方式,心中有数,变量是离散还是连续,这样选择颜色才不会无从下手!理解了这些,配色就简单了很多,除了ColorBrewer包之外,最常见的配色包还有ggsci,为你提供各大杂志经典款配色哦~~