R:在ggplot boxplot中剪裁传奇留下了两个独立的传说

时间:2017-02-03 06:38:21

标签: r ggplot2 legend boxplot

我使用ggplot2包创建了一个刻面的boxplot。 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"))

结果情节看起来非常好(如下所示)代表传奇。

enter image description here

在图例中,我想更改每个项目的标题和文本标签。标题应为“版本”,标签为“版本1.0”,......,“版本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"))

这会产生一个如下所示的箱线图。

enter image description here

可以看出有两个传说。所以,关闭但没有雪茄。任何关于如何解决这个问题的提示都表示赞赏。

2 个答案:

答案 0 :(得分:1)

我弄明白了这个问题。我将我的aestetic fill函数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"))

最终的情节看起来像这样,我很高兴。

Final plot

答案 1 :(得分:-1)

您正在使用fill参数进行分组和生成图例。您可以使用scale_color_manual覆盖现有图例

而不是scale_fill_manual