Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2:带组平均值的堆栈条形图_R_Ggplot2 - Fatal编程技术网

R ggplot2:带组平均值的堆栈条形图

R ggplot2:带组平均值的堆栈条形图,r,ggplot2,R,Ggplot2,我尝试了几种方法来制作ggplot柱状图,这些方法都是从数据帧中的因子中导出的,但我没有成功。 如果你考虑: df <- as.data.frame(matrix(rnorm(60*2, mean=3,sd=1), 60, 2)) df$factor <- c(rep(factor(1:3), each=20)) df对于任何如此复杂的事情,我认为预先计算数字,然后绘制它们更容易。使用dplyr/tidyr(即使是错误条)也可以轻松做到这一点: 当然,这看起来有点奇怪,因为在堆叠

我尝试了几种方法来制作ggplot柱状图,这些方法都是从数据帧中的因子中导出的,但我没有成功。 如果你考虑:

df <- as.data.frame(matrix(rnorm(60*2, mean=3,sd=1), 60, 2))
df$factor <- c(rep(factor(1:3), each=20))

df对于任何如此复杂的事情,我认为预先计算数字,然后绘制它们更容易。使用dplyr/tidyr(即使是错误条)也可以轻松做到这一点:

当然,这看起来有点奇怪,因为在堆叠的条中大约有100%的错误条。我认为最好绘制实际数据点,加上平均值和误差条,并使用镶嵌面:

gather(df, 'cat', 'value', 1:2) %>% 
    group_by(cat, factor) %>% 
    summarise(mean=mean(value), se=sd(value)/sqrt(n())) %>% 
    ggplot(aes(x=cat, y=mean, colour=factor(factor))) +
        geom_point(aes(y=value), position=position_jitter(width=.3, height=0), data=gather(df, 'cat', 'value', 1:2) ) +
        geom_point(shape=5, size = 3) +
        geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=.1) +
        facet_grid(factor ~ .)


通过这种方式,任何人都可以检查数据,并自行确定它们是正态分布的

为什么需要带均值的堆叠条形图?我想这很难解释。我对三个物种每6次测量有60次。数据几乎是正态分布的,我想展示每个物种的年度变化。因此,条形图代表60个采样场的平均物种丰度。
gather(df, 'cat', 'value', 1:2) %>% 
    group_by(cat, factor) %>% 
    summarise(mean=mean(value), se=sd(value)/sqrt(n())) %>% 
    ggplot(aes(x=cat, y=mean, colour=factor(factor))) +
        geom_point(aes(y=value), position=position_jitter(width=.3, height=0), data=gather(df, 'cat', 'value', 1:2) ) +
        geom_point(shape=5, size = 3) +
        geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=.1) +
        facet_grid(factor ~ .)