具有ggplot的抖动图,每组具有平均线

Rhe*_*els 2 r ggplot2

我在最近的一次搜索中看到了我的问题的一些答案,但它们都没有为我工作.

我想将geom_jitter()除以3组,并为每个组添加平均线.到目前为止,我有以下代码.但它仍然不好.

library(ggplot2)
data("iris")

iris.summary <- aggregate(. ~ Species, mean, data=iris)

ggplot(iris, aes(x=Species, y=Sepal.Width, shape=Species)) +  
   geom_jitter(width=0.2) + geom_hline(data=iris.summary, size=1, 
   col="red", aes(yintercept=Sepal.Width))
Run Code Online (Sandbox Code Playgroud)

这产生了以下图表: 在此输入图像描述

如何将红线设置为点的边缘?

提前致谢,

Rhenan Bartels

Nat*_*ate 8

你可以这样做一点点破解geom_crossbar():

ggplot(iris, aes(x=Species, y=Sepal.Width, shape=Species)) +  
    geom_jitter(width=0.2) +
    geom_crossbar(data=iris.summary, aes(ymin = Sepal.Width, ymax = Sepal.Width),
                  size=1,col="red", width = .5)
Run Code Online (Sandbox Code Playgroud)

你必须玩width = ...它才能使它恰到好处,但这很接近. 在此输入图像描述

没有直接相关但我从中获得了很多里程stat_summary()并认为它也显示了更好的数据:

ggplot(iris, aes(x=Species, y=Sepal.Width, shape=Species)) +  
    geom_jitter(width=0.2) +
    stat_summary(fun.data = mean_cl_normal, geom = "crossbar",
                 width = .5, color = "red")
Run Code Online (Sandbox Code Playgroud)