坐标轴 日期格式_6.17 坐标轴:在坐标轴上使用日期格式的数据

参考自《R Graphics Cookbook》

将日期格式的数据映射给坐标轴,尤其是需要设计时间序列的变化时。

在ggplot2中可以处理两类时间格式的数据:1.Date(精确到天的) 2.POSIXt(可以精确到秒)。

library(ggplot2)

library(gcookbook)

#查看本节需要的数据

economics

#查看数据中的data变量的格式:时间格式/Date

str(economics)

一、基本制图,横坐标为时间格式的数据

ggplot(economics, aes(x = date, y = psavert)) +

geom_line()

c6b1883deb85754c2613934fd68e9038.png

二、调整日期坐标轴的间隔

library(dplyr)

#选择部分时间段内的数据

econ_mod <- economics %>%

filter(date >= as.Date("1992-05-01") & date < as.Date("1993-06-01"))

#底图,自动生成的间隔

econ_plot <- ggplot(econ_mod, aes(x = date, y = psavert)) +

geom_line()

#展示底图

econ_plot

1dae2c73ebc6f91acc2c243c1c4af1d7.png

#提前将想要的间隔格式保存,使用seq语句;显示间隔为每2月

datebreaks <- seq(as.Date("1992-06-01"), as.Date("1993-06-01"),

by = "2 month")

#在地图上设置间隔和坐标轴刻度标签为斜体

econ_plot +

scale_x_date(breaks = datebreaks) + #注意设置时间格式的标度是使用scale_x_data语法

theme(axis.text.x = element_text(angle = 30, hjust = 1))

b714e1b5bf814c45e958013ca1269225.png

#但是格式又和默认的不同了,显示了天,但实际上映射数据中根本没有天这个级别

三、继续调整格式

#要想调整为只有年和月的格式,需要使用scales包中的data_format函数,比如调整格式为"%Y %b"(年和月), 调整其他格式需要查找相应的标签格式。

library(scales)

econ_plot +

scale_x_date(breaks = datebreaks,

labels = date_format("%Y %b")) +

theme(axis.text.x = element_text(angle = 30, hjust = 1))

8278458c44b2b06c64c5a6d6357f1c32.png

四、补充:计算机的区域设置导致中英文效果的问题

因为一些参数默认依赖于计算机的区域设置,比如上部分的参数"%b",在设置时间为中国的计算机上,就会显示为"12月",而不是"Dec", 此时要转换格式需使用Sys.seltocale()语法

#比如设置为美国的区域设置

Sys.setlocale("LC_TIME", "US")

#重新做上图,格式就发生了响应的转换

五、总结

本节针对将时间格式的数据映射给坐标轴、并实现按需展示的要求。达到满意效果有点麻烦,毕竟ggplot2需要每一步都要设置,哪里照顾不到就会出问题达不到要求!ggplot2作图虽好,可不要贪多啊!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值