如何解决将 x 轴从一年中的几天更改为几个月
问题是 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()
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。