R语言中的颜色(三)-grDevice包

2022-09-21 17:19:28 浏览数 (1)

前面给大家介绍了

1.R语言中的颜色(一)-自带的调色板

2.R语言中的颜色(二)-gplots包

今天小编再来跟大家聊聊R中的另一个跟颜色相关色的R包grDevice

这个R包提供两个颜色相关的函数

  • colorRamp()
  • colorRampPalrttr()

colorRamp()和colorRampPalette()都可用于建立调色板。通过传入希望得到颜色渐变,如蓝、紫,colorRamp()和colorRampPalette都会返回一个函数。二者返回的函数区别为:colorRamp()返回的函数像grey()一样,输入的参数为[0,1]之间的数列,数列中数字个数即为函数返回的色彩数。返回的是RGB颜色值,例如,(0,0,255)表示是蓝色。

colorRampPalette()返回的参数则像rainbow()一样,输入的参数为希望返回的色彩的数量。返回的是Hex(十六进制)颜色值,例如#0000FF表示蓝色。

下面我们举个具体的例子来看一下

代码语言:javascript复制
#一行两列,摆放两张图
par(mfrow = c(1, 2))
#利用colorRampPalette生成颜色函数b2p1
b2p1 <- colorRampPalette(c("blue", "purple"))
#利用colorRamp生成颜色函数b2p2
b2p2 <- colorRamp(c("blue", "purple"))
#利用b2p1生成12个颜色,由蓝到紫,绘制第一个饼图
pie(rep(1, 12),  col = b2p1(12), border = b2p1(12), main = "colorRampPalette")

#利用b2p2生成12个颜色,由蓝到紫,返回的是RGB值
#利用rgb函数将RGB值转换成hex值
col=apply(b2p2(seq(0, 1, len = 12)),1,function(x){
    rgb(x[1],x[2],x[3],maxColorValue = 255)
})
#绘制第二个饼图
pie(rep(1, 12),  col = col, border = col, main = "colorRamp")

可以看到结果是一致的

我们单独把这两种方法得到的颜色拉出来看一下,colorRampPalette这种方法得到的函数,返回的颜色就是十六进制的颜色

colorRamp这种方法得到的函数,返回的是RGB值,这个如果直接传给col来绘图的话,画出来的图颜色会是错的。感兴趣的小伙伴可以自己试一下。

通过rgb函数转换之后的值就跟colorRampPalette方法得到的一致了

今天的分享就先到这里,敬请期待下一期内容!

参考资料:

1.R语言中的颜色(一)-自带的调色板

2.R语言中的颜色(二)-gplots包

0 人点赞