ggplot2条形图,其中包含几个具有相同级别的分类变量

时间:2016-07-05 05:31:13

标签: r plot

最近我学会了使用stat_summary创建带有错误栏的条形图,如下所示。

library(ggplot2)
posn.d <- position_dodge(1.82)
ggplot(mtcars, aes(x=cyl, y=wt, col = factor(am), fill = factor(am)))+
         stat_summary(fun.y = mean, geom = "bar", position = posn.d)+
         stat_summary(fun.data = mean_se, fun.args = list(mult = 1), geom = "errorbar", width = 0.1, position =posn.d)

enter image description here

但我想做的却有所不同。 对于具有相同级别的组类别,有两个以上的变量。

(例如, 组:&#34;选项A&#34;,&#34;选项B&#34;,&#34;选项C&#34;。

每组的水平:0,1)

示例数据:

mtcars$OptionA=sample(0:1, 32, replace = T)
mtcars$OptionB=sample(0:1, 32, replace = T)
mtcars$OptionC=sample(0:1, 32, replace = T)
mtcars

我想制作一个这样的情节: enter image description here

我可以用R制作这样的情节吗? 任何帮助都会很棒。谢谢:))

1 个答案:

答案 0 :(得分:0)

我认为你必须在绘图之前准备好你的数据。具体来说,由于OptionAOptionBOptionC具有相同的值,您可以创建一个变量option,将它们全部合并,然后创建变量value包含所有可能的值(0或1)。翻译成代码可能是这样的:

library(dplyr)
library(tidyr)

test = mtcars %>% select(mpg, OptionA:OptionC)

#present your test in long format
test_long <- gather(test, option, value, OptionA:OptionC)

> head(test_long)
   mpg  option value
1 21.0 OptionA     0
2 21.0 OptionA     0
3 22.8 OptionA     0
4 21.4 OptionA     0
5 18.7 OptionA     0
6 18.1 OptionA     1

然后,您可以创建bar_plot展示mpgoption并填写value

#plot
a = ggplot(test_long, aes(option, mpg, fill = value)) +   
  geom_bar(position = "dodge", stat="identity")
a

输出为:enter image description here

我希望它有所帮助。