主讲老师第二十二课:基础包绘图之 Figure3
关于 Figure 3 的绘制(Figure3.zip),我们使用基础包中的函数来进行绘制。首先来简单回顾一下基础包绘图的相关参数。
1.基础包绘图相关参数
在此,我们使用系统自带的内置数据集 iris 来进行演示接着,我们来简单的绘制一个点图和一个箱线图来看一下。
使用 plot()函数绘制一个简单的散点图,并根据 Species 的类型分配不同的颜色接着,使用 boxplot()函数绘制一个简单的箱线图。
接下来,以文章中的 Figure 3A 为例,我们来讲解一下基础包的绘图应用
2.Figure3A 内容的讲解
2.1 数据的读取与准备
根据文章展示的内容,图中展示患者的免疫评分与临床分期之间的相关性,因此我们需要将样品的临床信息和 ESTIMATE 评分先进行读取。
2.1.1 读取数据
首先,我们将前期保存的临床数据和患者免疫评分数据移动到工作目录下,并读取进来但是,对比发现,临床数据包含 585 例样本,而免疫评分数据仅有 501 例,因此,我们需要对其进行相应的清洗与整理
2.1.2 数据的清洗与整理
首先,我们对免疫评分的样本和临床数据中的样本取交集,提取它们相同样本的信息随后,根据相同样本信息,分别对免疫评分和临床信息进行取子集。
最终,我们一共得到了 501 例样本,接着,由于此时 est 和 sinfo 两个数据集中,样本的顺序是相同的,因此我们可以直接将临床信息中的 Stage 和 T、N、M 分期信息匹配添加到 est 数据集中。
此时,在 est 数据集中,可以看到,除了四个评分以外,还包含了临床的分期信息。
2.1.3 数据预处理
下面,我们对分期数据进一步处理。
可以看到,在目前的数据中,分期信息仍然十分混乱,命名不统一,我们需要对其进行统一命名,按照文章图中展示的信息一样,我们将分期统一分成 I,II,III 和 IV 四个分期重新命名后,再次使用 table()函数对结果进行统计。
同样的,我们对 T,N 和 M 分期也进行分别处理,这里我们使用的是 substr()函数来进行提取分期信息,并且将 TX,NX 和 MX 归为 NA 缺失信息。
到此,我们查看一下处理后的结果信息。
2.2 绘制箱线图并做统计
数据都整理完成后,接下来要开始正式的画图,首先,我们来设置一下四种颜色。
当然,大家在其他绘图时可以根据变量的水平个数适当调整颜色量,并且,将 StromalScore 设置为变量 target.var 。
在分析前,和之前 TCGA 数据清洗一样,我们先拿其中一个变量 Stage 来进行绘制一下,成功以后可以再修改为循环语句,绘制四个分期参数。首先提取 target.var 和分期 i 两列,生成一个新的数据框,并对它们的列名重新命名。
通过 length()函数可以看到,在 variable 变量中,一共包含 4 个值,也就是我们之前设置的 I,II,III 和IV 四个分期。随后,我们来进行统计分析,根据变量的数量,如果变量水平大于三个,则用 Kruskal-Wallis 检验,否则的话则使用 wilcoxon 检验,根据这个原理,我
们来依据数量 n.var 设置统计分析方法
最终,得到结果 P 值为 0.09,接着,使用 paste0()函数将其转换为图中需要的格式准备工作到此,统计分析也基本完成了,接下来开始绘图参数的设置。
1.根据 range()函数,获得 y 轴的最大值和最小值,进而设置 y 轴的上限和下限。
2.接着,设置好画板
我们使用基础包中的 boxplot()函数来进行绘制,对 data,ylim,col,以及 ylab 等参数进行设置。
其中颜色根据需要的变量数量来进行选取,这样,一张初步的箱线图就出现了
3.接下来,我们来画一下用于添加 p 值的线
首先用 lines() 函数画一条水平线,然后是通过 arrows() 函数画两条竖线
4.到此,还缺一个 p 值
接着把之前准备好的 p 值形式添加进去,考虑到不同分期的数量不同,这里使用了一个判断语句,通过ifelse()函数来进行设置这样一张完整的图就绘制完成了。
一个变量的代码调试成功以后,接着我们就将其改写成为一个循环函数,对变量 i 的取值进行调整即
可,最终得到整个的分析结果
通过 for 循环函数,将前面的绘图代码纳入循环中。
直接使用 dev.copy2pdf()函数保存至当前目录下,最终,整个 Figure 3 的结果就保存为pdf 格式文件了,使用 AI 进行拼图即可完成最后的操作。最后呢,另外补充一个基础绘图之中的知识点内容。
即绘图画板中的相关基础参数,简单介绍几个,后面会经常遇到
3.par()函数的 bty 参数-控制绘图边框
在 par()函数中,参数 bty 可以看作 box type 的缩写,其能控制绘图边框的显示,取值范围为 o, l, u, c,], n 等,简单看一下这几个参数的使用
3.1 参数 bty = "o"
参数 bty = "o" 为默认参数,代表四个方框的线。
3.2 参数 bty = "l"
参数 bty = "l" 代表边框的形状和 L 类似, 只绘制 x 轴和 y 轴的边框。
3.3 参数 bty = "c"
参数 bty = "c" 代表边框的形状和字母 C 类似, 只在上,左,下三个方向边绘制边框
3.4 参数 bty = "]"
参数 bty = "]" 代表边框的形状和]类似,只在上,右,下三个方向绘制边框。
3.5 参数 bty = "u"
参数 bty = "u" 代表边框的形状和字母 U 类似,只在左,下,右三个方向绘制边框。
3.6 参数 bty = "n"
参数 bty = "n" 代表没有边框,几个参数十分形象,方便记忆。
4.par()函数 mgp 参数-控制坐标轴的位置
mgp 参数的值为长度为 3 的一个向量,默认值为 c(3, 1, 0),通过 3 个数值控制的元素不同位置1). 第一个数值:3,控制 xlab 和 ylab 的位置,来看下具体的效果:
注意观察,xlab 和 ylab 的位置,我分别设置了 1 到 3,从图中也可以看出来,影响的元素的包括 xlab,ylab。
2).第二个数值: 1,影响的是坐标轴标签的位置
可以看出,第二个数值影响的元素为坐标轴对应的标签的位置
3).第三个数值:0,影响的是坐标轴的轴线的位置
可以看出,第三个数值影响的元素为坐标轴轴线的位置。先就介绍其中两个参数,如果对其中兴趣的可以自己课后找资料学习一下,当然,这里的参数搭配已经基本是调试好了的,你也可以直接使用这句话。