【孙老湿画图系列--第七弹】 颜色设置
绘图是R语言的特色之一,而颜色是传递信息的重要元素。在我们的世界中,一共有三种颜色(红色,蓝色,绿色),并且通过色彩、深浅、明暗变化来组成我们这万千世界。
在R中关于颜色的调控方法很多:
1、可以用palette()获取当前默认颜色:
palette()
black, red, green3, blue, cyan, magenta, yellow, gray
pie(rep(1,8), col=palette(), border = palette(), labels = palette())
2、R中也有预定义的颜色,共有657种颜色,可以用colors()函数获取,在使用、中可以直接指定颜色名称:
colors()
pie(rep(1,657), col=colors(), border = colors(), labels = "")
3、R中还有6种预定义的调色板,传入获取颜色的个数,就获得相应个数的颜色列表,gray()的参数需在[0,1]:
rainbow()、heat.colors()、terrain.colors()、topo.colors()、cm.colors()、gray()
par(mfrow = c(2,3),mai=c(0.1,0.1,0.5,0.1))
pie(rep(1, 12),col = rainbow(12), labels = "", main = "rainbow")
pie(rep(1, 12),col = heat.colors(12), labels = "", main = "heat")
pie(rep(1, 12),col = terrain.colors(12), labels = "", main = "terrain")
pie(rep(1, 12),col = topo.colors(12), labels = "", main = "topo")
pie(rep(1, 12),col = cm.colors(12), labels = "", main = "cm")
pie(rep(1, 12),col = gray(0:12 / 12), labels = "", main = "gray")
4、如果我们对预设的调色板不是很满意,也可以通过colorRamp()和 colorRampPalette()。 colorRamp()返回值和grey()类似,参数为[0,1]之间的数。colorRampPalette()返回的参数则像rainbow()一样,入参为希望返回颜色板色彩的数量:
par(mfrow=c(1,2))
mycolors <-colorRampPalette(c("blue", "red"))(11)
pie(rep(1, 12), col = mycolors, labels ="", main = "colorRampPalette")
mycolors <- colorRamp(c("blue","red"))
mycolors <- mycolors(seq(0, 1, len =10))
pie(rep(1, 12), col = mycolors, labels ="", main = " colorRamp ")
5、另外,也有一些R包,提供了比较好的预定义颜色,比如RColorBrewer包提供了3套很好的配色方案。用户只需要指定配色方案的名称,就可以用包中的brewer.pal()函数生成颜色。这3套配色方案包括:
连续型sequential:生成一系列连续渐变的颜色。
离散型diverging:生成用深色强调两端、浅色标示中部的系列颜色。
分类型qualitative:生成一系列彼此差异比较明显的颜色。
install.packages("RColorBrewer")
library(RColorBrewer)
display.brewer.all()
在ggplot中使用RColorBrewer包中的颜色,通过scale_*_brewer()指定,
library(ggplot2)
mtcars$cyl <- factor(mtcars$cyl)
p <- ggplot(mtcars, aes(disp, qsec, col= cyl)) +
geom_point(size = 2) +
theme_bw() +
scale_color_brewer(palette = "Set1") +
theme(axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
p
本系列课程主要侧重于讲解图形原理,以及在R中的实现过程,并没有特意追求美观,故很多图的细节部分修饰有限,大家重点理解实现过程。
扫码关注,获取更多精彩内容
我
是
彩
蛋
关注公众号后:
回复文字:好好学习,收听喜马拉雅FM电台栏目《一分钟听懂NGS基础概念》,让生信分析不再遥不可及。
回复文字:果然科学,给你看另一篇好玩的文章。