【问题标题】:R Plot Histogram On Dataframe with dates-time objectR在带有日期时间对象的数据帧上绘制直方图
【发布时间】:2017-04-12 10:22:44
【问题描述】:

我有以下 R 数据框,其中包含 Date 列和 Value 列,Date 列是 R chron 对象(格式

我想做的是通过绘制直方图或折线图来可视化时间序列数据,并且我还想在 x 轴上指定日期时间范围(例如从 10/2/16 20:00:00至 2016 年 10 月 3 日 20:00:00)。但是,在搜索了在线指南后,我仍然没有任何线索。

谁能给我一个使用 ggplot 或其他包的示例代码?感谢您的帮助。

Date                 Value
(10/03/16 09:31:00)  180,912.00
(10/03/16 09:32:00)  112,359.00
(10/03/16 09:35:00)   93,539.00
(10/03/16 09:35:00)  156,283.00
(10/03/16 09:36:00)  226,704.00
(10/03/16 09:37:00)  780,094.00
(10/03/16 09:45:00)  184,632.00
(10/03/16 09:48:00)  144,984.00
(10/03/16 09:49:00)  311,035.00
(10/03/16 09:51:00)  210,653.00
(10/03/16 09:51:00)   72,626.00
(10/03/16 09:52:00)  241,173.00
(10/03/16 09:54:00)  233,416.00
(10/03/16 09:55:00)  146,550.00
(10/03/16 10:24:00)  331,191.00
(10/03/16 10:28:00)  107,015.00
(10/03/16 10:36:00)  196,162.00
(10/03/16 10:41:00)  466,879.00
(10/03/16 10:44:00)  294,589.00
(10/03/16 10:48:00)  164,339.00
(10/03/16 10:52:00)  137,082.00
(10/03/16 10:58:00)  180,667.00
(10/03/16 11:04:00)  259,475.00

更新于 2016 年 11 月 28 日下午 6:35 借助 yeedle 的代码,我可以绘制以下内容:

ggplot(temp_merge_sub1, aes(x=Date, y=Value, group=1)) + geom_bar(stat = "identity")

GGPlot2

我真正想要改进的是:

  • 如何正确设置 y 轴的断点?
  • 如何在 x 轴上设置中断并在每个 2 小时间隔内显示累加值的直方图?

感谢您的帮助!我很感激!

【问题讨论】:

  • 你能发布你的df的dput输出吗?
  • 同一日期时间有多个值。你希望它如何显示在情节上?
  • 感谢@yeedle 帮助我解决我的问题。上面的数据只是我数据的一小部分,我想用直方图显示的是某种固定时间范围内的值相加(例如 2 小时休息,2016 年 10 月 3 日 6:00 - 8: 00, 8:00-10:00, ... 等),然后是每个时间间隔内的累加值的直方图。我不确定 ggplot2 是否可以做到这一点?
  • 为此,您可以在数据框中添加一个具有舍入时间范围的新列(您可以使用lubridate 中的round_date 函数),然后使用新列进行绘图。使用scale_x_datetime 设置中断和限制。

标签: r ggplot2


【解决方案1】:

我使用 lubridateymd_hms 函数将 Date 转换为 POSIXct 对象。

library(ggplot2)
ggplot(df, aes(x=Date, y=Value)) + 
  geom_bar(stat="identity") + 
  scale_x_datetime(limits =c(mdy_hms("10/2/16 20:00:00"),mdy_hms("10/3/16 20:00:00")))

您可以在没有scale_x_datetime 限制的情况下获得更清晰的图片:

只需将geom_bar 替换为geom_line 即可获得折线图:

ggplot(df, aes(x=Date, y=Value)) + 
  geom_line()

【讨论】:

  • 或者改用geom_col
  • 这是新的,是的。相当于geom_bar(stat = "identity")
  • 谢谢,我不知道。
猜你喜欢
  • 1970-01-01
  • 2020-04-27
  • 2015-07-31
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多