r - 如何使用 ggplot 和 facet_wrap 在 R 中绘制因子属性
问题描述
我有一个数据集,其中包含许多共享共同值的属性(价格范围,例如“£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)
理想情况下,我想在午餐和晚餐旁边添加相同的地块 - 是否有可能或是否有另一种更好的方法来实现相同的结果?
非常感谢
解决方案
是的,可以使用一些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')
输出:
推荐阅读
- python - 从 django 中的子模型访问父模型属性
- .net - 为什么 .NET 代码表单应用程序(VS2019)不能在 PI 板上运行?
- python - Pandas DataFrame 基于布尔条件的分组选择列
- datetime - 字符串 '2019-04-01' 未被识别为有效的日期时间。或者如果尝试将其解析为 DateTime,则总是得到“假”
- powershell - 使用 PowerShell 更新 Azure DevOps 中的服务挂钩
- azure-devops - 是否可以在 PROJECTS 之间克隆变量组?
- java - 运行可执行jar
- python - 无法在 Django 休息更新视图中获取实例值
- azure-cognitive-services - 表单识别器的语言支持
- c++ - 防止组合框被关闭