繁体   English   中英

创建一个小提琴图,其中小提琴图和箱线图在 ggplot2 中具有不同的颜色

[英]Create a violin plot where the violin and boxplot are of different colours in ggplot2

我正在尝试创建一个分组的小提琴图(见图),我正在为四个分类变量绘制 3 个级别。 除了盒子与后面更宽的小提琴图的颜色相同使它们难以查看之外,该图显示出很好的数据。 理想情况下,我希望所有的盒子始终保持白色。 我知道框改变颜色的原因是响应我选择的fill 我想知道是否有办法将geom_violin的填充与geom_violin geom_boxplot

这是我正在使用的精简代码

p <- ggplot(df, aes(x=metric, y=value, fill=variable))+
geom_violin(width=0.9, position=position_dodge(0.75), bw=1.5)+
geom_boxplot(width=0.3, outlier.shape = NA, position=position_dodge(0.75))+
scale_fill_manual(values=c("gray50", "gray75", "gray100"),
                breaks=c("res.error.random", "res.error.increase", "res.error.decrease"),
                labels=c("random cost", "overestimated", "underestimated"))

我正在创建的情节示例

一切都取决于你在哪里写fill

  • ggplot(aes()) :将关注所有新图层。
  • 内部geom_boxplot(aes()) :仅涉及这一层。

将它写在aes很重要,特别是如果您想稍后使用scale_fill_manual()

这是生成数据的完整答案:

df <- data.frame(var1 = sample(c("A", "B", "C"), 50, replace =T),
             var2 = sample(c("group1", "group2", "group3"), 50, replace =T),
             value = sample(c(1,2,3,4,5,6,7,8,9,10), 50, replace =T))

1. boxplotviolin颜色相同[ ggplot(aes(fill =)) ]:

ggplot(df, aes(x=var1, y=value, fill = var2, group = interaction(var1,var2))) +
geom_violin(width=0.9, position=position_dodge(0.75), bw=1.5) +
geom_boxplot(width=0.3, outlier.shape = NA, position=position_dodge(0.75))

在此处输入图片说明


2.不同的颜色[ geom_violin(aes(fill =)) ] :

ggplot(df, aes(x=var1, y=value, group = interaction(var1,var2)))+
geom_violin(width=0.9, position=position_dodge(0.75), bw=1.5, aes(fill = var2))+
geom_boxplot(width=0.3, outlier.shape = NA, position=position_dodge(0.75), fill = "white")

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM