繁体   English   中英

使用ggplot2分组的条形图

[英]Grouped bar chart using ggplot2

我有一些数据结构如下:

structure(list(respectfromsuperior = structure(c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 
1L, 1L, 1L, NA, 2L, 1L, 1L, 1L, 1L, 2L), .Label = c("agree", 
"disagree"), class = "factor"), respectideserve = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L), .Label = c("agree", 
"disagree"), class = "factor"), undesirablechange = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, NA, 2L, 2L, 
2L, 2L, 2L, 1L, 1L, NA, 1L, 2L, 1L, 2L, 2L, 2L), .Label = c("agree", 
"disagree"), class = "factor"), jobsecuritypoor = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("agree", 
"disagree"), class = "factor"), promotionprospectsadequate = structure(c(2L, 
1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 
2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L), .Label = c("agree", 
"disagree"), class = "factor"), salaryadequate = structure(c(2L, 
1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 
2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("agree", 
"disagree"), class = "factor"), branch = structure(c(1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Edinburgh", 
"Head Office", "Manchester"), class = "factor")), .Names = c("respectfromsuperior", 
"respectideserve", "undesirablechange", "jobsecuritypoor", "promotionprospectsadequate", 
"salaryadequate", "branch"), class = "data.frame", row.names = c(1L, 
2L, 4L, 6L, 10L, 11L, 13L, 15L, 16L, 17L, 19L, 20L, 22L, 23L, 
25L, 27L, 29L, 30L, 32L, 33L, 34L, 35L, 39L, 40L, 41L, 42L, 43L, 
44L, 45L))

我想使用ggplot 2绘制具有以下功能的条形图:

  1. 条形图表示同意的受访者百分比
    数据第2:6列中的语句(不同意,不作图)。 百分比计算为
    分行成员所占百分比(不占受访者总数的百分比)
  2. 条形图按x轴上的分支分组
  3. 问题(列2:6)用作“填充”参数

我试过下面的代码,但无法解决:

data.r <- melt(rewitemsbr, id.vars='branch')
ggplot(data=data.r, aes(x=value, fill=variable)) +
geom_bar(stat="count", position=position_dodge())

这是我想出的最好的方法:

在此处输入图片说明

非常感谢任何帮助。

您可以尝试关注。

# get the stats using aggregate
res <- aggregate(d[,1:6], list(d$branch), function(x) sum(x=="agree", na.rm = T)/length(x))
res
  Group.1   respectfromsuperior respectideserve undesirablechange jobsecuritypoor promotionprospectsadequate salaryadequate
1 Edinburgh                 1.0       0.8888889         0.1111111             0.0                  0.6666667      0.4444444
2 Head Office               0.7       0.3000000         0.4000000             0.2                  0.2000000      0.0000000
3 Manchester                0.8       0.8000000         0.2000000             0.1                  0.6000000      0.2000000
# to long format
library(reshape2)
res_long <- melt(res, id.vars='Group.1')
# plot
ggplot(data=res_long, aes(x=Group.1, y=value, fill=variable)) +
  geom_bar(stat="identity", position=position_dodge())

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM