查看原文
其他

【孙老湿画图系列--第七弹】 颜色设置

孙怀博 生信者言 2022-03-29

绘图是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基础概念》,让生信分析不再遥不可及。


回复文字:果然科学,给你看另一篇好玩的文章。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存