重新排列 x 轴以显示多年数据的儒略日期(例如 0-365)一次
Posted
技术标签:
【中文标题】重新排列 x 轴以显示多年数据的儒略日期(例如 0-365)一次【英文标题】:Re-arranging the x-axis to show Julian Dates (e.g., 0-365) once for multi-year data 【发布时间】:2022-01-21 05:56:51 【问题描述】:我已包含重现当前结果所需的数据和代码。我有一张针对不同个人的图表 (4),它们是在不同年份收集的数据。我目前的 x 轴是 Julian Dates,所以它显示了每年的日期。
我想让它只显示一次从 0-365 的 x 轴,而不是重复多年。有没有什么好的方法可以做到这一点?我想基本上我要问的是是否可以将这四条线压缩成一个具有相同 x 轴和 y 轴的图形?
library(ggforce)
library(dplyr)
library(lubridate)
df <- read.csv("https://raw.githubusercontent.com/jhnhng/Data/main/NSD_Figure.csv")
df$t2 <- as.POSIXct(df$t2)
ggplot(ind_steps, aes(x = t2, y = NSD)) +
labs(x = "Julian Date", y = "Net Squared Displacement") +
geom_line() + theme_bw() +
theme(axis.text.x = element_text(angle = 90)) +
scale_x_datetime(date_breaks = '10 days', date_labels = '%j') +
facet_wrap(~class, ncol = 1 , nrow = 4)
【问题讨论】:
记住minimal reproducible example 的minimal 部分。您有 36 行代码用于准备数据,而 6 行代码用于绘图,这正是问题所在——只需包含ind_steps
的 workable sample。您还将加载包并添加问题本身不需要的代码(sf
似乎没有被使用,如果分面与问题相关,facet_wrap
而不是facet_wrap_paginate
就足够了) .缩小问题的范围有助于您调试并帮助我们了解问题的实际情况
【参考方案1】:
df$t3 <- as.numeric(format(df$t2, "%j"))
然后
ggplot(df, aes(x = t3, y = NSD)) +
...
scale_x_continuous(breaks = scales::breaks_width(10)) +
...
【讨论】:
以上是关于重新排列 x 轴以显示多年数据的儒略日期(例如 0-365)一次的主要内容,如果未能解决你的问题,请参考以下文章
Plotly 轴以相反的顺序显示日期(最近到最早)-Python