从预计算的值绘制 ggplot 误差条

3

能否在 ggplot 柱状图上以“逐列”的方式绘制预先计算的值的误差线?

给定以下内容:

require(ggplot2)
library("ggplot2")
require(reshape2)
library("reshape2")

df <- structure(list(PVC1 = 0.4019026, PVC2 = 0.4479259, PVC3 = 0.4494118, PVC4 = 0.4729437,
                 PVC5 = 0.4800556, PVC6 = 0.449229, PVC7 = 0.4905295, PVC8 = 0.4457566,
                 PVC9 = 0.4271259, PVC10 = 0.4850341, PVC11 = 0.4369965, PVC12 = 0.4064052,
                 PVC13 = 0.3743776, PVC14 = 0.3603853, PVC15 = 0.3965469, PVC16 = 0.365461),
                .Names = c("PVC1","PVC2","PVC3","PVC4","PVC5","PVC6","PVC7","PVC8",
                           "PVC9","PVC10","PVC11","PVC12","PVC13","PVC14","PVC15","PVC16"),
                class = "data.frame",
                row.names = c(NA, -1L)
            )

melted_df <- melt(df, variable.name = "Locus", value.name = "GC")
st_dev <- c(0.023031363,    0.024919217,    0.017371129,
        0.019008759,    0.026650605,    0.026904926,
        0.024227542,    0.017767553,    0.026152478,
        0.039770898,    0.023929714,    0.028845442,
        0.015572219,    0.024967336,    0.014955416,    0.024569096)



gc_chart <- ggplot(melted_df, aes(Locus, GC*100, fill=Locus,)) +
                geom_bar(stat = "identity")
gc_chart <- gc_chart + ylab("GC Content (%)")
gc_chart <- gc_chart + theme(axis.text.x = element_text(angle=45, hjust=1))
gc_chart <- gc_chart + geom_abline(intercept=40.8891366,
                               slope=0,
                               colour="blue",
                               linetype="dashed")
gc_chart <- gc_chart + coord_cartesian(ylim=c(0,60))
gc_chart

这将生成以下条形图:

enter image description here

我想能够在相应的列上绘制预先计算的标准偏差每个值的图表。

可以通过向geom_errorbar提供向量来完成这项工作吗?还是最好首先将标准偏差信息包含在数据帧中?

(顺便说一下,我没有让R自己计算标准偏差的原因是,我已经在图表上绘制了平均值,所以R无法从中计算出数据)

1个回答

2

我认为这并不可取,如果可能的话。特别是因为您需要从 melted_df 中获取GC值来计算 yminymax 值。但是,如果出于某种原因要避免修改 melted_df,您总可以执行以下操作:

gc_chart + 
  geom_errorbar(aes(Locus, 
                    ymin = (GC - cbind(melted_df, st_dev)$st_dev)*100, 
                    ymax = (GC + cbind(melted_df, st_dev)$st_dev)*100))

完美!这就完成了任务! - Joe Healey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接