R ggplot barplot;根据两个单独的变量填充

时间:2012-06-23 15:23:25

标签: r ggplot2

一张图片说的千言万语。如您所见,我的fill基于变量variable

在每个条形图中,有多个数据实体(黑色边框),因为离散变量complexity使它们成为唯一的。我想要找到的东西使得酒吧的每个部分比当前的外观更加可辨。如果它像阴影那样是优选的。

http://s12.postimage.org/ltgs677ul/snapshot2.png

这是一个示例(不同的数据集,因为导入了原始数据集):

dat <- read.table(text = "Complexity Method Sens Spec MMC
1 L Alpha 50 20 10
2 M Alpha 40 30 80
3 H Alpha 10 10 5
4 L Beta 70 50 60
5 M Beta 49 10 80
6 H Beta 90 17 48
7 L Gamma 19 5 93
8 M Gamma 18 39 4
9 H Gamma 10 84 74", sep = "", header=T)

library(ggplot2)
library(reshape)
short.m <- melt(dat)
ggplot(short.m, aes(x=Method, y= value/100 , fill=variable)) + 
    geom_bar(stat="identity",position="dodge", colour="black") + 
    coord_flip()

3 个答案:

答案 0 :(得分:27)

这远非完美,但希望是朝着正确的方向迈出的一步,因为它被variable躲过了,但仍然设法以某种方式代表Complexity

ggplot(short.m, aes(x=Method, y=value/100, group=variable, fill=variable, alpha=Complexity,)) + 
  geom_bar(stat="identity",position="dodge", colour="black") +
  scale_alpha_manual(values=c(0.1, 0.5, 1)) +
  coord_flip()

enter image description here

答案 1 :(得分:1)

很难确定没有可重现的例子,正如Chase所说,但添加alpha=complexity可能会有效:

ggplot(short.m, aes(x=Method, y= value/100 , fill=variable, alpha=complexity)) +
geom_bar(stat="identity",position="dodge", colour="black") + coord_flip()

答案 2 :(得分:0)

您可能需要将Methodvariable因素分开。这有两种方法:

使用facet_wrap()

    ggplot(short.m, aes(x=variable, y=value/100, fill=Complexity)) + 
    facet_wrap(~ Method) + geom_bar(position="stack", colour="black") +
    scale_alpha_manual(values=c(0.1, 0.5, 1)) + coord_flip()

在x轴上使用两者:

    ggplot(short.m, aes(x=Method:variable, y=value/100, group=Method, fill=variable, alpha=Complexity,)) + 
    geom_bar(stat="identity", position="stack", colour="black") +
    scale_alpha_manual(values=c(0.1, 0.5, 1)) + coord_flip()