使用ggplot和一个Likert量表的矩阵在R中堆积条形图

时间:2017-03-12 23:37:07

标签: r matrix ggplot2 histogram bar-chart

这是我的第一个问题。我以前曾找过一个答案,但我找不到令人满意的答案 - 可能是因为我是R的绝对初学者。

我有以下数据:

      pbw1 pbw2 pbw3 pbw4 pbw5 pbw6
[1,]   2   3   2   1   0   2    3
[2,]   2   1   1   3   4   5    6

PBW是一个以Likert量表回答的变量。此数据集有1014行,因此这只是一个示例。

我需要的是一个看起来像这样的图:

Example

对于我的数据集,这意味着:在x轴上有6个项目(我想在最后用句子替换pbw),因此有6个条形。这些应该显示n = 1014(百分比)中有多少人回答了该项目。比如,80%有0回答,10%有1回答,5%回答5%等等。这显然是累积的。

我读的只是ggplot,融化等等。然而,我只是无法让R做我想要和需要的事情。

这没有帮助:

datm = melt(cbind(pbwmatrix, ind=rownames(pbwmatrix)), id.vars=c('ind'))

barplot(pbwmatrix)也没有;随机命令的几个愚蠢组合也没有(是的,我很绝望)。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

以下是使用ggplot

的首发
df <- as.data.frame(replicate(6, sample(1:6,100,T)))
library(tidyverse)
df %>% 
  gather %>% 
  group_by(key, value) %>% 
  tally %>% 
  mutate(n = n/sum(n)*100) %>% 
  ggplot(aes(x=key, y=n, fill=as.factor(value))) + 
  geom_col() + 
  geom_text(aes(label=n), position=position_stack(.5)) + 
  coord_flip()