首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R:在x轴上显示日期时间的ggplot

R:在x轴上显示日期时间的ggplot
EN

Stack Overflow用户
提问于 2014-09-21 11:53:28
回答 1查看 2.6K关注 0票数 0

我试着用ggplot绘制R中5天的历史股票数据。X轴上的日期时间,y轴上的股票值('close')。我只想显示一天中股市开盘的时间,而我的数据集仅限于每天7小时的数值x 5天。

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

代码语言:javascript
运行
复制
ggplot(data = df_stock, aes(x = datetime, y = close)) +
  geom_line()

我试过在谷歌上搜索并使用R帮助函数。我对R很陌生,所以我很抱歉,如果这很容易解决的话。我希望有人能引导我朝着正确的方向前进。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-22 15:52:00

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

ggplot2没有用于轴折的工具,因为它被认为不是很好的实践。然而,你在这里所做的实际上是一个变量的转换--开放的时间,而不是一天中的几个小时。所以你必须转换变量本身。您可以使用lubridate包来完成这个任务。让我们花两天时间想象一下,市场在上午10点到下午5点开放。

代码语言:javascript
运行
复制
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。

代码语言:javascript
运行
复制
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轴现在是指你每天工作的距离.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25958908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档