r - 如何使用 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 轴中显示为不同的组,如下所示。有人可以在这方面帮助我吗?提前致谢。
解决方案
如果你写出你要放入 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 建议的结果),那么我们可以更轻松地提供帮助。
推荐阅读
- java - 有什么方法可以从 Firestore 获取 Objects 的值?
- laravel - Laravel 循环遇到内存问题
- visual-c++ - 为什么 vc++ 的行为不像我的计算器
- java - 具有适当终止条件的 java.lang.StackOverflowError 的原因是什么?
- for-loop - 在 Julia 中使用 for 循环提取数据的问题
- assembly - 如何使用emu8086读取硬件输入
- python - 廉价航班项目/按钮元素返回“NoneType”对象错误 Selenium python
- .net - 通过串行连接发送文件
- r - makeMPIcluster 中的错误:集群已存在 1
- discord.js - 如何删除特定频道