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

发布于 2025-01-12 18:27:58 字数 281 浏览 0 评论 0原文

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

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

我使用的 频率下面的 A1 代码,但我不知道如何在 x 轴上绘制 A1 和 A2

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

I am trying to create a bar plot two categorical variables
A1 A2
more less
equal more
less equal
equal more
.. and so on

I want a create a bar graph where the factor levels ("more", "less", "equal" etc) are on the x axis for both A1 and A2, and the y axis is the frequency

I used the following code for A1, but I can't figure out how to plot both A1 and A2 on the x-axis

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅浅淡淡 2025-01-19 18:27:58

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

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))

DATA

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

You could achieve your desired result by reshaping you data to long format. Using some fake random data:

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))

DATA

set.seed(123)
df <- data.frame(
  A1 = sample(c("more", "less", "equal"), 100, replace = TRUE),
  A2 = sample(c("more", "less", "equal"), 100, replace = TRUE)
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文