ggplot2中的图例问题

时间:2013-05-17 13:57:43

标签: r ggplot2 legend

我问你,因为我在ggplot2中遇到了一个传奇问题。 这是一个简化的案例

library(ggplot2)
library(datasets)

bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group, color=group)) + geom_boxplot()

bp +scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"), 
                      name="Experimental\nCondition",
                      breaks=c("ctrl", "trt1", "trt2"),
                      labels=c("legend 1", "legend 2", "legend 3"))  +
    scale_color_manual(values=c("black", "red", "green"), 
                   name="Experimental\nCondition",
                   breaks=c("ctrl", "trt1", "trt2"),
                   labels=c("legend 1", "legend 2", "legend 3"))

在这种情况下,我的图例标签是:“图例1”,“图例2”和“图例3”

现在,我想为我的传奇提供相同的标签:“传奇1”(还有三个传奇框)。 所以我的代码是:

bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group, color=group)) + geom_boxplot()

bp +scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"), 
                      name="Experimental\nCondition",
                      breaks=c("ctrl", "trt1", "trt2"),
                      labels=c("legend 1", "legend 1", "legend 1"))  +
    scale_color_manual(values=c("black", "red", "green"), 
                   name="Experimental\nCondition",
                   breaks=c("ctrl", "trt1", "trt2"),
                   labels=c("legend 1", "legend 1", "legend 1"))

但是,显然这不是我想要的,因为从现在开始,我有9个传奇盒子。 因此我的问题是:在这种情况下,我是否可以拥有一个带有三个盒子的图例(每个盒子图每个盒子),但是图例的标签可能是相同的? 另外,为什么ggplot2像这样处理我的代码?

如果你能帮助我,你会帮助我很多! 谢谢你的帮助。 请原谅我的英语错误,实际上我是非本地人。

1 个答案:

答案 0 :(得分:1)

我认为,问题出现在ggplot如何将传说结合在一起。如果它们具有相同的标题和标签,则可以将它们组合在一起。我猜测存在合并,当给定重复标签时,有效地创建外连接(所有可能的组合混合)。我不确定是否有正确的方法来解决这个问题,但这是一个有效的黑客:

bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group, color=group)) + geom_boxplot()
bp +scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"), 
                      name="Experimental\nCondition",
                      breaks=c("ctrl", "trt1", "trt2"),
                      labels=c("legend 1", "legend 1 ", "legend 1  "))  +
    scale_color_manual(values=c("black", "red", "green"), 
                   name="Experimental\nCondition",
                   breaks=c("ctrl", "trt1", "trt2"),
                   labels=c("legend 1", "legend 1 ", "legend 1  "))

所以你的标签不一样,但看起来一样。

enter image description here