r - R - ggplot 根据日期在同一图表上绘制两条线
问题描述
在组合、子集我的数据并使用 this: 将 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()
,然后将第 20 天的独立文件添加geomline()
到相同的文件ggplot
中,每行都有自己的“ X”轴在其“aes”内如下:geom_line(data=myData,aes(x=correspondingDate,y=Total))
,但我只看到一条线代表Total,另一条是隐藏的;然后我尝试了两条线的“全局” X 轴,使用ggplot(data=myData,aes(x=date13))
和 然后geom_line(data=myData,y=totalCorrespondingDate))
代表每一天的每条线,但我只看到两条垂直线,一条在左边,另一条在右边,X 轴显示很奇怪日期。
我应该将数据按天分开吗?如果是,我如何“绘制”我的 X 轴以包括这两天?如果不是,当列是日期时间时,如何告诉 ggplot 仅根据日期分隔数据?我知道如何在基本层面上使用融化功能,但我不知道如何告诉它只需要一天中的一天来制作“分区”。
解决方案
我建议创建两个新变量,一个用于跟踪该行所属的日期,另一个用于显示一天中的时间,但使用一个 common date。例如:
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()
推荐阅读
- python - 底图导入但“TypeError:‘模块’对象不可调用”
- python-3.x - 如何使用 lstm 设置每 120 分钟预测值的时间?
- regex - 您将如何为输入验证编写正则表达式以使某些符号不能重复?
- python-3.x - 使用 Airflow 向 EMR 提交 pyspark 作业时缺少 Python 依赖项
- python - Django rest框架序列化教程一头雾水
- excel - VBA Excel:我对使用哪个运算符感到困惑。“或”不能给出正确的结果,“和”也不能给出正确的结果
- javascript - 将子组件数据合并到父组件内的一个对象中
- python - rospy.spin() 的替代方法是什么?
- javascript - 如何使用 WebdriverIO v5 执行 JavaScript 点击?
- python-3.x - DRF ModelSerializer 使所有字段只读而不明确指定它们