R:ggplot,x轴上有日期时间

时间:2014-09-21 11:53:29

标签: r datetime ggplot2

我正在尝试使用ggplot在R中绘制5天的历史股票数据。 x轴上的日期时间和y轴上的股票值('close')。我只想显示股票市场开盘当天的会议记录,我的数据集限制为每天7小时的价值x 5天。

但是当我用ggplot绘制它时,比例会改变,所以我每天都得到所有的时间。

ggplot(data = df_stock, aes(x = datetime, y = close)) +
  geom_line()

我尝试使用谷歌搜索并使用R帮助功能。我对R很陌生,所以如果这很容易解决我会道歉。我希望有人可以指导我朝着正确的方向前进。

1 个答案:

答案 0 :(得分:1)

虽然最小的例子有助于解决这个问题,但可以给出一个可能有用的更一般的答案。

ggplot2没有断轴设施,因为它不被视为良好做法。然而,你在这里所做的实际上是变量的变换 - 小时开放而不是一天中的几小时。因此,您必须自己转换变量。您可以使用lubridate包执行此操作。让我们花两天时间想象市场在上午10点到下午5点之间开放。

require(lubridate)
dates <- c("2014-01-01 10:00:00 UTC", "2014-01-01 13:00:00 UTC", "2014-01-01 17:00:00 UTC", "2014-01-02 13:00:00 UTC", "2014-01-02 17:00:00 UTC")
dates <- ymd_hms(dates)

现在,您需要将数据缩放到只有您想要的时间。您可以使用`lubridate&#39;来调用日期的各个部分,并除以当天的小时数,这里它们是24而不是7。

hour(dates) <- hour(dates)-10
scaleddates <- day(dates)-1 + hour(dates)/7 + minute(dates)/60/7 + second(dates)/60/60/7
scaleddates
[1] 0.0000000 0.4285714 1.0000000 1.4285714 2.0000000

现在您可以绘制图形,使用x轴读数&#39;天数&#39;而不是&#39;日期&#39;。 x轴现在是整个工作日的距离。