如何在散点图上制作单独的均值、误差线以及如何制作水平均值线?
How to make separate mean, errorbar on top of a scatter plot and how to make a horizontal mean line?
我想制作一个position_dodged scatter plot
,均值表示为水平线(带有误差线)。
我遇到问题 position_dodging
使用 stat_summary()
并使平均值显示为水平线的均值和误差条。
我想证明男女之间的均值不同。我知道每个组都有不同的方法,但我不知道如何形象化它。
download.file(url="https://ndownloader.figshare.com/files/2292169",
destfile = "~/portal_data_joined.csv")
surveys <- read.csv
surveys_cln <- surveys %>% filter(sex=="F"|sex=="M")
ggplot(data = surveys_cln, mapping = aes(x=species_id, y=weight, color=sex))+
geom_jitter(alpha=.6, position = position_dodge(.5))+
stat_summary(fun.data = mean_sdl, fun.args = list(mult=1),
geom="errorbar", color="red", width=.5, position=position_dodge2(width=.9))
stat_summary(fun.y=mean, geom="errorbar", color="red", width = .75, linetype = "dashed", position=position_dodge(9))
我每个条件只有一个 mean+errorbar
,而不是两个条件组。如果我能分别显示男女的 mean+errorbar
,那就太好了。
这是图片
嗨!
谢谢您的帮助。这是更新后的代码:
ggplot(data = surveys_cln, mapping = aes(x=species_id, y=weight, fill=as.factor(sex), shape=as.factor(sex)))+
geom_jitter(alpha=.6, position = position_dodge(.5))+
stat_summary(aes(group = sex), fun.data = mean_sdl, fun.args = list(mult=1),
geom="errorbar", width=.5, position=position_dodge2(width=.9))+
stat_summary(fun.y=mean, geom="errorbar", width = .75, linetype = "dotted", position=position_dodge(9))+
scale_fill_manual(values=c("#006D2C","#DEEBF7"))+
#scale_fill_brewer(palette="Paired")+
theme_bw()+
#theme(text=element_text(size=30))+
theme(#legend.position = "none",
plot.title = element_blank(),
panel.grid.major.x = element_blank(),
axis.title.x = element_text(),
axis.text.x = element_text(),
axis.ticks = element_blank(),
axis.text.y = element_text(size=rel(.7)))
你能帮我弄一下颜色吗?我想要 F=#000000 和 M=#73000a。
此外,是否可以将平均值可视化为误差线之间的水平条?
这是第二次尝试
再次感谢!
您需要在 geom_*()
中添加 aes(group = sex)
。
ggplot(data = surveys_cln,
mapping = aes(x = species_id, y = weight, color = sex)) +
geom_jitter(alpha = .6, position = position_dodge(.5)) +
stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1),
aes(group = sex),
geom = "errorbar", color = "red", width = .5,
position = position_dodge2(width = .9))
虽然@abichat 的回答完全正确,但您也可以删除 color="red"
参数,这会导致 ggplot
不对您的数据进行分组。
这样,您的绘图将以良好的颜色显示误差线(可能会增加它们的厚度以提高可读性)。
我想制作一个position_dodged scatter plot
,均值表示为水平线(带有误差线)。
我遇到问题 position_dodging
使用 stat_summary()
并使平均值显示为水平线的均值和误差条。
我想证明男女之间的均值不同。我知道每个组都有不同的方法,但我不知道如何形象化它。
download.file(url="https://ndownloader.figshare.com/files/2292169",
destfile = "~/portal_data_joined.csv")
surveys <- read.csv
surveys_cln <- surveys %>% filter(sex=="F"|sex=="M")
ggplot(data = surveys_cln, mapping = aes(x=species_id, y=weight, color=sex))+
geom_jitter(alpha=.6, position = position_dodge(.5))+
stat_summary(fun.data = mean_sdl, fun.args = list(mult=1),
geom="errorbar", color="red", width=.5, position=position_dodge2(width=.9))
stat_summary(fun.y=mean, geom="errorbar", color="red", width = .75, linetype = "dashed", position=position_dodge(9))
我每个条件只有一个 mean+errorbar
,而不是两个条件组。如果我能分别显示男女的 mean+errorbar
,那就太好了。
这是图片
嗨! 谢谢您的帮助。这是更新后的代码:
ggplot(data = surveys_cln, mapping = aes(x=species_id, y=weight, fill=as.factor(sex), shape=as.factor(sex)))+
geom_jitter(alpha=.6, position = position_dodge(.5))+
stat_summary(aes(group = sex), fun.data = mean_sdl, fun.args = list(mult=1),
geom="errorbar", width=.5, position=position_dodge2(width=.9))+
stat_summary(fun.y=mean, geom="errorbar", width = .75, linetype = "dotted", position=position_dodge(9))+
scale_fill_manual(values=c("#006D2C","#DEEBF7"))+
#scale_fill_brewer(palette="Paired")+
theme_bw()+
#theme(text=element_text(size=30))+
theme(#legend.position = "none",
plot.title = element_blank(),
panel.grid.major.x = element_blank(),
axis.title.x = element_text(),
axis.text.x = element_text(),
axis.ticks = element_blank(),
axis.text.y = element_text(size=rel(.7)))
你能帮我弄一下颜色吗?我想要 F=#000000 和 M=#73000a。
此外,是否可以将平均值可视化为误差线之间的水平条?
这是第二次尝试
再次感谢!
您需要在 geom_*()
中添加 aes(group = sex)
。
ggplot(data = surveys_cln,
mapping = aes(x = species_id, y = weight, color = sex)) +
geom_jitter(alpha = .6, position = position_dodge(.5)) +
stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1),
aes(group = sex),
geom = "errorbar", color = "red", width = .5,
position = position_dodge2(width = .9))
虽然@abichat 的回答完全正确,但您也可以删除 color="red"
参数,这会导致 ggplot
不对您的数据进行分组。
这样,您的绘图将以良好的颜色显示误差线(可能会增加它们的厚度以提高可读性)。