这是是生信技能树生信爆款入门课程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.添加扰动散点图
可以看出点都是散开的,不能直接用geom_point,应使用geom_jitter()。
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
完成。
网友评论