R 在平行坐标图上为每个变量添加平均线

R 在平行坐标图上为每个变量添加平均线,r,ggplot2,R,Ggplot2,使用iris数据集,我可以绘制如下的平行坐标图 library(GGally) ggparcoord(data=iris,columns = (2:4),groupColumn = "Species") 我还想在同一个图上绘制每种花卉的每个变量的平均值。我该怎么做 我曾经考虑过用平均值制作一个新的数据框,但这看起来真的很不雅观 我认为在这里需要使用means创建一个额外的数据帧,因为仅使用参数ggparcoord提供的选项无法实现这一点 使用dplyr/tidyverse准备数据帧并进行打印,

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

library(GGally)
ggparcoord(data=iris,columns = (2:4),groupColumn = "Species")
我还想在同一个图上绘制每种花卉的每个变量的平均值。我该怎么做


我曾经考虑过用平均值制作一个新的数据框,但这看起来真的很不雅观

我认为在这里需要使用means创建一个额外的数据帧,因为仅使用参数
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)
libary(dplyr)
比例单位表示%
选择(-萼片长度)%>%
#需要像ggparcoord一样进行扩展
在(变数(-种),~scale(.)[,1])%>%处突变
组别(种类)%>%
汇总所有(平均值)%>%
pivot_longer(-Species,name_to=“variable”,values_to=“value”)
ggparcoord(数据=虹膜,列=(2:4),groupColumn=“物种”)+
几何点(数据=标度平均值,aes(x=变量,y=值,颜色=物种),
尺寸=3,
inherit.aes=FALSE)
结果:


我认为在这里需要使用方法创建一个额外的数据帧,因为仅使用参数
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)
libary(dplyr)
比例单位表示%
选择(-萼片长度)%>%
#需要像ggparcoord一样进行扩展
在(变数(-种),~scale(.)[,1])%>%处突变
组别(种类)%>%
汇总所有(平均值)%>%
pivot_longer(-Species,name_to=“variable”,values_to=“value”)
ggparcoord(数据=虹膜,列=(2:4),groupColumn=“物种”)+
几何点(数据=标度平均值,aes(x=变量,y=值,颜色=物种),
尺寸=3,
inherit.aes=FALSE)
结果:

~scale(.)[,1]1在这里做什么?该代码是否总是根据ggparcoord中使用的缩放方法缩放平均值?
scale()
在base R中有点烦人,它将结果作为矩阵返回,因此
[,1]
将该列从矩阵中拉出并使其成为向量。我编写的代码与
ggparcoord
中的默认缩放匹配,但是如果更改
ggparcoord
缩放选项,则必须更改代码。~scale(.)[,1]1在这里做什么?该代码是否总是根据ggparcoord中使用的缩放方法缩放平均值?
scale()
在base R中有点烦人,它将结果作为矩阵返回,因此
[,1]
将该列从矩阵中拉出并使其成为向量。我编写的代码与
ggparcoord
中的默认缩放匹配,但是如果更改
ggparcoord
缩放选项,则必须更改代码。