1 R预设的调色板
这一系列函数有5个,即:
-
rainbow
-
heat.colors
-
terrain.colors
-
topo.colors
-
cm.colors
在R环境外面输出问号(?)和下面任一函数名就可以取得这5个函数的用法阐明。这些函数最少需求一个参数,n,表示要失掉颜色的数量。n在零碎允许范围内没无限制。上面用彩虹色彩色板函数rainbow发生的颜色绘一个色盘:
n <- 1000 png("rainbow.disc.png", bg = "transparent") par(mar = c(0,0,0,0)) pie(rep(1,times=n),labels="",col=rainbow(n),border=rainbow(n)) dev.off()
运转后会失掉一个rainbow.disc.png文件,图形如下:
五个调色板发生的颜色比照如下:
par(mfrow=c(5,1)); par(mar=c(0.1,0.1,2,0.1));par(xaxs="i", yaxs="i") n <- 10000 barplot(rep(1,times=n),col=rainbow(n),border=rainbow(n),axes=FALSE, main="Rainbow colors"); box() barplot(rep(1,times=n),col=heat.colors(n),border=heat.colors(n),axes=FALSE, main="heat.colors"); box() barplot(rep(1,times=n),col=terrain.colors(n),border=terrain.colors(n),axes=FALSE, main="terrain.colors"); box() barplot(rep(1,times=n),col=topo.colors(n),border=topo.colors(n),axes=FALSE, main="topo.colors"); box() barplot(rep(1,times=n),col=cm.colors(n),border=cm.colors(n),axes=FALSE, main="cm.colors"); box()
当然你能够不需求这麼多颜色,改动n值就可以了:
n <- 10 par(mfrow=c(5,1)); par(mar=c(0.1,0.1,2,0.1), xaxs="i", yaxs="i") barplot(rep(1,times=n),col=rainbow(n),border=rainbow(n),axes=FALSE, main="Rainbow colors"); box() barplot(rep(1,times=n),col=heat.colors(n),border=heat.colors(n),axes=FALSE, main="heat.colors"); box() barplot(rep(1,times=n),col=terrain.colors(n),border=terrain.colors(n),axes=FALSE, main="terrain.colors"); box() barplot(rep(1,times=n),col=topo.colors(n),border=topo.colors(n),axes=FALSE, main="topo.colors"); box() barplot(rep(1,times=n),col=cm.colors(n),border=cm.colors(n),axes=FALSE, main="cm.colors"); box()
这些函数前往的值是向量,完全可以按向量的方式取子集,也可以将不同函数前往的颜色组合起来运用:
par(mfrow=c(1,1)) par(mar=c(0.1,0.1,2,0.1), xaxs="i", yaxs="i") mycolors <- c(heat.colors(10)[c(1,3,5,7,9)], cm.colors(10)[c(2,4,6,8,10)]) barplot(rep(1,times=10),col=mycolors,border=mycolors,axes=FALSE, main="heat.colors(10)[c(1,3,5,7,9)], cm.colors(10)[c(2,4,6,8,10)]"); box()
关于数据量较大的散点图,设置颜色通明度是十分必要的,这一项可以经过alpha参数设置:
mycolor <- rainbow(3, alpha=0.02) #alpha设置(不)通明度 y1 <- 10+rnorm(10000); y2<- 5+rnorm(10000); y3 <- rnorm(10000) par(mfcol=c(1,1)); par(mar=c(0.1,0.1,0.1,0.1));par(xaxs="i", yaxs="i") plot(y1, pch=20, col=mycolor[1], ylim=c(min(y1,y2,y3),max(y1,y2,y3)), xlab="", ylab='', axes=F) points(y2, pch=20, col=mycolor[2]) points(y3, pch=20, col=mycolor[3]) box()
2 自定义调色板
假如觉得R预设调色板不合用,可以用colorRampPalette函数自定义调色板。运用之前得熟习几个R预定义的颜色称号,这些称号可以经过colors函数取得:
cl <- colors() head(cl,10)
## [1] "white" "aliceblue" "antiquewhite" "antiquewhite1" ## [5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine" ## [9] "aquamarine1" "aquamarine2"
length(cl)
## [1] 657
以后版本有657个预置颜色称号,常用的颜色称号你一定曾经晓得,比方 "red", "green", "gray", "blue", "cyan", "purple", "yellow", "orange"。上面我们可以用这些颜色称号经过colorRampPalette函数发生本人的颜色系列。colorRampPalette的参数如下:
colorRamp(colors, bias = 1, space = c("rgb", "Lab"), interpolate = c("linear", "spline")) colorRampPalette(colors, ...)
我们用它发生几个颜色系列:
par(mfrow=c(3,1));par(mar=c(0.1,0.1,0.5,0.1));par(xaxs="i", yaxs="i") n <- 1000 mycolors <- colorRampPalette(c("blue", "orangeRed"))(n) barplot(rep(1,times=n),col=mycolors,border=mycolors,axes=FALSE); box() mycolors <- colorRampPalette(c("darkgreen", "yellow", "orangered"))(n) barplot(rep(1,times=n),col=mycolors,border=mycolors,axes=FALSE); box() mycolors <- colorRampPalette(c("blue", "white", "darkgreen", "yellow", "orangered"), bias=1.2)(n) barplot(rep(1,times=n),col=mycolors,border=mycolors,axes=FALSE); box()
<div id="outline-container-sec-3" class="outline-2" font-size:14px;background-color:#ffffff;"="" style="word-wrap: break-word; font-family: "sans serif", tahoma, verdana, helvetica; font-size: 12px; white-space: normal; padding: 0px; margin: 0px; color: rgb(51, 51, 51);">
3 灰度和其他调色板函数
gray函数可以发生不同层次的灰度颜色。用法很复杂:
par(mfrow=c(1,1)) par(mar=c(0.1,0.1,0.1,0.1));par(xaxs="i", yaxs="i") n <- 1000 mycolors <- gray(0:n/n) barplot(rep(1,times=n),col=mycolors,border=mycolors,axes=FALSE); box()
hsv函数经过设置色彩、饱和度和亮度取得颜色,三个值都是0-1的绝对量,假如你对这些参数比拟熟习可以思索运用。:
par(mfcol=c(11,121)); par(mar=c(0,0,0,0));par(xaxs="i", yaxs="i") x <- seq(0,10)/10 ndx <- expand.grid(x, x, x) mycolor <- hsv(ndx[,3],ndx[,2],ndx[,1]) for(i in 1:nrow(ndx)){ barplot(1,col=mycolor[i],border=mycolor[i],axes=FALSE) }
scales软件包提供了很多颜色设置的函数,其中的alpha对颜色的通明度设置很方便,可以思索运用。有人能够喜欢用RColorBrewer软件包外面的不延续调色板,萝卜白菜吧。