首页 > 解决方案 > R - 按收入中位数排序条形图

问题描述

目前有一张表,内容如下:

promo   ad    med_revenue
 No   Medium    31.92       
 No   Small     33.12       
 Yes  Medium    38.25       
 Yes  Small     32.50
gm_ab %>% 
  group_by(promo, ad) %>%
  summarize(median_revenue = median(revenue)) %>%
  ggplot(mapping = aes(x = reorder(promo, -median_revenue), 
                       y = median_revenue, 
                       fill = ad)) +
  geom_bar(stat = "identity", position = "dodge") +
  coord_flip()

添加图表

问题:如何分隔条形图,以便我可以有四个不同的 X - 变量,按中值价格顺序显示它们?例如:没有促销小广告是促销中型广告

标签: rggplot2

解决方案


您可以通过创建一个新的交互变量来做到这promo一点:adstr_c

df <- 
  tibble::tribble(
    ~promo,      ~ad, ~med_revenue,
      "No", "Medium",        31.92,
      "No",  "Small",        33.12,
     "Yes", "Medium",        38.25,
     "Yes",  "Small",         32.5
  )

df %>% 
  mutate(promo_ad = str_c(promo, ad, sep = " - ")) %>% 
  ggplot(aes(x = reorder(promo_ad, -med_revenue), y = med_revenue, fill = ad)) +
  geom_col() +
  coord_flip()

推荐阅读