R:ggplot boxplot 中的剪裁图例留下两个单独的图例

R: tailoring legend in ggplot boxplot leaves two separate legends

我使用 ggplot2 包创建了多面箱线图。 R代码如下:

version.labs <- c(`1`="Version 1.0", `2`="Version 2.0", `3`="Version 3.0", `4`="Version 4.0", `5`="Version 5.0")
ggplot(df, aes(x=factor(Subsystem), y=Risk.value, fill=factor(Version)) ) + 
  geom_jitter(position=position_jitter(width=0.3, height=0.2), aes(colour=factor(Version)), alpha=0.9) +
  geom_boxplot(alpha = 0.5, show.legend = FALSE) + facet_grid(.~Version, labeller = as_labeller(version.labs)) +
  theme(strip.text.x = element_text(size=9, color="black", face="bold"))

除图例外,结果图看起来相当不错(如下所示)。

在图例中,我想更改每个项目的标题和文本标签。标题应该是 "Version" 和标签 "Version 1.0", ..., "Version 5.0".

我尝试了各种方法,但它们都添加了一个新的单独的图例。新的图例看起来不错,但旧的图例仍然存在,看起来不太好,我找不到删除它的方法。

我最后尝试的是添加 scale_color_manual() 函数,如下所示:

scale_color_manual(name = "Version", labels=c("v1.0","v2.0","v3.0","v4.0","v5.0"), values=c("grey","blue","green","red","black"))

这会生成如下所示的箱线图。

可以看出有两个图例。所以,关闭但没有雪茄。任何有关如何解决此问题的提示都将受到赞赏。

您正在使用 fill 参数进行分组和生成图例。可能不是 scale_color_manual 你可以使用 scale_fill_manual 来覆盖现有的图例

我想通了。那是我把我的 aestetic 填充函数 aes() 放在了一般的 ggplot() 中。这应该放在 geom_boxplot() 中,否则一般的 ggplot()geom_boxplot() 都会添加图例。所以我解决了这个问题,然后我使用 guides() 更新了 geom_boxplot() 图例中的标题。完整代码如下:

ggplot(df, aes(x=factor(Subsystem), y=Risk.value) ) + 
  geom_jitter(position=position_jitter(width=0.3, height=0.2), aes(colour=factor(Version)), alpha=0.9) +
  geom_boxplot(alpha = 0.5, show.legend = FALSE, aes(fill=factor(Version))) + facet_grid(.~Version, labeller = as_labeller(version.labs)) +
  theme(strip.text.x = element_text(size=9, color="black", face="bold")) +
  labs(x="Risk distribution per software version and subsystem type", y="Normalized risk value") + 
  guides(color=guide_legend("Version"))

最后的剧情是这样的,我很满意