【问题标题】:How do I use ggplot and facet_wrap for plotting factor attributes in R如何使用 ggplot 和 facet_wrap 在 R 中绘制因子属性
【发布时间】:2020-12-01 18:06:11
【问题描述】:

我有一个数据集,其中包含许多共享共同值(价格范围,例如“£11-£20”、“£21-£30”...)的属性存储为因子。我正在尝试使用 facet_wrap 绘制这些属性的选择,并在 x 轴上绘制每个价格范围的计数条形图。

我可以单独获得我想要的图表,但我想将这些属性分组,因为它们是相关的。示例代码如下:

dat <- data.frame(
  breakfast = factor(c("£11-£20","£11-£20","£21-30","£0-£10","£11-£20")),
  lunch = factor(c("£0-£10","£11-£20","£21-30","£11-£20","£21-30")),
  dinner = factor(c("£0-£10","£31-£40","£21-30","£11-£20","£21-30")),
  voucher_used = c(0,1,1,0,1)
)
View(dat)

ggplot(dat, aes(x = breakfast, fill = factor(voucher_used))) +
  geom_bar() +
  xlab("Breakfast") +
  ylab("No.") +
  labs(fill = "Voucher Used") # +
# facet_wrap(~ lunch)

理想情况下,我想为午餐和晚餐添加相同的地块 - 是否有可能或是否有其他更好的方法来实现相同的结果?

非常感谢

【问题讨论】:

    标签: r ggplot2 facet-wrap r-factor


    【解决方案1】:

    是的,可以使用一些 tidyverse 函数将您的数据重新整形为长格式:

    library(ggplot2)
    library(dplyr)
    library(tidyr)
    #Data
    dat <- data.frame(
      breakfast = factor(c("£11-£20","£11-£20","£21-30","£0-£10","£11-£20")),
      lunch = factor(c("£0-£10","£11-£20","£21-30","£11-£20","£21-30")),
      dinner = factor(c("£0-£10","£31-£40","£21-30","£11-£20","£21-30")),
      voucher_used = c(0,1,1,0,1)
    )
    #Plot
    dat %>% pivot_longer(-voucher_used) %>%
      ggplot(aes(x = value, fill = factor(voucher_used))) +
      geom_bar() +
      xlab("Breakfast") +
      ylab("No.") +
      labs(fill = "Voucher Used") +
      facet_wrap(~ name,scales = 'free')+xlab('Var')
    

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2021-03-05
      • 2022-12-25
      • 2020-07-02
      • 2020-11-05
      • 2021-11-26
      • 1970-01-01
      相关资源
      最近更新 更多