ggplot2学习笔记之标度scale


标度(scale),是将数据空间(标度的定义域)映射到图形属性空间(标度的值域)的一个函数。每一种图形属性都有一个默认的标度,当我们每一次使用这个图形属性时都会自动添加到图形中。


图形属性 离散型 连续型
颜色(colour)和填充色(fill) brewer、grey、hue、identity、manual gradient、gradient2、gradientn
位置(position)(x,y) discrete continuous、date、datetime、log10、sqrt、reverse
形状(shape) shape、identity、manual  
线条类型(line type) linetype、identity、manual  
大小(size) identity、manual size

各种标度,粗体是默认


用法:以scale_开头,接下来是图形属性名称(例如,colour_、shape_或x_),最后以标度的名称结尾(例如,gradient、hue 或manual)。比如,离散性数据的颜色图形属性默认标度名为scale_colour_hue(),形状图形属性标度为scale_shape_shape()。使用?或者help()可以查看相关参数及具体用法。

  • scale_x_XXX、scale_y_XXX 是控制x、y 轴的标度,用于设置x、y 轴的显示标签、显示范围、刻度上的值等等。XXX 主要有continuous、data、datatime、discrete、log10、sqrt 等等。
  • 对于图例的标度,如果图例是控制着颜色属性colour,那么使用scale_colour_XXX 可以设置这个图例的属性(比如标签、显示的值)。类似的还有scale_size_XXX、scale_fill_XXX、scale_shape_XXX 等等,具体用法以及参数请查看帮助文档。

1. 设置坐标轴与图例标签

  • 设定坐标轴或者图例的标签:

通过运用xlab、ylab、labs 三个辅助函数,也可以设定坐标轴或者图例的标签。以下三个代码绘制的图形是一样的:

p <- qplot(cty,hwy,data=mpg,colour=displ)
p + scale_x_continuous('City mpg') + scale_y_continuous('Highway mpg')
p + xlab('City mpg') + ylab('Highway mpg')
p + labs(x = ('City mpg'), y = ('Highway mpg'))
这里写图片描述
  • 设置图例显示标签:
p + scale_colour_gradient('Displacement')
p + labs(colour = 'Displacement')

这里写图片描述

2. 参数limits

limits 可以用于固定标度定义域,即指定数据显示范围。连续型标度接受长度为2 的数值型向量;离散型接受一个字符型向量。limits 影响的是图形上显示的元素。
比如以下两个代码中,第一个代码控制x 轴,只显示(10,25)的数据(左图);第二个控制图例显示范围,只显示(2,5)的部分图例,而且图中在(2,5)之外的数据没有指定颜色(即灰色)。

p + scale_x_continuous(limits=c(10,25))
p + scale_colour_gradient(limits=c(2,5))
 

这里写图片描述


3. 参数breaks 和labels

breaks 控制着显示坐标轴或图例上的值,即坐标轴上应该显示哪些刻度线的值,或一个连续标度在一个图例中将被如何分段。breaks 影响显示坐标轴或图例上的元素。
labels 指定了应在断点处显示的标签。如果设置了labels,则必须同时指定breaks,只有这样两个参数才能正确匹配。

p + scale_x_continuous(breaks=c(10,20,30))
p + scale_colour_gradient(breaks=c(2, 3, 4, 5))
 

这里写图片描述

从以上两个图形中可以看出,使用breaks 参数改变的仅仅是坐标轴与图例中显示的值,图中元素并没有发生改变。而使用limits 参数会影响图中元素。

p + scale_x_continuous(breaks=c(10,20,30),labels=c('A','B','C'))
p + scale_colour_gradient(breaks=c(2,3,4,5,6),labels=c('A','B','C','D',"E"))

 

这里写图片描述
同样的,参数labels 与breaks 一样,改变的只是坐标轴或图例上的元素,而不会改变图形中的元素。


 评论