ggplot - 以Mon-yyyy格式获取日期标签

时间:2018-01-03 07:44:48

标签: r ggplot2

使用如下数据框

data = data.frame(
  name=rep(c('Toyota', "Honda", "Nissan") ,each=4)
  ,date=c(rep(seq(as.Date("2016/1/1"), by = "month", length.out = 4),2),rep(seq(as.Date("2017/1/1"), by = "month", length.out = 4),1)),
  sales=sample(10:20, 12, replace=T)
  )

我想绘制销售线图,如下所示;

library(ggplot2)
ggplot(data, aes(x=date, y=sales)) + geom_line(aes(color=name))

这为x轴标签提供了2016-01 ... 2017-01等等。

Plot

我需要将x轴标签设为Jan-2016Feb-2016等等。

1 个答案:

答案 0 :(得分:2)

@ Z.Lin的评论建议使用+ scale_x_date(date_breaks = "1 month", date_labels = "%b-%Y")完美地回答您的要求。在您感兴趣的日期中,您似乎有一个大的非开槽间隙,至少在您的样本数据中,这使得轴标签过于拥挤,因为它们当前形式的个别月份。 @ Z.Lin解决方案的一个小变化是将断点更改为每两个月并使用日期格式的换行符代替短划线分隔符有助于提高可读性:

ggplot(data, aes(x=date, y=sales)) + 
  geom_line(aes(color=name))+
  scale_x_date(date_breaks = "2 month", date_labels = "%b\n%Y")+
  theme(axis.text.x = element_text(size = 8))

enter image description here