使用ggplot绘制完整数据和子集的x轴。

4

我将以小提琴图为例,但这个问题也适用于许多其他ggplot类型。

我知道如何按因子沿x轴对数据进行子集化:

ggplot(iris, aes(x = Species, y = Sepal.Length)) +
  geom_violin() +
  geom_point(position = "jitter")

violin plot by species

我只知道如何绘制完整的数据集:

ggplot(iris, aes(x = 1, y = Sepal.Length)) +
  geom_violin() +
  geom_point(position = "jitter")

violin plot full data

我的问题是:是否有一种方法可以在同一图中并排绘制完整数据和按因子分组的子集?换句话说,对于鸢尾花数据,我能否制作一个小提琴图,其沿x轴同时具有“完整数据”和“山鸢尾”?
这将使得可以比较完整数据集和该数据集的子集的分布。如果不可能,请提出任何更好的可视化建议:)
感谢任何想法!
1个回答

8

使用:

ggplot(iris, aes(x = "All", y = Sepal.Length)) +
  geom_violin() +
  geom_point(aes(color="All"), position = "jitter") +
  geom_violin(data=iris, aes(x = Species, y = Sepal.Length)) +
  geom_point(data=iris, aes(x = Species, y = Sepal.Length, color = Species), 
             position = "jitter") +
  scale_color_manual(values = c("black","#F8766D","#00BA38","#619CFF")) +
  theme_minimal(base_size = 16) +
  theme(axis.title.x = element_blank(), legend.title = element_blank())

提供:

在此输入图片描述


1
谢谢,非常好的答案,感谢您强调可以在x轴上输入“全部”的能力! - KerrBer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接