双条形图比较两个分类变量

Double bar plot to compare two categorical variables

我正在尝试创建两个分类变量的条形图 A1 A2 更多更少 等于多 不太平等 等于多 ..等等

我想要创建一个条形图,其中因子水平(“更多”、“更少”、“相等”等)位于 A1 和 A2 的 x 轴上,y 轴是频率

我对 A1 使用了以下代码,但我不知道如何在 x 轴上同时绘制 A1 和 A2

ggplot(df, aes(x = A1)) + geom_bar() + theme(axis.text.x = element_text(angle = 45, hjust = 1))

您可以通过将数据重塑为长格式来实现您想要的结果。使用一些虚假的随机数据:

library(ggplot2)
library(tidyr)

df_long <- df %>% 
  pivot_longer(c(A1, A2), names_to = "name", values_to = "value")

head(df_long)
#> # A tibble: 6 × 2
#>   name  value
#>   <chr> <chr>
#> 1 A1    equal
#> 2 A2    equal
#> 3 A1    equal
#> 4 A2    less 
#> 5 A1    equal
#> 6 A2    less

ggplot(df_long) + 
  geom_bar(aes(x = value, fill = name), position = "dodge") + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

数据

set.seed(123)
df <- data.frame(
  A1 = sample(c("more", "less", "equal"), 100, replace = TRUE),
  A2 = sample(c("more", "less", "equal"), 100, replace = TRUE)
)