【发布时间】:2023-03-17 19:25:01
【问题描述】:
我想用 x 轴时间 (hh:mm) 绘制折线图(这是一个特定的时间间隔), 和 y 轴平均价格。
我希望图表显示多条线(每天一条线)。
目前我的数据框是这样的(我还有一些其他变量,但我没有在我的图表中使用它们。相关的如下):
AV.PRICE DATE TIME
180 2014-01-20 13H 0M 0S
179 2014-01-20 13H 1M 0S
175 2014-01-20 13H 2M 0S
179 2014-01-20 13H 3M 0S
...以此类推,日期继续,但时间只取每天 13:00 到 15:00 之间的值
DATE 类是日期,AV.PRICE 是 num,TIME 是周期(使用 lubridate)
如果我的问题不清楚,这就是我正在寻找的,在仅时间轴上绘制与日期无关的图表,除非我在 r 中使用 ggplot2:plotting data for different days on a single HH:MM:SS axis
已编辑:
当我尝试用 ggplot 绘制原始 df 时,它无法识别时间变量。 ggplot(df, aes(x=TIME, y=AV.PRICE, group = DATE)) + geom_line() 给error: cannot compare Period to Duration
输入
structure(list(AV.PRICE = c(178.841368677043, 178.837478586724,
178.811640304183, 178.8395125, 178.858236768802, 178.860812464589
), DATE = structure(c(16098, 16098, 16098, 16098, 16098, 16098
), class = "Date"), TIME = structure(c(0, 0, 0, 0, 0, 0), year = c(0,
0, 0, 0, 0, 0), month = c(0, 0, 0, 0, 0, 0), day = c(0, 0, 0,
0, 0, 0), hour = c(13, 13, 13, 13, 13, 13), minute = c(0, 1,
2, 3, 4, 5), class = structure("Period", package = "lubridate"))), .Names = c("AV.PRICE",
"DATE", "TIME"), row.names = c(NA, 6L), class = "data.frame")
【问题讨论】:
-
你的数据好像已经是长格式了,你想怎么处理
melt -
当我尝试用 ggplot 绘制原始 df 时,它无法识别时间变量。 ggplot(df, aes(x=TIME, y=AV.PRICE, group = DATE)) + geom_line() 给出错误:无法将 Period 与 Duration 进行比较:
-
也许您可以在您的问题中发布
dput(df),看看是否有人可以帮助您。 -
一个完全可重现的例子会更好。
-
如果我可能会问,我的示例中缺少什么?我有一个数据样本,我指定了变量的类,我提供了我尝试过的代码和错误消息。您还需要其他信息吗?