我试着用ggplot绘制R中5天的历史股票数据。X轴上的日期时间,y轴上的股票值('close')。我只想显示一天中股市开盘的时间,而我的数据集仅限于每天7小时的数值x 5天。
但是,当我用ggplot绘制它时,刻度会改变,所以我每天都能得到所有的时间。
ggplot(data = df_stock, aes(x = datetime, y = close)) +
geom_line()
我试过在谷歌上搜索并使用R帮助函数。我对R很陌生,所以我很抱歉,如果这很容易解决的话。我希望有人能引导我朝着正确的方向前进。
发布于 2014-09-22 15:52:00
虽然一个最低限度的例子将有助于解决这一问题,但可以给出一个可能有用的更一般性的答案。
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”将日期的各个部分称为“`lubridate”,并将其除以一天中的小时数,在这里它们是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轴来绘制图表,用的是“天”,而不是“日期”。X轴现在是指你每天工作的距离.
https://stackoverflow.com/questions/25958908
复制相似问题