我正在尝试做类似于this question的事情,但是希望在单个块中完成而不是分别缓存值。
我正在创建与此类似的图表:
index do
selectable_column
column :title
end
按字段之一分组,然后在结果上绘制计算出的library(tidyverse)
mtcars %>%
rownames_to_column("carmodel") %>%
mutate(brand = substr(carmodel, 1, 4)) %>%
group_by(brand, cyl) %>%
summarize(avgmpg = mean(mpg)) %>%
ggplot(aes(x=brand, y = avgmpg)) +
geom_point() +
facet_grid(cyl~., scales = "free_y") +
coord_flip()
值,并使用构面将相似的观察值放在一起。我想做的是在每个构面中添加一条线,以显示该构面的观测值的平均值。我尝试将summarize()
添加到定义中,但是它返回整个数据集的平均值,而不是构面中的观察值:
我追求的是这样的。 (这里的线是用图像编辑器绘制的。)
这可能吗?
答案 0 :(得分:2)
因为您说过要在一个块中执行此操作,所以请注意,在.
的许多用法中,您可以在几何图形中使用它来引用ggplot()
的原始数据参数。因此,您可以在此处进行其他汇总以获取geom_vline
的值。我也只是颠倒了geom_point
的美学,而不是使用coord_flip
。
library(tidyverse)
mtcars %>%
rownames_to_column("carmodel") %>%
mutate(brand = substr(carmodel, 1, 4)) %>%
group_by(brand, cyl) %>%
summarize(avgmpg = mean(mpg)) %>%
ggplot(aes(y=brand, x = avgmpg)) +
geom_point() +
geom_vline(
data = . %>%
group_by(cyl) %>%
summarise(line = mean(avgmpg)),
mapping = aes(xintercept = line)
) +
facet_grid(cyl~., scales = "free_y")
由reprex package(v0.2.0)于2018-06-21创建。