R ggplot2中带有图例的问题
我问你是因为我对ggplot2中的图例有问题。 这是一个简化的例子R ggplot2中带有图例的问题,r,ggplot2,legend,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"),
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"))
库(ggplot2)
图书馆(数据集)
bp我认为,问题在于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 "))
bp因为你的标签不是唯一的,它不知道哪个填充和颜色应该得到什么标签。。我想是吧。所以,它提供了所有的组合。在任何情况下,在所有标签都相同的情况下创建图例都没有意义,是吗?抛开阿伦问题(我也有)不谈,您可以尝试在scale\u color\u manual
中设置guide=“none”
,尽管这样图例根本不会将这些轮廓颜色应用于图例符号。首先感谢您的回答。阿伦,是的。但实际上我的问题比这更复杂。事实上,我必须显示只有一些标签相同的图例;问题还是一样的。朱兰,谢谢你的建议,但我想在标签上保留方框图的颜色。是的,在我给你看的这个案子上,这并不尴尬。但我的真实案例是用不同颜色和形状的点来区分线条。梅尔,你能更清楚地解释一下你在寻找什么样的传奇吗?或者用任何绘图软件创建一个模型图例?目前,我既不确定您是否只想将“图例1”作为指南的标题而不是“实验条件”,也不清楚您想要多少个指南,每个指南包含多少个框。你在寻找多少种填充和轮廓颜色的组合,这些颜色意味着什么?因为正如juran所指出的,同一颜色组合的不同标签将是一个非常混乱的图形。。。所以,任何澄清都可能有所帮助!非常感谢你的回答Brian Diggs和你的技巧。所以没有办法避免这种行为。我不知道有什么办法可以避免这种行为。我想象有一个隐含的假设,即标签是独一无二的(因为如果它们不是独一无二的,为什么它们需要不同的美学),因此这可能不是可以直接避免的。
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 "))