【发布时间】:2021-06-25 17:05:08
【问题描述】:
我有一个数据框面板数据
这是一个示例 df
date code_ID name_ID X_Value Y_Value
2021-03-10T17:00:00 13 Alpha 372 621
2021-03-11T17:00:00 13 Alpha 608 4578
2021-03-12T17:00:00 13 Alpha 515 4618
2021-03-13T17:00:00 13 Alpha 320 1522
2021-03-14T17:00:00 13 Alpha 323 1531
2021-03-15T17:00:00 13 Alpha 329 4663
2021-03-16T17:00:00 13 Alpha 212 4281
2021-03-17T17:00:00 13 Alpha 304 419
2021-03-18T17:00:00 13 Alpha 462 761
2021-03-10T17:00:00 17 Beta 115 3664
2021-03-11T17:00:00 17 Beta 151 4362
2021-03-12T17:00:00 17 Beta 141 4733
2021-03-13T17:00:00 17 Beta 137 3068
2021-03-14T17:00:00 17 Beta 106 4378
2021-03-15T17:00:00 17 Beta 67 4403
2021-03-16T17:00:00 17 Beta 166 1549
2021-03-17T17:00:00 17 Beta 126 9
2021-03-18T17:00:00 17 Beta 179 2871
2021-03-10T17:00:00 8 eta-firm 2155 181
2021-03-11T17:00:00 8 eta-firm 2845 4446
2021-03-12T17:00:00 8 eta-firm 3477 4212
2021-03-13T17:00:00 8 eta-firm 2950 914
2021-03-14T17:00:00 8 eta-firm 3023 1155
2021-03-15T17:00:00 8 eta-firm 2822 4920
2021-03-16T17:00:00 8 eta-firm 2184 4562
2021-03-17T17:00:00 8 eta-firm 2026 1021
2021-03-18T17:00:00 8 eta-firm 2531 1227
2021-03-10T17:00:00 6 phi hotel 866 4785
2021-03-11T17:00:00 6 phi hotel 991 873
2021-03-12T17:00:00 6 phi hotel 971 2824
2021-03-13T17:00:00 6 phi hotel 953 1113
2021-03-14T17:00:00 6 phi hotel 604 4851
2021-03-15T17:00:00 6 phi hotel 398 1364
2021-03-16T17:00:00 6 phi hotel 672 2210
2021-03-17T17:00:00 6 phi hotel 986 3668
2021-03-18T17:00:00 6 phi hotel 1058 4518
如何使用 ggplot2 按 code_id/time 绘制 X-Y 的最后 N 个观测值而不删除行?
我实际使用的代码:
ggplot(data=df, aes(x = X_Value, y = Y_Value, color = name_ID)) +
geom_line( arrow = arrow(angle = 30, length = unit(0.09, "inches"), ends = "last", type = "closed"))
【问题讨论】:
-
您需要在绘图之前对数据进行子集化。如何子集已经在这里回答:stackoverflow.com/questions/53994497/…
-
事实是我不想删除行或创建子集 df。有没有办法让它在 ggplot 代码中实现?
-
不。 ggplot 是一个绘图工具。它会绘制您传入的任何内容。如果您不想绘制数据,则不要将其绘制进去。我想您可以创建自己的自定义几何图层来为您进行子集,但这只是隐藏子集,没有消除需要。您不必将子集数据保存在任何地方,只需将其作为
data=参数传入即可。我不确定您为什么要如此努力地避免子集化。有什么你还没有提到的原因吗? -
没有理由。我宁愿只使用一个数据框。但是我尝试使用
by (df, df $ code_ID, FUN = tail, 11),但它不会创建我的数据子集。我做错了什么? -
您似乎选择了一个实际上并未返回可用于绘图的 data.frame 的问题的答案。如果你只是想使用base R,试试
do.call("rbind", (by(df, df$code_ID, FUN = tail, 11)))
标签: r ggplot2 panel-data