前面给大家介绍了
今天小编再来跟大家聊聊R中的另一个跟颜色相关色的R包grDevice
这个R包提供两个颜色相关的函数
- colorRamp()
- colorRampPalrttr()
colorRamp()和colorRampPalette()都可用于建立调色板。通过传入希望得到颜色渐变,如蓝、紫,colorRamp()和colorRampPalette都会返回一个函数。二者返回的函数区别为:colorRamp()返回的函数像grey()一样,输入的参数为[0,1]之间的数列,数列中数字个数即为函数返回的色彩数。返回的是RGB颜色值,例如,(0,0,255)表示是蓝色。
colorRampPalette()返回的参数则像rainbow()一样,输入的参数为希望返回的色彩的数量。返回的是Hex(十六进制)颜色值,例如#0000FF表示蓝色。
下面我们举个具体的例子来看一下
#一行两列,摆放两张图
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方法得到的一致了
今天的分享就先到这里,敬请期待下一期内容!
参考资料: