ggplot2学习笔记之颜色标度

除了位置标度之外,最常用的图形属性就是颜色了。对于连续型变量有三种基于渐变的方法,对于离散型有两种方法。rgb 编码的色彩空间使用了红、绿、蓝三种光的强度来表示一种颜色,这种色彩空间存在个问题:视觉感知上不均匀。这里使用的是hcl 色彩空间的现代方案,它分别由色相(hue)、彩度(chroma)、明度(luminance)三部分构成。

以下标度对边界色(colour)图形属性和填充色(fill)图形属性均有效。

连续型:

根据颜色梯度色彩数量划分,共有三类连续型颜色梯度(即渐变色):

  • scale_colour_gradient()和scale_fill_gradient()双色梯度。顺序由低到高,参数low 和high 用于控制此梯度两端颜色;
  • scale_colour_gradient2()和scale_fill_gradient2()三色梯度。顺序为低-中-高,参数low和high 用于控制此梯度两端颜色,中点默认值是0,可以用参数midpoint 将其设置为任意值;
  • scale_colour_gradientn()和scale_fill_gradientn()自定义的n 色梯度。此标度需要赋给参数colours 一个颜色向量。不加其他参数的话,这些颜色将依照数据的范围均匀地分布。如果你需要让这些值不均匀地分布,则可以使用参数values。如果参数rescale 的值是TRUE(默认),则values 应在0 和1 之间取值,如果rescale 取值FALSE,则values 应在数据范围内取值。

颜色梯度常被用来展示一个二维表面的高度,用以描述第三维度,颜色的深浅代表着不同的值,例如描述地势高低时,地势的高低常常用颜色深浅来展现。以下将使用R自带的一个向量数据集volcano,经过以下转换成数据框(ggplot2 只接受数据框类型)

[plain]  view plain  copy
  1. library(reshape2)  
  2. volcano3d <- melt(volcano)  
  3. names(volcano3d) <- c("x", "y", "z")  
  4. p <- ggplot(data,aes(x,y,fill=z)) + geom_tile()
  5. p + scale_fill_gradient(limits=c(120,170))  
  6. p + scale_fill_gradient(low = 'blue', high = 'red')

第一个使用默认参数;第二图使用了参数 limits=c(120,170),用于控制填充颜色的值范围,所以小于 120 与大于 170 的值都没有颜色(即都是灰色);最后一个图中使用了参数 low 与 high,控制颜色在 low 与 high 之间渐变。

[plain]  view plain  copy
  1. p + scale_fill_gradient2(low = 'blue', high = 'red')  
  2. p + scale_fill_gradient2(low = 'blue', high = 'red', midpoint = 150)

        以上两图都设定了颜色由 blue 到 red 渐变,但是左图使用默认参数 midpoint=0,右图使用参数midpoint=150,而 z 值的范围是 94~195,所有他们在图中实际渐变色为,左图:浅红-红,右图:蓝-白-红 。

[plain]  view plain  copy
  1. p + scale_fill_gradientn(colours = c('black','blue','red','white'))  
  2. p + scale_fill_gradientn(colours = topo.colors(10))  
  3. p + scale_fill_gradientn(colours = terrain.colors(10))  
  4. p + scale_fill_gradientn(colours = heat.colors(10))


离散型:

       离散型数据有两种颜色标度。一种可以自动选择颜色,另一种可以轻松地手工从颜色集中选择颜色。

       默认的配色方案,即scale_colour_hue()、cale_fill_hue(),可通过沿着hcl 色轮选取均匀分布的色相来生成颜色。这种方案对颜色较少时有比较好的效果,但对于更多不同的颜色就不好区分开来。里面的各个参数就不多说了,具体查看帮助。

       另一种可选的方案是ColorBrewer 配色,http://colorbrewer.org。使用的是scale_colour_ brewer ()、scale_fill_ brewer ()。要想了解所有的调色板,可以使用RColorBrewer::display.brewer.all()查看。以下是调色板:


          使用时,用参数palette=”调色板名称或者数字”。例如,使用第二个调色板时用palette = 2(等价于palette = 'YIOrBr')。以下以画箱线图为例。

[plain]  view plain  copy
  1. dsamp <- diamonds[sample(nrow(diamonds), 1000), ]  
  2. (d <- ggplot(dsamp, aes(cut, price, fill = cut)) + geom_boxplot())  
  3. d + scale_fill_brewer()  
  4. d + scale_fill_brewer(palette = 2)  
  5. d + scale_fill_brewer(palette = "Spectral")


左上图使用默认配色方案 cale_fill_hue();后三种都是使用第二种配色方案,分别使用的调色板是:默认调色板、YIOrBr 调色板、Spectral 调色板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值