在每个方面而不是总体上显示摘要行

时间:2018-06-22 03:14:03

标签: r ggplot2

我正在尝试做类似于this question的事情,但是希望在单个块中完成而不是分别缓存值。

我正在创建与此类似的图表:

index do
  selectable_column
  column :title
end

enter image description here

按字段之一分组,然后在结果上绘制计算出的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()添加到定义中,但是它返回整个数据集的平均值,而不是构面中的观察值:

enter image description here

我追求的是这样的。 (这里的线是用图像编辑器绘制的。)

enter image description here

这可能吗?

1 个答案:

答案 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创建。