在RStudio上显示交叉制表作为情节

时间:2017-11-21 19:45:05

标签: r ggplot2 crosstab

我正在尝试使用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

我的目标是将“性别”,“细分”的自变量绘制在一个框图上,对照因变量“变体”。 我包含了第一个代码,表明我可以创建一个表来显示这个交叉表,第二个是我通常用来运行一个独立变量的箱形图。

1 个答案:

答案 0 :(得分:1)

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

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

使用内置数据集mtcars,您可以获得计数:

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

enter image description here

或者使用以下方式进行排序:

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

enter image description here

您还可以使用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)

enter image description here