【发布时间】:2020-04-12 00:27:11
【问题描述】:
我一直在尝试寻找特定问题的答案,但我没有成功,所以我刚刚制作了一个 MWE 在这里发布。
我尝试了here 的答案,但没有成功。
我想做的任务看起来很简单,但我想不通,我得到的结果让我有一些基本的问题......
我只想使用ggplot2 在条形图上叠加点和误差线。
我有一个长格式数据框,如下所示:
> mydf <- data.frame(cell=paste0("cell", rep(1:3, each=12)),
scientist=paste0("scientist", rep(rep(rep(1:2, each=3), 2), 3)),
timepoint=paste0("time", rep(rep(1:2, each=6), 3)),
rep=paste0("rep", rep(1:3, 12)),
value=runif(36)*100)
我试图通过以下方式获得我想要的情节:
myPal <- brewer.pal(3, "Set2")[1:2]
myPal2 <- brewer.pal(3, "Set1")
outfile <- "test.pdf"
pdf(file=outfile, height=10, width=10)
print(#or ggsave()
ggplot(mydf, aes(cell, value, fill=scientist )) +
geom_bar(stat="identity", position=position_dodge(.9)) +
geom_point(aes(cell, color=rep), position=position_dodge(.9), size=5) +
facet_grid(timepoint~., scales="free_x", space="free_x") +
scale_y_continuous("% of total cells") +
scale_fill_manual(values=myPal) +
scale_color_manual(values=myPal2)
)
dev.off()
但我得到了这个:
问题是,每个“科学家”条应该有 3 个“rep”值,但这些值是按“rep”排序的(它们应该是 1、2、3、1、2、3,而不是 1 ,1,2,2,3,3)。
此外,我想用geom_errorbar 添加错误栏,但我没有找到一个可行的例子......
此外,将实际值点叠加到条形图上,这让我想知道这里实际绘制的是什么……是否正确地为每个条形图取值,以及为什么绘制最大值(或看起来如此)默认情况下。
我认为应该正确绘制的方式是使用中值(或平均值),在箱线图中添加像胡须一样的误差线(最小值和最大值)。
知道如何...
- ...“rep”值点是否以正确的顺序出现?
- ...将条形显示的值从最大值更改为中值?
- ...添加带有最大值和最小值的误差线?
【问题讨论】:
-
" 将条形图显示的值从最大值更改为中值" & "添加具有最大值和最小值的误差线" - 只需使用箱线图
-
我不确定您希望如何显示错误栏。在每个科学家每个时间点的基础上?误差是根据什么统计量计算的? sd? ci?通过三个重复,我会坚持单点和均值/中位数
-
是的,我想使用箱线图,但是问我这个的人想要那样,我能说什么......我想我会留下点,没有错误酒吧
-
我需要的只是为每个 Scientist 绘制一个条形图(就像在我的 MWE 中一样),将 3 个不同的点叠加在顶部
标签: r ggplot2 bar-chart point errorbar