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

时间:2017-03-22 20:28:43

标签: 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))

生成以下图表: enter image description here

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

提前致谢,

Rhenan Bartels

1 个答案:

答案 0 :(得分:7)

你可以像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) 那样对此进行一些破解:

width = ...

你必须使用stat_summary()才能使它恰到好处,但这很接近。 enter image description here

不直接相关,但我从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") 获得了很多里程,并认为它也显示了更好的数据:

SELECT attachments.*, alerts.id as alert_id
FROM `attachments`
LEFT OUTER JOIN `alerts` ON `alerts`.`attachment_id` = `attachments`.`id`
LEFT OUTER JOIN `rules` ON `rules`.`id` = `alerts`.`rule_id`
WHERE `attachments`.`bug_id` = 38871 AND (rules.id = 9 OR rules.id IS NULL)