ggplot2中具有时间序列的月和日的时间序列在年份中具有方面

MYaseen208

我想有两个month,并day在使用的时间序列图的x轴facet的年ggplot2我的MWE如下:

set.seed(12345)
Date <- seq(as.Date("2010/1/1"), as.Date("2014/1/1"), "week")
Y <- rnorm(n=length(Date), mean=100, sd=1)
df <- data.frame(Date, Y)

df$Year <- format(df$Date, "%Y")
df$Month <- format(df$Date, "%b")
df$Day <- format(df$Date, "%d")

df$MonthDay <- format(df$Date, "%d-%b")


p <- ggplot(data=df, mapping=aes(x=MonthDay, y=Y, shape=Year, color=Year)) + geom_point() +geom_line(aes(group = 1))
p <- p + facet_grid(facets = Year ~ ., margins = FALSE) + theme_bw()
print(p)

在此处输入图片说明

我尝试使用以下命令控制x轴标签

p + scale_y_continuous() + scale_x_date(labels = date_format("%d-%b"))

但是它会引发以下错误消息。

Error: Invalid input: date_trans works with objects of class Date only
布莱恩·迪格斯

你很亲密 您希望x轴可以衡量您所在年份的位置,但是您可以将x轴用作字符向量,因此要标记每个点。如果改用连续变量表示这一点,则可能会有更好的结果。一个连续变量将是一年中的一天。

df$DayOfYear <- as.numeric(format(df$Date, "%j"))
ggplot(data = df,
       mapping = aes(x = DayOfYear, y = Y, shape = Year, colour = Year)) +
  geom_point() +
  geom_line() +
  facet_grid(facets = Year ~ .) +
  theme_bw()

在此处输入图片说明

可以使用适当的标签功能将轴格式化为更类似日期的格式,但是仍然无法以非常了解日期的方式找到中断。(最重要的是,还有一个NA问题。)

ggplot(data = df,
       mapping = aes(x = DayOfYear, y = Y, shape = Year, colour = Year)) +
  geom_point() +
  geom_line() +
  facet_grid(facets = Year ~ .) +
  scale_x_continuous(labels = function(x) format(as.Date(as.character(x), "%j"), "%d-%b")) +
  theme_bw()

在此处输入图片说明

为了获得良好的日期间隔,可以使用其他变量。它与原始数据在同一天,但只有一年。在这种情况下,2000年是was年。与此相关的问题主要与leap日有关,但是如果您对此不关心(非-年的3月1日与a年的2月29日一致,等等),则可以使用:

df$CommonDate <- as.Date(paste0("2000-",format(df$Date, "%j")), "%Y-%j")
ggplot(data = df,
       mapping = aes(x = CommonDate, y = Y, shape = Year, colour = Year)) +
  geom_point() +
  geom_line() +
  facet_grid(facets = Year ~ .) +
  scale_x_date(labels = function(x) format(x, "%d-%b")) +
  theme_bw()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R中具有时间序列的2SLS(带有dynlm包?)

在具有时间限制的事件数据中查找子序列的出现

具有时间间隔的无功ObjC发射序列

删除具有时间序列条件的重复项

ggplot2绘制具有多个lm的时间序列

绘制具有已知误差的时间序列(ggplot2)

ggplot with for 时间序列...没有时间

R中具有时间序列模型(ARIMA-ARCH)的分位数回归

如何在R中获得具有时间序列中变量的t,t-1,t-2,t-3等平均值的表格?

C3.js-具有时间的时间序列无法解析

R使用facet_wrap绘制具有时间间隔的时间序列

熊猫-添加具有重复年份的时间序列数据中的缺失年份

具有时间序列数据意义的自定义楼层/天花板

pandas 重新采样以获得具有时间序列数据的月平均值

长面板中具有时间和id条件的虚拟变量

DB2 中昨天具有时间戳值的行

具有时间和parseInt的UI滑块

根据WooCommerce结帐中的打开,关闭和休息时间添加具有时间间隔的选择字段

如何在ggplot2(R)中的水平轴上制作带有时间的直方图

如何在chartjs中绘制多个时间序列,其中每个时间序列具有不同的时间

将具有时代时间戳记的数据帧转换为R中以毫秒为单位的时间序列

提取在同一行中同时具有时间戳和位置的数据框

ggplot:绘制具有重复时间值的时间序列

具有时间间隔的Javascript时间验证器?

如何在反应 js 中设置具有时间延迟的循环内的状态

如何从具有时间戳列的数据库表中检索

如何从具有时间戳范围的熊猫对象中获取不同的组

R中具有时间条件的子集数据集

如何在MySQL中获取具有时间限制的数据