在合并,设置我的数据并将其DATE列转换为日期时间后,使用以下命令:atms$DATE<-dmy_hms(as.POSIXct(atms$DATE,tz=Sys.timezone()))
,看起来像这样:
ATM DATE DENOM_1 REMAIN_1 DENOM_2 REMAIN_2 Total
176 8 2020-09-13 19:00:00 50 1334 100 1494 2828
177 8 2020-09-13 19:01:00 50 1334 100 1494 2828
178 8 2020-09-13 19:02:00 50 1334 100 1494 2828
179 8 2020-09-13 19:03:00 50 1334 100 1494 2828
180 8 2020-09-13 19:04:00 50 1334 100 1494 2828
181 8 2020-09-13 19:05:00 50 1334 100 1494 2828
182 8 2020-09-13 19:06:00 50 1331 100 1493 2824
183 8 2020-09-13 19:07:00 50 1317 100 1487 2804
184 8 2020-09-13 19:08:00 50 1315 100 1471 2786
185 8 2020-09-13 19:09:00 50 1305 100 1468 2773
186 8 2020-09-13 19:10:00 50 1302 100 1459 2761
187 8 2020-09-13 19:11:00 50 1278 100 1428 2706
188 8 2020-09-13 19:12:00 50 1275 100 1421 2696
189 8 2020-09-13 19:13:00 50 1238 100 1392 2630
190 8 2020-09-13 19:14:00 50 1204 100 1322 2526
191 8 2020-09-13 19:15:00 50 1153 100 1236 2389
192 8 2020-09-13 19:16:00 50 1109 100 1140 2249
193 8 2020-09-13 19:17:00 50 1045 100 1047 2092
194 8 2020-09-13 19:18:00 50 974 100 974 1948
195 8 2020-09-13 19:19:00 50 932 100 868 1800
196 8 2020-09-13 19:20:00 50 871 100 781 1652
197 8 2020-09-13 19:21:00 50 841 100 720 1561
198 8 2020-09-13 19:22:00 50 829 100 705 1534
199 8 2020-09-13 19:22:40 50 825 100 696 1521
200 8 2020-09-13 19:23:00 50 825 100 696 1521
7576 8 2020-09-20 19:00:00 50 1097 100 698 1795
7577 8 2020-09-20 19:01:00 50 1097 100 698 1795
7578 8 2020-09-20 19:02:00 50 1097 100 698 1795
7579 8 2020-09-20 19:03:00 50 1097 100 698 1795
7580 8 2020-09-20 19:04:00 50 1097 100 698 1795
7581 8 2020-09-20 19:05:00 50 1097 100 698 1795
7582 8 2020-09-20 19:06:00 50 1085 100 691 1776
7583 8 2020-09-20 19:07:00 50 1085 100 689 1774
7584 8 2020-09-20 19:08:00 50 1068 100 680 1748
7585 8 2020-09-20 19:09:00 50 1064 100 669 1733
7586 8 2020-09-20 19:10:00 50 1039 100 647 1686
7587 8 2020-09-20 19:11:00 50 1014 100 622 1636
7588 8 2020-09-20 19:12:00 50 1007 100 600 1607
7589 8 2020-09-20 19:13:00 50 991 100 578 1569
7590 8 2020-09-20 19:14:00 50 975 100 552 1527
7591 8 2020-09-20 19:15:00 50 880 100 473 1353
7592 8 2020-09-20 19:16:00 50 816 100 403 1219
7593 8 2020-09-20 19:17:00 50 757 100 341 1098
7594 8 2020-09-20 19:18:00 50 707 100 290 997
7595 8 2020-09-20 19:19:00 50 680 100 256 936
7596 8 2020-09-20 19:20:00 50 644 100 150 794
7597 8 2020-09-20 19:21:00 50 630 100 139 769
7598 8 2020-09-20 19:21:51 50 623 100 110 733
7599 8 2020-09-20 19:22:00 50 623 100 110 733
7600 8 2020-09-20 19:23:00 50 623 100 110 733
我想在同一张图上绘制第13天的总数,而在另一行绘制20天的总数。最初,数据被分成两个.dat文件,每个日期一个。我尝试仅绘制第13天的图形,方法是使用ggplot()
将其添加到空的geom_line()
中,然后添加一个独立的{{1 }}在第20天到同一geomline()
,每行在其“ aes”内都有自己的“ X”轴,如下所示:ggplot
,但是我只看到一行代表合计,另一行代表合计隐藏然后我对这两条线都尝试了“全局” X轴,方法是分别使用geom_line(data=myData,aes(x=correspondingDate,y=Total))
和ggplot(data=myData,aes(x=date13))
代表每天的每一行,但是我只看到两条垂直线,一条在左边,一条在右边的另一个,X轴显示奇怪的日期。
我应该每天将数据分开吗?如果是,如何“绘制”我的X轴以包括这两天?如果不是,当列为datetime时,如何告诉ggplot仅根据日期分隔数据?我知道如何在基本级别上使用melt函数,但我不知道该如何仅花费一天的时间来创建“分区”。
答案 0 :(得分:2)
我建议创建两个新变量,一个用于跟踪行所属的日期,另一个用于显示一天中的时间,但使用一个公共日期。例如:
library(tidyverse)
df %>%
mutate(DATE_DAY = floor_date(DATE, "day"), # day of the row
DATE_TIME = min(DATE_DAY) + (DATE - DATE_DAY)) %>% # datetime shifted to 1st day (arbitrarily)
ggplot(aes(DATE_TIME, Total, color = DATE_DAY, group = DATE_DAY)) +
geom_line()