ggplot2读书笔记9:第六章 标度(二)

今天来学习第六章标度部分的最后一节~

6.6 标度工具箱(Scales Toolbox)

除了调整标度的默认选项之外,你也可以重新创建新的标度,主要分为以下四类:

  1. 连续型位置标度:用于将整数、数值、日期/时间数据映射到x轴或者y轴的位置上;
  2. 颜色标度:用于将连续型或离散型变量映射到颜色;
  3. 手动离散型标度:将离散型变量映射到你选择的大小、形状、颜色、线条等;
  4. 同一型标度:当你的数据能被R中的绘图函数理解时,数据空间和图形属性空间相同时,可以使用同一型标度,此时默认不绘制图例的

下面我们四种图例详细说明:

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

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

每个连续型标度都可以接受一个trans参数,允许指定若干种显性或非线性变换。每一种变换都是由所谓的变换器(“transformer”)实现的。下表是比较常用的变换器:

image

(截图选自《ggplot2(第一版)》)

注意:在最近更新的第二版ggplot2中,表中的倒数命令(recip)已经改为(reciprocal),其他未更新。

如下例,将y轴转换为倒数(reciprocal):

ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  scale_y_continuous(trans = "reciprocal")

image

将x轴/y轴数值转化成log10:

ggplot(diamonds, aes(price, carat)) +
  geom_bin2d() +
  scale_x_continuous(trans = "log10") +
  scale_y_continuous(trans = "log10")

image

其中有一些参数有简写形式,如,scale_x_log10()scale_x_sqrt()scale_x_reverse()

另外,变换器同样可以用于coord_trans()中,此时变换将在统计量计算完成后进行,详见第七章

日期和时间值基本上属于连续型,但在标注坐标轴时处理方式稍有不同。我们使用DatePOSIXct类的时间值。如果是其他格式的,则应当使用as.Dateas.POSIXct进行转换。

scale_x_date()scale_x_datetime()的用法和scale_x_continous用法相似。

date_breaks()date_labels()的用法稍有不同:

  • date_breaks()date_minor_breaks():可以设置日期间隔(年、月、星期、日、小时、每分、每秒)作为断点,;例如date_breaks = "2 weeks"
  • date_labels():通过strptime()format()指定特殊格式,如下表

image

例如,如果你想以14/10/1979的形式显示日期,可以使用字符串%d/%m/%y

再举个栗子,经济数据集(时间序列)中,横轴日期的不同表示方式:

base <- ggplot(economics, aes(date, psavert)) +
  geom_line(na.rm = TRUE) +
  labs(x = NULL, y = NULL)
base # 默认间隔和时间表示方式

image

base + scale_x_date(date_labels = "%y", date_breaks = "5 years")

image

取其中一小段时间("2004-01-01" - "2005-01-01"),按1个月为间隔:

base + scale_x_date(
  limits = as.Date(c("2004-01-01", "2005-01-01")),
  date_labels = "%b %y",
  date_minor_breaks = "1 month"
)

image

取其中一小段时间("2004-01-01" - "2004-06-01"),两个星期为间隔:

base + scale_x_date(
limits = as.Date(c("2004-01-01", "2004-06-01")
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值