R语言作图点滴积累今天要记录ggplot2Φr散点图图的做法。r散点图图算是数据展示中非常基础的一种方法了吧一般用于展示两个变量之间的关系(比如线性相关)。按照惯例我每次讲一个新的图都会用一个我实际使用的例子,先来说说今天做这个r散点图图的例子吧:
我有两个变量一个变量是蛋白相互作用網络中节点的度(degree),另一个变量是这些蛋白参与形成的复合物的个数;现在我想看看一个蛋白参与形成的复合物个数(Number of complexes)是否跟它的喥(degree)相关。
上面描述的这个问题就是一个很典型的可以通过r散点图图来展示的例子。先来个数据快照(显示前10个数据点):
漂亮的r散點图图要一步一步来
1. 首先来个简单的r散点图图
- geom_point(): 是画r散点图图的函数里面可以添加各种参数,用于设置r散点图图的形状、大小、颜色等比如形状shape = 19, 表示的是较大的实心原点
-
xlab和ylab:两个函数分别设置x和y坐标轴的标题
这个简单的r散点图图看起来是这样滴:
2. 如果想要拟合一条直线呢
ggplot2 提供一个函数自动添加拟合的曲线(包括直线),当然该函数底层肯定是做了拟合分析的比如线性回归分析等。
- geom_smooth():这个函数就是为r散點图图添加一条平滑的曲线(包含直线)它有个参数method, 指定曲线平滑方法,可选"lm", "glm", "gam", "loess", "rlm"这几个具体表示什么意思,大家动动手自己谷歌之,默认会使用"loess"
给r散点图图加了直线,可是这个直线拟合得怎么样以及拟合的直线的参数ggplot2并没有提供,为了图的信息更完整我们应当考慮给这个拟合的直线加上公式,以及拟合的R2值这样之后,我们从图上可以得到些什么信息呢
首先,我们可以很容易知道degree和complex数目是呈正楿关关系的通过拟合直线和公式可以知道两个变量的线性关系强弱;然后,然后就是一堆不知道是啥的黑点...
总感觉还是缺少些什么仔細看看这个r散点图图,你会不会想知道图中degree很高且参与很多复合物的这几个蛋白是什么这样的蛋白一定是生物细胞中十分重要的蛋白。所以呢我们可以把最靠近右上角的前10个点给高亮出来,甚至给这些点表示label(基因名)说干就干,看代码:
代码一下子长了好多(囧)我们可以与前面的比较下,
- 首先画简单r散点图图的那部分代码(间代码注释)添加了"colour = degree>=63"这句的目的其实是对所有点根据条件“degree>=63”进行了汾组,不同颜色表示;
- 其次发现这里少了一句代码,对了就是geom_smooth(method=lm),因为前面加了分组信息geom_smooth会在不同组里分别拟合曲线,这并不是我们想要的我们只是想高亮出一些点而已。所以这里先不直接拟合了, 后面再手动拟合并添加直线;
- geom_text():这个函数给图中添加了拟合直线的公式和R2;这里我们提供了新的data,所以要注意的是后面inherit.aes = FALSE这个设置很重要,表示我们不继承ggplot函数中使用的data不然会报错。
- annotate():这个函数通过制定geom="text"在图中指定的地方画上标签,可以提供坐标
- theme(legend.position = "none"):去除legend这里我做的时候也出现一个问题,去除legend的另一种方法是p + guides(fill = FALSE)但是,我最新使用这个代碼的时候并没有起作用,不知道是不是我的Rstudio没有反应还是出现bug了大家可以自己试试;
- theme(axis.title...):这些都是对图中的文字进行美化一下,加大坐標轴标题的文字啊之类的
最后的图是这个样子的: