FigDraw 7. SCI 文章绘图之折线图 (Lineplot)

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第1张图片

点击关注,桓峰基因

桓峰基因

生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你

110篇原创内容

公众号

桓峰基因的教程不但教您怎么使用,还会定期分析一些相关的文章,学会教程只是基础,但是如果把分析结果整合到文章里面才是目的,觉得我们这些教程还不错,并且您按照我们的教程分析出来不错的结果发了文章记得告知我们,并在文章中感谢一下我们哦!

公司英文名称:Kyoho Gene Technology (Beijing) Co.,Ltd.

如果您觉得这些确实没基础,需要专业的生信人员帮助分析,直接扫码加微信nihaoooo123,我们24小时在线!!

桓峰基因公众号不断推出R语言绘图系列教程,专门为没有绘图基础的老师同学准备,从简易难,一步一步做出来 CNS 级别靓图,最重要的是每个教程已经开始配有视频教程,可以直接关注桓峰基因视频号或者关注桓峰基因B站教程:

目前整理出来的教程目录如下:

FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色
FigDraw 2. SCI 文章绘图必备 R 语言基础
FigDraw 3. SCI 文章绘图必备 R 数据转换
FigDraw 4. SCI 文章绘图之散点图 (Scatter)
FigDraw 5. SCI 文章绘图之柱状图 (Barplot)
FigDraw 6. SCI 文章绘图之箱线图 (Boxplot)

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)


前言

折线图同样是应用非常广泛的统计图之一,通过折线图可以反映某种现象的趋势。通常折线图的横坐标是为时间变量,纵坐标则是一般性的数值型变量,当然,折线图也允许横坐标为离散型数值和数值型数值。下面来解释一下关于折线图的绘制。

基本参数

geom_line()绘制折线图,参数不是很多,基本上就是五个用于调整线粗细,颜色,分组,线条样式,以及分组等。每个参数详细的说明如下:

  1. alpha:透明度。因为透明度不容易区分,所以一般不推荐将透明度用于分组;

  2. size:折线粗细。一般不推荐用折线粗细分组;

  3. linetype:折线类型;

  4. colour:调色;

  5. group:分组。

绘制折线图和堆积面积图

下面我们就绘制有关时间序列的折线图。

1. 数据读取

该数据集来自上的美国经济时间序列数据。经济学是“宽”的形式,而economics_long是“长”的形式。一个包含574行和6个变量的数据框架:数据收集月份pce个人消费支出,以十亿美元计,https://fred.stlouisfed.org/series/PCE pop总人口,以千计,https://fred.stlouisfed.org/series/POP psaving个人储蓄率,https://fred.stlouisfed.org/series/PSAVERT/最高失业持续时间中位数,一个类tbl_df的对象(继承自tbl, data.frame),有2870行和4列。

library(ggplot2)
library(patchwork)
data(economics)
head(economics)
## # A tibble: 6 x 6
##   date         pce    pop psavert uempmed unemploy
##                    
## 1 1967-07-01  507. 198712    12.6     4.5     2944
## 2 1967-08-01  510. 198911    12.6     4.7     2945
## 3 1967-09-01  516. 199113    11.9     4.6     2958
## 4 1967-10-01  512. 199311    12.9     4.9     3143
## 5 1967-11-01  517. 199498    12.8     4.7     3066
## 6 1967-12-01  525. 199657    11.8     4.8     3018
data("economics_long")
head(economics_long)
## # A tibble: 6 x 4
##   date       variable value  value01
##                
## 1 1967-07-01 pce       507. 0       
## 2 1967-08-01 pce       510. 0.000265
## 3 1967-09-01 pce       516. 0.000762
## 4 1967-10-01 pce       512. 0.000471
## 5 1967-11-01 pce       517. 0.000916
## 6 1967-12-01 pce       525. 0.00157

2. 绘制折线图

我们从绘制单条折线图到最后的堆积面积图组合等,由简入深地讲解每个参数的细节。

1. 单条折线图

ggplot(economics, aes(date, unemploy)) + geom_line() + theme_bw()

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第2张图片

折线图中添加标记(点)

当数据点密度比较小或采集分布(间隔)不均匀时,为折线图做上标记将会产生非常好的效果。处理的方法非常简单,只需在折线图的基础上再加上geom_point()函数即可。从图中就可以非常明显的看出,刚开始采集的点分布非常散,而后面采集的点就比较密集,这也有助于对图的理解和应用。

ggplot(economics, aes(date, unemploy)) + geom_line() + geom_point() + theme_bw()

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第3张图片

2. 多条折线图

上面绘制的都是单条这折线图,对于两个或两个以上的折线图该如何绘制呢?也很简单,只需将其他离散变量赋给诸如colour(线条颜色)和linetype(线条形状)的属性即可,具体参见下文例子。

不同的线条颜色color

