繁体   English   中英

ggplot2中的图例有问题

[英]An issue with a legend in ggplot2

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

如果可以的话,您会给我很大帮助! 谢谢你的帮助。 对不起我的英语错误,实际上我是一个非本地人。

我认为问题来自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  "))

因此,您拥有的标签不相同,但外观相同。

在此处输入图片说明

暂无
暂无

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

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