gpt4 book ai didi

r - 如何使用 ggplot2 绘制时间间隔数据

转载 作者:行者123 更新时间:2023-12-04 12:29:07 25 4
gpt4 key购买 nike

我有一个像这样的 data.frame:

library(ggplot2)
library(reshape2)
tasks <- c("Review literature", "Mung data")
dfr <- data.frame(
name = factor(tasks, levels = tasks),
start.date = c("24/08/2010 01:00:01", "24/08/2010 01:00:10", "01/11/2010 01:30:00", "01/11/2010 02:00:00"),
end.date = c("24/08/2010 02:00:00", "24/08/2010 03:00:00", "01/11/2010 02:00:00", "01/11/2010 04:00:00")
)
mdfr <- melt(dfr, measure.vars = c("start.date", "end.date"))

我想使用 ggplot2 绘制此数据,以便不同的日期位于不同的方面,并且仅时间部分显示在 x 轴上?我试过类似的东西:
ggplot(mdfr, aes(as.Date(value, "%H/%M/%S"), name)) + 
geom_line(size = 6) +
xlab("") + ylab("") +
theme_bw() + facet_wrap(~as.Date(value, "%d/%m/%Y"))

Error in layout_base(data, vars, drop = drop) :
At least one layer must contain all variables used for facetting

最佳答案

将两个新列添加到熔化的数据框中 value2date . value2POSIXct你的时代和类(class)date列仅包含原始 value 的日期部分并转换为因子以用于分面。

mdfr$value2<-as.POSIXct(strptime(mdfr$value, "%d/%m/%Y %H:%M:%S"))
mdfr$date<-as.factor(as.Date(strptime(mdfr$value, "%d/%m/%Y %H:%M:%S")))

现在您可以使用新的 value2 作为 x 和日期进行分面。我用过 facet_grid()scales="free_x"space="free_x"在两个方面获得均匀间隔的时间间隔。
ggplot(mdfr, aes(value2, name)) + 
geom_line(size = 6) +
xlab("") + ylab("") +
theme_bw() + facet_grid(~date,scales="free_x",space="free_x")

enter image description here

关于r - 如何使用 ggplot2 绘制时间间隔数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18272769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com