0

我问你是因为我对 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 会这样对待我的代码?

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

4

1 回答 1

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  "))

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

在此处输入图像描述

于 2013-05-17T21:08:17.567 回答