我有一个ggplot折线图,它显示了游戏中两个累积得分的向量(每个团队一个)。现在,我对当前的状态感到满意,但我想在行尾注释团队的当前得分(即累积价值)。
各队的得分过程如下:
> testVectorJG
[1] 17 138 45 0 182 117 49 0 94 0 57 0
> testVectorJW
[1] 145 64 157 182 0 65 133 182 136 202 105 202
我的数据框如下:
test_df <- tribble(~puntenvector, ~Team, ~Rondenummer, ~cumPunten,
145, 'Jaap, &, Wil', 1, 145,
64, 'Jaap, &, Wil', 2, 209,
157, 'Jaap, &, Wil', 3, 366,
182, 'Jaap, &, Wil', 4, 548,
0, 'Jaap, &, Wil', 5, 548,
65, 'Jaap, &, Wil', 6, 613,
133, 'Jaap, &, Wil', 7, 746,
182, 'Jaap, &, Wil', 8, 928,
136, 'Jaap, &, Wil', 9, 1064,
202, 'Jaap, &, Wil', 10, 1266,
105, 'Jaap, &, Wil', 11, 1371,
202, 'Jaap, &, Wil', 12, 1573,
17, 'Jasper, &, Gijs', 1, 17,
138, 'Jasper, &, Gijs', 2, 155,
45, 'Jasper, &, Gijs', 3, 200,
0, 'Jasper, &, Gijs', 4, 200,
182, 'Jasper, &, Gijs', 5, 382,
117, 'Jasper, &, Gijs', 6, 499,
49, 'Jasper, &, Gijs', 7, 548,
0, 'Jasper, &, Gijs', 8, 548,
94, 'Jasper, &, Gijs', 9, 642,
0, 'Jasper, &, Gijs', 10, 642,
57, 'Jasper, &, Gijs', 11, 699,
0, 'Jasper, &, Gijs', 12, 699)
我正在如下创建当前的ggplot:
ggplot(test_df, aes(x = Rondenummer, y = cumPunten, colour = Team, group = Team)) +
geom_line() +
labs(y = "Punten",
title = "Cumulatief aantal punten (inclusief roem) per ronde") +
theme_grey()
那么如何在行尾为两个团队以一种很好的,不重叠的方式显示每个团队的当前得分?
谢谢!
答案 0 :(得分:1)
您可以包括geom_text图层,该图层仅绘制数据的子集(与到目前为止进行的最大回合相对应)。您可以通过将子集函数传递给该层的data
参数来实现这一点。
此外,对于不重叠的内容,您可以与nudge_x
和nudge_y
一起玩。在此示例中,我仅添加了一个nudge_y。
另一种选择是使用geom_text_repel
包中的ggrepel
,它为您处理不重叠的东西。
max_round <- max(test_df$Rondenummer)
ggplot(test_df, aes(x = Rondenummer, y = cumPunten, colour = Team, group = Team)) +
geom_line() +
geom_text(data = function(x) subset(x, Rondenummer == max_round),
aes(label = cumPunten),
nudge_x = 0.75) +
labs(y = "Punten",
title = "Cumulatief aantal punten (inclusief roem) per ronde") +
theme_grey()
ggrepel解决方案:
max_round <- max(test_df$Rondenummer)
ggplot(test_df, aes(x = Rondenummer, y = cumPunten, colour = Team, group = Team)) +
geom_line() +
ggrepel::geom_text_repel(data = function(x) subset(x, Rondenummer == max_round),
aes(label = cumPunten)) +
labs(y = "Punten",
title = "Cumulatief aantal punten (inclusief roem) per ronde") +
theme_grey()