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

Posted

技术标签:

【中文标题】在 RStudio 上将交叉表显示为绘图【英文标题】:Displaying a Cross-tabulation As a Plot on RStudio 【发布时间】:2017-11-21 19:45:04 【问题描述】:

我正在尝试使用 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”绘制在箱线图上。 我包含了第一个代码来显示我可以创建一个表格来显示这个交叉表,第二个代码是我通常为一个自变量运行箱线图所做的。

【问题讨论】:

那么想要的输出到底是什么?您需要在示例输入数据中包含正确的reproducible example,以便我们可以运行代码并查看它在做什么。您是否将 dplyr mutate 命令的结果存储在某处?现在你的两段代码似乎没有关系。 我已经编辑了要点,希望能更清楚地说明这一点,我没有存储 dplyr 的结果——我需要做的就是从数据集中创建 x-tab 图.我只是将其包含在内以表明我已经尝试破解它并且能够使用表格而不是图表来破解它。 不清楚你在寻找什么输出。我认为你想要一个条形图(不是箱形图),但不清楚你为什么对你的输出不满意。 所以目前,我的 bar 图(你是对的,我的错)只适用于一个变量。我想向其中添加第二个变量,但我不知道如何。我觉得应该很简单,但我不知道该怎么做。 我用一个与您的要求相似的内置数据集运行了一个类似的图。它可能有助于显示您当前的情节并解释为什么它不符合您的要求。更好的是使用可重现的数据,以便其他人可以直接修改它。例如,mtcars %>% ggplot(aes(x = cyl, fill = factor(gear))) + geom_bar(position = "fill") 做了我认为你在问题​​中要求的事情,目前还不清楚那个情节不足以满足你的需求。 【参考方案1】:

我仍然不确定这是否完全符合您的要求,但如果您要求两个单独变量中的计数(或部分),您可以使用 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)

【讨论】:

以上是关于在 RStudio 上将交叉表显示为绘图的主要内容,如果未能解决你的问题,请参考以下文章

R语言入门1:安装R和RStudio

在 R 中用绘图可视化交叉表

将 RStudio 中的绘图另存为 PNG 或将 PDF 转换为 PNG 后缀

如何在使用 WHERE 删除的行上将计数值显示为 0(微软访问)

R 绘图 ggplot png 所支持的最大图片背景与res的关系

R:保存绘图 - 仍在 RStudio 中时无法打开图像