在 RStudio 上将交叉表显示为绘图

Displaying a Cross-tabulation As a Plot on RStudio

我正在尝试使用 ggplot2 在 RStudio 上可视化交叉表。过去我已经能够创建绘图,并且也完成了交叉制表,但无法破解。有人可以帮忙吗?

这是我的 x-tab 代码:

library(dplyr)
data_dan %>%
  group_by(Sex, Segment) %>%
  count(variant) %>%
  mutate(prop = prop.table(n))

这是我创建情节的方法:

#doing a plot
variance_art_new.plot = ggplot(data_dan,  aes(Segment, fill=variant)) +
  geom_bar(position="fill")+
  theme_classic()+
  scale_fill_manual(values = c("#fc8d59", "#ffffbf", "#99d594"))
variance_art_new.plot

这是我正在处理的数据示例:

   Word  Segment  variant  Position     Sex
1  LIKE       K       R       End      Female
2  LITE       T       S       End      Male
3 CRACK       K       R       End      Female
4  LIKE       K       R       End      Male
5  LIPE       P       G       End      Female
6  WALK       K       G       End      Female

我的目标是将 'Sex'、'Segment' 的自变量绘制在箱线图上,并针对因变量 'variant'。 我包含了第一个代码来表明我可以创建一个 table 来显示这个交叉表,第二个代码是我通常为 运行 做的,只有一个自变量的箱形图。

我仍然不确定这是否完全符合您的要求,但如果您要求两个单独变量中的计数(或部分),您可以使用 facet_wrap 来分隔两组。

(注意,所有这些都是 运行 和 theme_set(theme_bw()) 因为我更喜欢这种类型的情节。)

使用内置数据集 mtcars 您可以通过以下方式获得计数:

mtcars %>%
  ggplot(aes(x = factor(cyl), fill = factor(gear))) +
  geom_bar() +
  facet_wrap(~vs)

或使用相反的排序:

mtcars %>%
  ggplot(aes(x = factor(vs), fill = factor(gear))) +
  geom_bar() +
  facet_wrap(~cyl, labeller = label_both)

您还可以使用 position = "fill"

绘制组内分布
mtcars %>%
  ggplot(aes(x = factor(vs), fill = factor(gear))) +
  geom_bar(position = "fill") +
  facet_wrap(~cyl, labeller = label_both) +
  scale_y_continuous(name = "Within group Percentage"
                     , labels = scales::percent)