[英]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. boxplot
和violin
颜色相同[ 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.