【问题标题】:Plotting median for each group with ggplot facet_wrap使用 ggplot facet_wrap 绘制每个组的中位数
【发布时间】:2017-04-04 17:49:34
【问题描述】:

有问题的数据集是 diamonds(在 dplyr 中)。我试图通过使用 facet_wrap 切割来打破价格直方图。我也希望每个地块都有中线。 我就是这样做的-

by_cut <- group_by(diamonds, cut)

med <- by_cut %>% 
  summarise(medn = median(price))

diam <- diamonds %>% 
  mutate(med_cut = ifelse(cut == med$cut[1], med$medn[1],
                      ifelse(cut == med$cut[2], med$medn[2],
                             ifelse(cut == med$cut[3], med$medn[3],
                                    ifelse(cut == med$cut[4], med$medn[4], med$medn[5])))))

diam %>% 
  ggplot(aes(price)) +
  geom_histogram(binwidth = 100) +
  facet_wrap(~ cut, scales = "free_y") +
  geom_vline(aes(xintercept= med_cut), colour='red') 

并得到所需的情节(如下,这就是我想要的..) -

但是我确定这不是实现结果的理想方式,因此我想知道实现结果情节的最佳方式是什么?

基于@yeedle cmets

这里比以前的尝试更好:

diam <- diamonds %>% 
  group_by(cut) %>% 
  mutate(medn = median(as.numeric(price)))

diam %>% 
  ggplot(aes(price)) +
  geom_histogram(binwidth = 100) +
  facet_wrap(~ cut, scales = "free_y") +
  geom_vline(aes(xintercept= medn, group= cut), colour='red') 

我们可以进一步改进它吗?

【问题讨论】:

    标签: r ggplot2 dplyr


    【解决方案1】:
    diamonds %>% 
      group_by(cut) %>%
      mutate(med_price = median(as.numeric(price))) %>%
      ggplot(aes(price)) +
         geom_histogram(binwidth = 100) +
         geom_vline(aes(xintercept= med_price), colour='red') +
         facet_wrap(~ cut, scales = "free_y")
    

    【讨论】:

    • 谢谢,它解决了我关于数字向量错误的小问题。由于错误,我走了很长的路......
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2020-07-02
    • 2022-11-12
    • 2021-11-25
    • 1970-01-01
    • 2021-03-05
    • 2017-06-07
    • 1970-01-01
    相关资源
    最近更新 更多