微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 x 轴从一年中的几天更改为几个月

如何解决将 x 轴从一年中的几天更改为几个月

我有一张图表,显示了不同年份的不同年份的趋势:

enter image description here

问题是 x 轴由向量 days<-seq(1:366) 表示,但我需要在 x 轴上比较月份。数据框太大但结构是:

 x    y      group
 1 215.4335  2012
 2 214.1977  2012
 3 212.9618  2012
 4 211.7260  2012
 5 210.4901  2012
 6 209.2543  2012

我的代码是:

ggplot(data_ggp,aes(x,y,col = group)) +            
  geom_line()+
  labs(x = " ",y = " ") +
  scale_color_discrete(name = "Trends")+
  theme_bw() +
  theme(panel.grid.major = element_blank(),panel.grid.minor = element_blank(),axis.line = element_line(colour = "black"),axis.text.x = element_text(size = 8.5))

如何用月份而不是一年中的天来表示我的 x 轴?感谢您的帮助!

解决方法

要获得月份名称,您需要在某处使用 Date。两个选项:将您的数据更改为正确的日期,或者在 breaks=labels= 参数函数中伪造它。我将演示后者。

set.seed(42)
fakedat <- data.frame(x=1:365,y=cumsum(runif(365,10)))
head(fakedat)
#   x        y
# 1 1  9.14806
# 2 2 18.51881
# 3 3 21.38021
# 4 4 29.68469
# 5 5 36.10214
# 6 6 41.29310

library(ggplot2)
ggplot(fakedat,aes(x,y)) +
  geom_line()

ggplot,x-axis as integers

breakfunc <- function(x) {
  origin <- as.Date("2021-01-01")
  days <- origin + x
  origin <- as.POSIXlt(origin)
  dayseq <- as.POSIXlt(seq(days[1],days[2],by = "day"))
  with(dayseq,yday[mday == 1] + 365*(year[mday == 1] - origin$year ))
}

labelfunc <- function(x) {
  origin <- as.Date("2021-01-01")
  format(origin + x,format = "%b")
}

ggplot(fakedat,y)) +
  geom_line() +
  scale_x_continuous(breaks=breakfunc,labels=labelfunc)

ggplot with month names

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。