R 带有ggplot2的时间序列:使用不同列中的天和小时

R 带有ggplot2的时间序列:使用不同列中的天和小时,r,plot,ggplot2,R,Plot,Ggplot2,我正在尝试使用ggplot绘制一个时间序列,将日期和时间存储在不同的数据帧列中。如何让ggplot同时考虑绘图中的日期和时间 我的数据是这样的 Date Hour_min Tair Tflower Tbud Day1 8:35 24,73 29,79 31,41 Day1 8:36 24,29 29,99 31,82 ... .. .. ... ... Day2 00:00 23,62 30,37 32,59 可以

我正在尝试使用ggplot绘制一个时间序列,将日期和时间存储在不同的数据帧列中。如何让ggplot同时考虑绘图中的日期和时间

我的数据是这样的

Date    Hour_min    Tair    Tflower Tbud
Day1    8:35    24,73   29,79   31,41
Day1    8:36    24,29   29,99   31,82
... ..  ..  ... ...
Day2    00:00   23,62   30,37   32,59
可以使用以下内容加载数据集的小样本:

#Tagua <- read.table(file = "TIMESERIE_OTO32.txt", header = TRUE,dec = ",")
Tagua <- structure(
  list(
    Date = structure(c(1L, 1L, 2L, 2L), .Label = c("Day1", "Day2"), class = "factor"),
    Hour_min = structure(c(1L, 2L, 1L, 2L), .Label = c("8:35", "8:36"), class = "factor"),
    Tair = c(24.73, 24.29, 23.62, 24.29),
    Tflower = c(29.79, 29.99, 30.37, 29.99), 
    Tbud = c(31.41, 31.82, 32.59, 31.82)
  ),
  .Names = c("Date", "Hour_min", "Tair", "Tflower", "Tbud"),
  class = "data.frame",
  row.names = c(NA, -4L))
问题是R的绘图时间当然是从00:00到23,而不考虑天数

我怎样才能解决这个问题


如果可能的话,我想将x轴刻度设置为与小时相对应,例如2:00、3:00等。

这可能不是最短的解决方案,但您可以一步一步地运行它,看看它是如何工作的

联吡啶酯 图书馆弹琴 图书馆三年 图书馆GGPLOT2 塔瓜% 转换第1天->第0天 第2天->第1天 mutateDay=as.numericgsubDay,日期-1%>% 创建一个期间: 变化时间周期=周期天数=天,小时=小时,分钟=分钟%>% 如果您知道,请使用实验的开始创建日期: 突变日期=as.POSIXct2017-01-01+时间段%>% 选项2:将时间段转换为小时: mutateHours=as.numerictime\u period/3600%>% 选择日期、小时、Tair、Tflower、Tbud 备选案文1:实际日期: ggplotaesx=日期,数据=Tagua_clean+ geom_Lineasy=Tair,颜色=var1+ geom_Lineasy=Tbud,颜色=var2+ geom_Lineasy=Tflower,color=var3 选项2:小时数: ggplotaesx=小时,数据=塔瓜_清洁+ geom_Lineasy=Tair,颜色=var1+ geom_Lineasy=Tbud,颜色=var2+ geom_Lineasy=Tflower,color=var3 更新:每天将小时数重新启动为0。这里我们使用日期,但我们自定义日期的显示方式

scale_x_datetime具有参数date_标签,可以将其设置为%H以显示一天中的小时,也可以将其设置为天%d\n小时:%H以显示天和小时的组合。有关更多格式选项,请参阅?strtime。另一个可以使用的参数是date_breaks,如果您希望每小时添加一个标签,则可以指定1小时

ggplot(aes(x = Date), data = Tagua_clean) + 
  geom_line(aes(y = Tair, colour = "var1")) +
  geom_line(aes(y = Tbud, colour = "var2"))+
  geom_line(aes(y = Tflower, colour = "var3")) +
  scale_x_datetime(date_labels = "Day %d \n Hour: %H")

您必须根据日期和小时列创建日期时间变量。为Date列指定实际日期,而不是day1',然后看看如何从两列包中创建datetime变量Blubridate可能有一些功能,如果您不关心实际日期,也可以使用lubridate包中的句点,而不是实际日期。周期日=0,小时=8,分钟=35。此外,提供一个简单的演示数据集将使您更容易获得帮助,例如使用dputheadtaguatank you zeehio。它看起来很棒,而且效果非常好。我唯一想改变的是第二个选项,一个有小时的选项。我想重复一下第一个12-18-00-6。。。因为现在它增加到30多。谢谢,-那么你最好的选择就是使用datetimes。参见我刚才添加到答案中的选项3。
ggplot(aes(x = Date), data = Tagua_clean) + 
  geom_line(aes(y = Tair, colour = "var1")) +
  geom_line(aes(y = Tbud, colour = "var2"))+
  geom_line(aes(y = Tflower, colour = "var3")) +
  scale_x_datetime(date_labels = "Day %d \n Hour: %H")