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"))
最后的剧情是这样的,我很满意
我使用 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"))
最后的剧情是这样的,我很满意