ggplot(economics_long, aes(date, value01, color = variable)) + geom_line() + theme_bw()

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第4张图片

不同的线条样式linetype

ggplot(economics_long, aes(date, value01, linetype = variable)) + geom_line() + theme_bw()

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第5张图片

自定义颜色,线条,点的形状,点的填充色等,如下:

p <- ggplot(economics_long, aes(date, value01, linetype = variable, colour = variable,
    shape = variable, fill = variable)) + geom_line() + geom_point(size = 0.2) +
    theme_classic()  #绘制线图和点图
p

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第6张图片

用色彩表现分组变量是最常用的形式,默认配色方案只需要调用就行。可以用于折线图的DIY配色函数为 scale_colour_manual(),参数包括:palette:调色板设计,里面包含很多颜色,供values = 调用。

values:色彩值,可以是cols <- c(“a” = “red”, “b” = “blue”, “c” = “darkgreen”),此时分组变量和色彩映射一一对应;也可以是cols <- c( “red”, “blue”, “darkgreen”),此时分组变量和色彩依靠顺序进行映射。

labels:分组标签,各个颜色代表的组别。

name:legend的名字。

breaks:设置组别,元素需要和labels一样多。

limits:影响的是图形上显示的元素,如果limits里面有4个元素,但实际只有2个分组变量,那么会出现两个NA值。

其中,colour设置面积图边框的颜色;size设置边框线的粗细;alpha设置面积图和边框线的透明度。

同样需要注意的是,在绘制多条折线图时,如果横坐标为因子,必须还得加上‘group=分组变量’的参数,否则报错或绘制出错误的图形。

以上绘制的折线图,均采用默认格式,不论是颜色、形状、大小还是透明度,均没有给出自定义的格式。其实ggplot2包也是允许用户根据自己的想法设置这些属性的。

  1. 自定义线条或点的颜色–scale_color_manual()

  2. 自定义线条类型–scale_linetype_manual()

  3. 自定义点的形状–scale_shape__manual()

  4. 自定义点的大小或线条的宽度–scale_size__manual()

  5. 自定义透明度–scale_alpha__manual()

自定义参数说明可以通过自定义的方式,想怎么改就可以怎么改。前提是aes()属性的内容与自定义的内容对应上。

p1 <- p + scale_linetype_manual(values = 1:5)  #自定义线条类型

p2 <- p + scale_color_manual(values = c("steelblue", "darkred", "red", "grey", "green"))  #自定义颜色

p3 <- p + scale_shape_manual(values = c(21, 23, 16, 18, 20))  #自定义点形状

p4 <- p + scale_fill_manual(values = c("red", "black", "purple", "yellow", "green"))  #自定义点的填充色
p/(p1 | p2)/(p3 | p4)

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第7张图片

3. 绘制堆积面积图

绘制堆叠的面积图只需要geom_area()函数再加上一个离散变量映射到fill就可以轻松实现,先忙咱小试牛刀一下。

1. 单个堆积面积图

修改填充色fill和顶部加线color,如果需要为每一块面积图的顶部加上一条直线,可以通过如下两种方式:

p1 <- ggplot(economics, aes(date, unemploy)) + geom_area() + theme_bw()

p2 <- ggplot(economics, aes(date, unemploy)) + geom_area(color = "red", fill = "grey") +
    theme_bw()
p1 | p2

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第8张图片

2. 多个堆积面积图

其中,colour设置面积图边框的颜色;size设置边框线的粗细;alpha设置面积图和边框线的透明度。

p1 <- ggplot(economics_long, aes(date, value01, fill = variable)) + geom_area() +
    guides(fill = guide_legend(reverse = TRUE)) + theme_bw()
p1

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第9张图片

添加堆积面积图顶部的线条

p2 <- ggplot(economics_long, aes(date, value01, fill = variable)) + geom_area(colour = "black",
    size = 0.2, alpha = 0.5) + guides(fill = guide_legend(reverse = TRUE)) + theme_bw()
p2

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第10张图片

3. 百分比堆积面积图

在面积图中,也可以方便快捷的绘制出百分比堆积面积图,具体操作如下:

p3 <- ggplot(economics_long, aes(date, value01, fill = variable)) + geom_area(alpha = 0.5,
    position = "fill") + guides(fill = guide_legend(reverse = TRUE)) + theme_bw()
p3

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第11张图片

添加百分比堆积面积图顶部的线条

p4 <- ggplot(economics_long, aes(date, value01, fill = variable)) + geom_area(position = "fill",
    colour = "black", size = 0.2, alpha = 0.5) + guides(fill = guide_legend(reverse = TRUE)) +
    theme_bw()
p4

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第12张图片

4. 堆积面积图组合

我们将堆积面积图进行组合,如下:

(p1 | p2)/(p3 | p4)

FigDraw 7. SCI 文章绘图之折线图 (Lineplot)_第13张图片

你可能感兴趣的