R 中的温度曲线

Temperature curve in R

我想在一个图中创建两条温度曲线。 我的数据框如下所示:

temp <- read.table(text = "     Time        Temp1       Temp2
                           1  00:00     18.62800    18.54458
                           2   00:10     18.60025    18.48283
                           3   00:20     18.57250    18.36767
                           4   00:30     18.54667    18.36950
                           5   00:40     18.51483    18.36550
                           6   00:50     18.48325    18.34783
                           7   01:00     18.45733    18.22625
                           8   01:10     18.43767    18.19067
                           9   01:20     18.41583    18.22042
                           10  01:30     18.39608    18.21225
                           11  01:40     18.37625    18.18658
                           12  01:50     18.35633    18.05942
                           13  02:00     18.33258    18.04142", header = T)

如何通过仅在 x 轴上显示每小时(24 小时)来获得干净的曲线(像折线图一样,线条上没有边缘)? 我正在考虑 ggplot2 的一些东西,但我仍在学习 R 基础知识。

我们可以为此使用 tidyverse。首先,我们 "clean" 通过仅获取 00 分钟的时间值来获取所有不必要行的数据,然后我们使用 ggplot 可视化温度。

library(tidyverse)

cleanTemp <- temp %>% filter(grepl(pattern = ":00", Time))

ggplot(cleanTemp, aes(x = Time, y = Temp1, group = 1)) + 
  geom_line()

Temp2 可以用

添加到绘图中
geom_line(aes(y = Temp2), color = "red")

您还可以使用 lubridate 对时间列进行子集化:

temp$Time <- hm(temp$Time)
cleanTemp <- temp[minute(temp$Time) == 0,]

如果您想绘制所有值但只有完整的小时数作为 x 轴标签,您可以使用 ggplot 包绘制数据并使用 scale_x_discrete() 选项指定 breaks.

library(ggplot2)

is_full_time <- grepl(':00', temp$Time)
ggplot(temp, aes(x = Time, y = Temp1, group = 1)) + geom_line() + scale_x_discrete(breaks = temp$Time[is_full_time])

http://ggplot2.tidyverse.org/reference/scale_discrete.html