ggplot2学习笔记9:标度、坐标轴和图例(二)

图表上坐标轴的范围往往来自于数据的范围,这是默认生成的。颜色标度(Colour Scales)在ggplot2中,使用了一种名为HCL色彩空间(Hue-Chroma-Luminance)的现代方案,由三个部分构成,分别是色相(hue)、彩度(chr如果你要手动定制标度,使用以下几个方法:scale_shape_manual(), scale_linetype_manual(),scale_colour_manual()。手动型标度有个重要的参数是value,用于指定这个标度该生成的值。
摘要由CSDN通过智能技术生成

Scales, Axes and Legends



6.5 限制范围(Limits)

图表上坐标轴的范围往往来自于数据的范围,这是默认生成的。但有时候我们想修改这个范围,扩大使数据涵盖面更广或缩小使数据更集中更突出,这时,我们可以使用limits参数:

  • 对于连续型变量:应当设置为一个长度为2的数字向量;如果只想设置一个上限或者下限,那就设置另一个值为NA

  • 对于离散型变量:就要设置字符向量;列出所有的数据点

df <- data.frame(x = 1:3, y = 1:3)
base <- ggplot(df, aes(x, y)) + geom_point()

#直接查看图表
base
#查看其中一个区间,系统会提示你丢失了两个数据点
base + scale_x_continuous(limits = c(1.5, 2.5))
#> Warning message:Removed 2 rows containing missing values (geom_point).
#通过标度设置x轴的范围
base + scale_x_continuous(limits = c(0, 4))

我们会经常修改限制范围,下面几个函数会简化操作,xlim(), ylim() and lims()

我们可以作如下设置:

  • xlim(10, 20):x轴10-20的连续刻度
  • ylim(20, 10):y轴20-10的连续反转刻度
  • xlim("a", "b", "c"):x轴三个离散字作为刻度点
  • xlim(as.Date(c("2008-05-01", "2008-08-01"))):x轴日期范围为2008年5月1日至2008年8月1日

那我们来简化一下上面的代码:

base + xlim(0, 4)
base + xlim(4, 0)
base + lims(x = c(0, 4))

细细看一下就发现,图形生成的坐标范围要比我们设定的大一丢丢,这是默认的。设置参数expand = c(0, 0)可清除多余的刻度范围。一般我们与geom_raster()结合使用:

ggplot(faithfuld, aes(waiting, eruptions)) + 
  geom_raster(aes(fill = density)) + 
  theme(legend.position = "none")
ggplot(faithfuld, aes(waiting, eruptions)) + 
  geom_raster(aes(fill = density)) + 
  scale_x_continuous(expand = c(0,0)) + 
  scale_y_continuous(expand = c(0,0)) +
  theme(legend.position = "none")

注意xlim()ylim()中并没有expand参数

默认情况下,超出限制的任何数据都转换为NA,可以使用参数oob(out of bounds)将其覆盖到刻度。默认情况下即参数obb = scales::censor;另一个选项是scales::squish(),它将所有值压缩到范围内。来看例子:

df <- data.frame(x = 1:5)
p <- ggplot(df, aes(x, 1)) + geom_tile(aes(fill = x), colour = "white")
p
p + scale_fill_gradient(limits = c(2, 4))
p + scale_fill_gradient(limits = c(2, 4), oob = scales::squish)


6.6 标度工具箱(Scales Toolbox)

调整默认标度之外,还可创建新的标度覆盖默认值,有四类:

  1. 位置标度:将连续型、离散型、日期-时间数据映射到坐标轴上;

  2. 颜色标度:将连续型或离散型变量映射到颜色;

  3. 手动标度:将离散型变量映射到选择的大小、形状、颜色、线条等;

  4. 同一型标度:数据能被R中的绘图函数理解时,且数据空间和图形属性空间相,可以使用同一型标度,此时默认不绘制图例。

我们一个一个看:

6.6.1 连续型位置标度(Continuous Position Scales)

每个图表都有两个位置标度,即x和y。最常见的连续型位置标度就是scale_x_continuous()scale_y_continuous(),它们可以将数据映射到x轴和y轴。

每个连续型标度都可以接受一个trans参数,允许使用各种变换:

# Convert from fuel economy to fuel consumption
ggplot(mpg, aes(displ, hwy)) + 
  geom_point() + 
  scale_y_continuous(trans = "reciprocal")

# Log transform x and y axes
ggplot(diamonds, aes(price, carat)) + 
  geom_bin2d() + 
  scale_x_continuous(trans = "log10") +
  scale_y_continuous(trans = "log10")

每一种变换都是由所谓的变换器(transformer)实现的,下表是比较常用的变换器:

函数名 变换函数 f ( x ) f(x) f(x) 逆变换函数 f − 1 ( y ) f^{-1}(y) f1(y)
asn tanh ⁡ − 1 ( x ) \tanh^{-1}(x) tanh1(x) tanh ⁡ ( y ) \tanh(y) tanh(y)
exp e x e^x ex l o g ( y ) log(y) log(y)
identity x x x
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值