Scales, Axes and Legends
文章目录
6.1 介绍(Introduction)
标度Scales
控制着从数据到美学(图形属性)的映射。他们将您的数据转换为您可以看到的内容,例如大小,颜色,位置或形状。展现标度的常见做法是绘制图例和坐标轴。
从形式上说,每个标度都是从数据空间中的一个区域(标度的定义域)到美学空间中的一个区域(标度的值域)的函数。轴或图例是反函数:它允许您将视觉属性转换回数据,应该不是很难理解…
定义域(变量)可以是连续型、离散型、有序或者无序型。值域(变量)则包括我们可以感知的图形属性(颜色、形状、大小、线条等等)。
执行标度的过程分为 :
- 变换
- 训练
- 映射
标度可以粗略地分为四个类别:
- 位置标度
- 颜色标度
- 手动离散型标度
- 同一型标度
6.2 修改标度(Modifying Scales)
实际上在生成图片的命令都有默认的标度,当你写:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class))
实际命令背后的标度是这样的:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
scale_x_continuous() +
scale_y_continuous() +
scale_colour_discrete()
一般情况下,ggplot2会默认添加标度,如果我们需要重新定义标度,就需要自己搞
我们来修改一下想x,y轴的名称:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
scale_x_continuous("A really awesome x axis label") +
scale_y_continuous("An amazingly great y axis label")
同一个标度函数设置多次,只会保留最后一次的效果,下面两幅图效果是一样的:
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
scale_x_continuous("我喜欢绿色") +
scale_x_continuous("我还是喜欢个其他颜色吧") +te
#> Scale for 'x' is already present. Adding another scale for 'x', which will replace
#> the existing scale.
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
scale_x_continuous("我还是喜欢个其他颜色吧")
我们再来换换颜色:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
scale_x_sqrt() +
scale_colour_brewer()
从上面几个例子可以看出来,scale
的“命名方案”是由三部分组成,并用“_
”分隔:
scale
;- 美学名称(例如
colour
,shape
或x
); scale
的名称(例如continuous
,discrete
,brewer
)。
按图形属性和变量类型排列的各种标度如下表所示,默认标度以粗体显示:
图形属性(美学) | 离散型 | 连续型 |
---|---|---|
颜色(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 |
6.3 引导元素:图例和坐标轴(Guides: Legends and Axes)
引导元素:生成一个允许读图者从图形属性空间到数据空间进行反向映射的引导元素,从而从图中读取数值。简而言之就是介绍可视化之后的数据是什么。
- 对于位置型图形,引导元素是坐标轴(Axis)
- 对于其他图形,引导元素主要是图例(Legend)
下面来看看图例和坐标轴的组成:
6.3.1 标度名称(Scale title)
标度函数的第一个参数name
是轴/图例标题。
可以使用"文本字符串"
(\n
用于换行符)
df <- data.frame(x = 1:2, y = 1, z = "a")
p <- ggplot(df, aes(x, y)) + geom_point()
p + scale_x_continuous("X axis")
也引用数学表达式quote()
(?plotmath
打开数学表达式帮助文件):
p + scale_x_continuous(quote</