r - 在平行坐标图上为每个变量添加一条平均线
问题描述
使用 iris 数据集,我可以制作如下平行坐标图。
library(GGally)
ggparcoord(data=iris,columns = (2:4),groupColumn = "Species")
我还想在同一个图上绘制每种花种的每个变量的平均值。我怎样才能做到这一点?
我曾考虑过用平均值制作一个新的数据框,但这似乎真的很不雅。
解决方案
我认为这里需要使用方法创建一个额外的数据框,因为没有选择仅使用ggparcoord
提供的参数来执行此操作。
使用 dplyr/tidyverse 准备数据框并绘图如下所示:
libary(dplyr)
scaled_means <- iris %>%
select(- Sepal.Length) %>%
# Need to scale in the same as ggparcoord is doing
mutate_at(vars(- Species), ~ scale(.)[, 1]) %>%
group_by(Species) %>%
summarize_all(mean) %>%
pivot_longer(- Species, names_to = "variable", values_to = "value")
ggparcoord(data=iris,columns = (2:4),groupColumn = "Species") +
geom_point(data = scaled_means, aes(x = variable, y = value, colour = Species),
size = 3,
inherit.aes = FALSE)
结果: