暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言绘图|如何调用RColorBrewer包对图形颜色进行修改

4712

一、RColorBrewer简介

RColorBrewer包提供了较多的配色方案,能够满足不同类型数据的需要RColorBrewer包中提供的配色共分为3种类型,seq类型、qual类型以及div类型,其中seq类型的颜色可以表示为从低到高的有序数据,浅色代表低值数据,深色代表高值数据;qual适用于类别数据;div类型的颜色适用于强调两侧极端值(极大值与极小值)。

#字体加深部分为代码

install.packages("RColorBrewer")

library(RColorBrewer)

display.brewer.all()#显示所有颜色

brewer.pal.info#显示所有颜色的个数、类别等

brewer.pal.info["Blues",]#利用索引显示其中一种颜色信息

display.brewer.pal(9, "Blues")#查看一种颜色类型的配色

brewer.pal(9, "Blues") #查看该颜色下【十六进制颜色代码】

> [1] "#F7FBFF" "#DEEBF7" "#C6DBEF" "#9ECAE1" "#6BAED6" "#4292C6" "#2171B5" "#08519C" "#08306B"


二、在绘图中调用RColorBrewer颜色

#加载package

library(RColorBrewer)

(一)方式一:直接调用

#生成100个均值为100且标准差为1.5的数,并且重复100次

rand.data <- replicate(9,rnorm(100,100,sd=1.5))

#调用9个Blues颜色【注意brewer.pal中最小值为3】

boxplot(rand.data,col = brewer.pal(9,"Blues"))

#用9个YlOrRd颜色

boxplot(rand.data,col = brewer.pal(9,"YlOrRd"))

#结果如下图



(二)方式二:只调用其中一种颜色

#以Blues颜色为例,查看Blues颜色的十六进制代码

#查看Blues颜色的配色信息

brewer.pal(9, "Blues")

> [1] "#F7FBFF" "#DEEBF7" "#C6DBEF" "#9ECAE1" "#6BAED6" "#4292C6" "#2171B5" "#08519C" "#08306B"

rand.data <- replicate(9,rnorm(100,100,sd=1.5))

#选择"#6BAED6"颜色

boxplot(rand.data,col = "#6BAED6")

#选择"#08306B"颜色

boxplot(rand.data,col = "#08306B")

#结果如下图所示


(三)方式三:如果需要的颜色超出了RColorBrewer颜色的个数,如Blues颜色的个数为9个,如果需要配色的要素超过9个,则会产生配色不够的问题。此时有2种解决方法

#方法一:循环调用

#生成100个均值为100且标准差为1.5的数,并且重复48次

rand.data <- replicate(48,rnorm(100,100,sd=1.5))

#分别重复调用6次"Set2"和"Pastel1"颜色

boxplot(rand.data,col = brewer.pal(8,"Set2"))

boxplot(rand.data,col = brewer.pal(8,"Pastel1"))

#结果如下图所示


方法二:生成一列新的颜色

#以"Set2"和"Pastel1"颜色为例,分别生成48种颜色

newpalette1<-colorRampPalette(brewer.pal(8,"Set2"))(48)

newpalette2<-colorRampPalette(brewer.pal(8,"Pastel1"))(48)

rand.data <- replicate(48,rnorm(100,100,sd=1.5))

#调用上边生成的颜色

boxplot(rand.data,col = newpalette1)

boxplot(rand.data,col = newpalette2)

#结果如下图所示


多种颜色对比

library(RColorBrewer)

par(mfrow=c(1,2))

newpalette1<-colorRampPalette(brewer.pal(8,"YlOrRd"))(48)

newpalette2<-colorRampPalette(brewer.pal(8,"YlGnBu"))(48)

newpalette3<-colorRampPalette(brewer.pal(8,"Purples"))(48)

newpalette4<-colorRampPalette(brewer.pal(8,"Blues"))(48)

rand.data1 <- replicate(48,rnorm(100,100,sd=1.5))

rand.data2 <- replicate(48,rnorm(100,100,sd=1.5))

rand.data3 <- replicate(48,rnorm(100,100,sd=1.5))

rand.data4 <- replicate(48,rnorm(100,100,sd=1.5))

p1 <- boxplot(rand.data1,col = newpalette1)

p2 <- boxplot(rand.data2,col = newpalette2)

p3 <- boxplot(rand.data3,col = newpalette3)

p4 <- boxplot(rand.data4,col = newpalette4)

dev.off()

#结果如下图所示


三、其他

1.可在Console中输入?RColorBrewer查看官方帮助文档。


2.rnorm()函数

rnorm(n, mean = 0, sd = 1)#产生n个均值为0的数,且标准差为1


3.replicate函数

replicate(n, expr)#n表示重复执行次数;expr表示待执行表达式


4.生成属于自己的颜色

rand.data_demo <- replicate(5,rnorm(10,10,sd=1.5))

#生成单一颜色

mypalette_demo <- "#08306B"

#生成连续颜色

mypalette_demo1 <- brewer.pal(5,"Blues")

mypalette_demo2 <- brewer.pal(5,"YlGnBu")

#调用单一颜色

boxplot(rand.data11,col = mypalette_demo)

#调用连续颜色

boxplot(rand.data11,col = mypalette_demo1)

boxplot(rand.data11,col = mypalette_demo2)

#结果如下图所示


5.颜色反转

使用rev()函数,如将上文中的p1p2p3p4中的col函数分别进行反转【col = newpalette1改为col = rev(newpalette1)】,则生产的图形如下图所示

最后,可以动手尝试对以往所绘制的图形配色进行修改哦

附:颜色名称

BrBGPiYGPRGnPuOrRdBuRdGyRdYlBuRdYlGnSpectralAccentDark2PairedPastel1Pastel2Set1Set2Set3BluesBuGnBuPuGnBuGreensGreysOrangesOrRdPuBuPuBuGnPuRdPurplesRdPuRedsYlGnYlGnBuYlOrBrYlOrRd


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论