首页 > 解决方案 > 在平行坐标图上为每个变量添加一条平均线

问题描述

使用 iris 数据集,我可以制作如下平行坐标图。

library(GGally)
ggparcoord(data=iris,columns = (2:4),groupColumn = "Species")

我还想在同一个图上绘制每种花种的每个变量的平均值。我怎样才能做到这一点?

我曾考虑过用平均值制作一个新的数据框,但这似乎真的很不雅。

标签: rggplot2

解决方案


我认为这里需要使用方法创建一个额外的数据框,因为没有选择仅使用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)

结果:

添加点的绘图


推荐阅读