我有 10 组数据点,我正在尝试为要在绘图上显示的每个组添加平均值(例如,通过不同的符号,如大三角形或星形或类似的东西)。这是一个可重现的例子
library(ggplot2)
library(reshape2)
set.seed(1234)
x <- matrix(rnorm(100),10,10)
varnames <- paste("var", seq(1,10))
df <- data.frame(x)
colnames(df) <- varnames
melt(df)
ggplot(data = melt(df)) + geom_point(mapping = aes(x = variable, y = value))
mymeans <- colMeans(df)
Run Code Online (Sandbox Code Playgroud)
基本上我现在想mymeans在各自的变量位置绘制值,有人知道如何快速做到这一点吗?
mar*_*kus 14
或者我们可以使用 stat_summary
ggplot(data = reshape2::melt(df), aes(x = variable, y = value)) +
geom_point() +
stat_summary(
geom = "point",
fun.y = "mean",
col = "black",
size = 3,
shape = 24,
fill = "red"
)
Run Code Online (Sandbox Code Playgroud)
可以在此处找到有关可能形状的概述:www.cookbook-r.com
您可以geom_point通过另一个传递另一个data.frame:
请尝试以下操作:
df_means <- melt(summarise_all(df, mean))
ggplot(data = melt(df)) +
geom_point(mapping = aes(x = variable, y = value)) +
geom_point(data=df_means, mapping=aes(x = variable, y = value), col="red")
Run Code Online (Sandbox Code Playgroud)
我知道你在找什么?
顺便说一句,更紧凑/现代/整洁的方式是:
library(tidyverse)
set.seed(1234)
df <- replicate(10, rnorm(10)) %>% as_data_frame() %>% gather()
df_means <- df %>% group_by(key) %>% summarise(value=mean(value))
ggplot(data = df) +
aes(x = key, y = value) +
geom_point() +
geom_point(data=df_means, col="red")
Run Code Online (Sandbox Code Playgroud)