标尺(scale)也叫尺度。是把数据映射到显示设备的变换。数学上叫做尺度变换。物质的本质是变异,变异的基础是它的参照。使用不同的参照会得到不同的数值。尺度变换可能是线性的也可能是非线性的,如对数变换,y=log10(x)。 数据值与物理的绘图单元之间的变换就需要尺度变换。如把1:10序列绘制在一张纸上,要把纸上的一条线段分成10个等分,每个等分对应数值1,或者首先绘制一个10厘米的线段,每厘米线端代表1。这种映射函数就是尺度变换。同样绘制1到10这个数列,不同大小的纸张上面绘制不同大小的图时选用的尺度不同。这只是一个简单的例子,但能够说明什么是尺度。
ggplot中标尺控制数据向视觉属性的转换。标尺不仅包括尺度变换算的逻辑(trans),还包括其显示的属性,如标签、刻度、上限、下限、位置等。
scale_x_continuous(name = waiver(), breaks = waiver(),
minor_breaks = waiver(), labels = waiver(), limits = NULL,
expand = waiver(), oob = censor, na.value = NA_real_,
trans = "identity", position = "bottom", sec.axis = waiver())
scale_y_continuous(name = waiver(), breaks = waiver(),
minor_breaks = waiver(), labels = waiver(), limits = NULL,
expand = waiver(), oob = censor, na.value = NA_real_,
trans = "identity", position = "left", sec.axis = waiver())
scale_x_log10(...)
scale_y_log10(...)
scale_x_reverse(...)
scale_y_reverse(...)
scale_x_sqrt(...)
scale_y_sqrt(...)
参数:
breaks: 刻度,或称ticks,可能的取值是
NULL: 无breaks
waiver(): 默认值,由变换的输入对象(也就是变量)计算得到。
一个位置向量
一个函数,用极限作为输入,输出breaks。
minor_breaks: 最小的刻度值
可能的取值与breaks相同。
取值为:
- NULL 没有标签
- waiver() 默认取自变换对象的计算结果
- 字符串向量,用于手动指定标签,其长度必须与刻度数相同。
- 一个用刻度作为输入输出标签的函数。
使用默认值。
p1 <- ggplot(mpg, aes(displ, hwy)) +
geom_point()
自定义坐标轴标签:
p1 +
scale_x_continuous("Engine displacement (L)") +
scale_y_continuous("Highway MPG")
用NULL去掉坐标轴标签
p1 + labs(x = NULL, y = NULL)
修改坐标轴上下限
p1 + scale_x_continuous(limits = c(2, 6))
或者使用简便的方式
p1 + xlim(2, 6)
选择要显示的刻度
p1 + scale_x_continuous(breaks = c(2, 4, 6))
添加这些刻度对应的标签
p1 + scale_x_continuous(
breaks = c(2, 4, 6),
label = c("二", "四", "六")
)
标签格式化
df <- data.frame(
x = rnorm(10) * 100000,
y = seq(0, 1, length.out = 10)
)
p2 <- ggplot(df, aes(x, y)) + geom_point()
p2 + scale_y_continuous(labels = scales::percent)
y轴标签显示%.
在scales包中,常用的还有scales::dollar,scales::comma
坐标变换
p1 + scale_y_log10()
p1 + scale_y_sqrt()
p1 + scale_y_reverse()
最后一个按x轴反转.