我有以下问题。该数据集是通过重复测量的受试者内设计收集的。我的数据集包含 4 个变量。参与者 ID、参与者性别、状况和一项测量值。数据集看起来像这样:
df <- read.table(text = 'ID sex condition value
01 m A 0.0765
01 m B 0.063
01 m C 0.0773
02 f B 0.0599
02 f C 0.0679
02 f A 0.067
03 f C 0.0728
03 f A 0.0589
03 f B 0.0699', header=TRUE)
我现在想做的是绘制一个图表,显示每个条件的平均值和标准差。但图表应该按性别分组。我尝试使用 ez 包中的 ezPlot 绘制此图:
library(ez)
ez_Condition <- ezPlot(df,
dv = value,
wid = ID,
within = condition,
between=sex,
split=sex,
do_bars=TRUE,
type = 2,
x = condition
)
ez_Condition
我的问题:这段代码的输出是我正在寻找的图,其中分别可视化两性每种条件的平均值。但误差线没有显示每种情况每种性别的个体标准偏差。相反,对于不适合数据的所有条件,误差线都同样长。
library(ggplot2)
Bar_Mean <- ggplot(data=df, aes(x=condition, y=value, fill=sex)) +
geom_bar(position = "dodge", stat = "summary", fun = "mean") +
labs(title = "Average Value") +
labs (x="Condition",y="Value") +
scale_y_reverse(breaks = seq(0,-5, by=-1)) +
theme_classic() +
stat_summary(fun.data = mean_cl_normal, geom = "errorbar", position = position_dodge(width=0.9),width=.1)
Bar_Mean
这段代码有效,可视化数据也符合我之前计算的结果。但我宁愿不使用箱线图的条形图。我想要一个看起来像 ezPlot 的图,其中平均值用线连接,并且每个性别都有 2 个图表。
如果我尝试修改我的 ggplot 代码并使用 ,,geom_line” 而不是 ,,geom_bar” 它不再起作用。我如何使用 GGPLOT 获得这样的图?:
提前感谢您的帮助!
您可以计算每个
group_by
的平均值和标准差值。之后,您可以使用 geom_errorbar
添加误差线,并使用 group
美学将它们保留在每个组中,如下所示:
library(dplyr)
library(ggplot2)
df %>%
group_by(sex, condition) %>%
summarise(mean_value = mean(value),
sd_value = sd(value)) %>%
ggplot(aes(x = condition, y = mean_value, color = sex, group = sex)) +
geom_point() +
geom_line() +
geom_errorbar(aes(ymin = mean_value-sd_value, ymax = mean_value+sd_value)) +
labs(title = "Average Value") +
labs (x="Condition",y="Value") +
theme_classic()
创建于 2024-01-29,使用 reprex v2.0.2