首页 > 解决方案 > 如何使用 ggplot2 重新创建以下 Box and Whisker Plot?

问题描述

我想使用 ggplot2 重新创建以下图。我的数据文件是这样的

共生 重复 主机转换 损失
3 4 6 1
3 3 7 0
3 3 7 0
5 2 6 3
5 2 6 3
5 2 6 3
5 2 6 3
5 2 6 3

我的问题是如何绘制它。作为一个例子,当我尝试使用ggplot(GGplot_Test, aes(Event, Duplications)) + geom_boxplot()它使用重复作为 Y 轴时。我想要的是在每列中给出的值显示为 Y 轴,而事件、重复、主机切换和丢失在​​ X 轴中显示为不同的组,如下所示。有人可以在这方面帮助我吗?提前致谢。

盒须图 Shi et al

标签: rggplot2

解决方案


如果你写出你要放入 ggplot 的参数名称,你就会明白为什么你的代码是错误的。 ggplot(data = GGplot_Test, mapping = aes(x = Event, y = Duplications)) + geom_boxplot()

要使用ggplot,您首先需要将数据转换为整洁的长格式。您将要使用tidyr::pivot_longer来获取分组列。此外,您的数据似乎仅适用于一种物种,例如沙粒病毒科。

所以,首先,使用pivot_longer()来获取看起来像这样的数据

名称值

共生 3

共生 3

共生 3

共生 5

...

重复 4

重复 3

...

然后你可以使用 ggplot

ggplot(data = GGplot_Test, mapping = aes(x = name, y = value)) + geom_boxplot()

如果你可以组合你的数据,让它看起来像

种名值

竞技场共种 3

竞技场共种 3

竞技场共种 3

竞技场共种 5

...

竞技场重复 4

竞技场重复 3

...

Ateri Cospeciation 6

Ateri Cospeciation 5

Ateri Cospeciation 4

Ateri Cospeciation 5

...

Ateri 重复 6

Ateri 重复 5

...

然后您可以在 ggplot 中使用构面来获取所有图形 ggplot(data = GGplot_Test, mapping = aes(x = name, y = value)) + geom_boxplot() + facet_wrap(cols = vars(species))

最后,如果您粘贴您的数据(复制并粘贴dput(head(Ggplot_Test))@r2evans 建议的结果),那么我们可以更轻松地提供帮助。


推荐阅读