Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2中带有图例的问题_R_Ggplot2_Legend - Fatal编程技术网

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

我问你是因为我对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"))
库(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  "))