R语言学习

使用ggplot一步一步画出复杂小提琴图

2021-01-12  本文已影响0人  Seurat_Satija

这是是生信技能树生信爆款入门课程R语言ggplot部分小洁老师布置的一个课外作业。为通过练习巩固课堂所学知识,现在开始尝试完成这个作业。

任务描述:使用ggplot绘出如下图形。

image.png

任务分解:

1.首先可以看出这个绘图使用的是iris内置数据集。我们先查看下这个数据集。

> iris
> dim(iris)
[1] 150   5
> class(iris)
[1] "data.frame"
> unique(iris$Species)
[1] setosa     versicolor virginica 
Levels: setosa versicolor virginica
> 150行5列的的数据框,Species列有个取值。
> 查看前几行
> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

2. 图片分析

经过仔细查看,可以看出,图片是由3个图层叠加而成,分别是最下层的小提琴图,中间的箱线图,和最上层的散点图。

3. 首先根据绘图模板绘出小提琴图。

小提琴图是由填充颜色的,和y轴一样,都是species。所以需要添加一个fill参数

library(ggplot2)
ggplot(data = iris,mapping = aes(x = Sepal.Width, y = Species)) +
  geom_violin(aes(fill= Species))
image.png

4. 添加箱线图

根据ggplot语法,直接使用+连接即可

library(ggplot2)
ggplot(data = iris,mapping = aes(x = Sepal.Width, y = Species)) +
  geom_violin(aes(fill= Species))+
  geom_boxplot()
image.png

5.添加扰动散点图

ggplot(data = iris,mapping = aes(x = Sepal.Width, y = Species)) +
  geom_violin(aes(fill= Species))+
  geom_boxplot()+
  geom_jitter()
image.png

6.映射点的形状

仔细观察发现作业中散点是有形状的,映射的也是species。
根据整体服从局部映射的原则,只需要在扰动参数设置即可。

library(ggplot2)
ggplot(data = iris,mapping = aes(x = Sepal.Width, y = Species)) +
  geom_violin(aes(fill= Species))+
  geom_boxplot()+
  geom_jitter(aes(shape= Species)) 
image.png

完成。

上一篇下一篇

猜你喜欢

热点阅读