R语言基础图形绘制——折线图


折线图

  • 简介
  • 1. 基础函数
  • 2. ggplot()函数
  • 3. 实践
  • 参考书籍


简介

折线图通常用来对两个连续变量之间的相互依存关系进行可视化。x轴可以是连续型变量,也可以是离散型变量。生物学中,通常用来表示不同药物剂量下实验对象的变化,或者是基因在不同类型组织或细胞中的表达模式。

1. 基础函数

简单示例:使用plot()函数,改变参数type,更多类型请查看帮助文档。

# 查看作图数据
BOD
#   Time demand
# 1    1    8.3
# 2    2   10.3
# 3    3   19.0
# 4    4   16.0
# 5    5   15.6
# 6    7   19.8
op <- par(no.readonly = T)
library(dplyr)
library(tidyverse)
par(mfrow = c(2,2))
BOD %>% {
  plot(demand ~ Time,data = .,type = "l",main = "A")
  plot(demand ~ Time,data = .,type = "b",main = "A")
  plot(demand ~ Time,data = .,type = "s",main = "A")
  plot(demand ~ Time,data = .,type = "o",main = "A")
}
par(op)

R语言基础图形绘制——折线图_第1张图片
目前,基础函数绘制多个分组折线图,需要借助lines()函数。

op <- par(no.readonly = T)
library(dplyr)
library(tidyverse)
par(mar = c(rep(4,4)))
BOD %>% {
  plot(demand ~ Time,data = .,type = "l",col = "red",lwd = 2)
  lines(1:7,seq(8,20,length.out = 7),col = "steelblue",lwd = 2)
}
par(op)

R语言基础图形绘制——折线图_第2张图片
多个分组时,可以借助for循环实现。

2. ggplot()函数

不加任何参数绘制简单折线图。

library(ggplot2)
BOD %>% {
  ggplot(.,aes(Time,demand))+geom_line()
}

R语言基础图形绘制——折线图_第3张图片

library(ggplot2)
library(patchwork)
BOD %>% {
  p1 <- ggplot(.,aes(Time,demand))+geom_line()
  p2 <- ggplot(.,aes(factor(Time),demand,group = 1))+geom_line()
  p1 + p2
}

为了比较因子型和连续型变量的不同,我们将两张图放在一起,可以发现右图中并没有6这个水平。当 x 对应于因子型变量时,必须使用命令 aes(group=1) 以确保 ggplot() 知道这些数据点属于同一个分组,从而应该用一条折线连在一起。
R语言基础图形绘制——折线图_第4张图片
相比于基础函数,ggplot绘制分组折线图简直不要太方便。%>%是管道符,需要加载dplyr包,**{}也可以理解为管道符,.**代表上一级生成的数据,p1 + p2 需要加载patchwork拼图包。

library(plyr)
ToothGrowth %>% 
  ddply(c("supp", "dose"), summarise, length=mean(len)) %>% {
  p1 <- ggplot(.,aes(x=dose, y=length, colour=supp)) + geom_line()
  p2 <- ggplot(.,aes(x=dose, y=length, linetype=supp)) + geom_line()
  p1 + p2
  }

R语言基础图形绘制——折线图_第5张图片
如图,分别将supp映射给了颜色和线条类型。
如果要添加数据点等其他类型,可以通过geom系列函数实现。

来吧,实践吧!

3. 实践

我使用的是自己的小鼠早期胚胎卵母细胞到8细胞各时期的测序数据,挑选了大约3300个基因。纵坐标使用的是log2(FPKM)值。
一起来看看ggplot绘制分组折线图有多方便吧

首先需要将数据组织成长数据格式。

head(oo1_long)

R语言基础图形绘制——折线图_第6张图片

x <- length(unique(oo1_long$t))
ggplot(data=oo1_long, aes(x=variable, y=value, group=t)) +
  geom_line(alpha = oo1_long$alpha,color = oo1_long$color,size = oo1_long$size)+
  theme_bw()+
  scale_y_continuous(expand = c(0,0))+
  scale_x_discrete(expand = c(0,0))+
  ylab(label = "log2(fpkm)")+
  xlab(label = "")+
  geom_text(aes(4,10.2,label =paste("cluster1-1", x-1 , sep = '\n')))

R语言基础图形绘制——折线图_第7张图片

其实上面的代码还可以再优化,使用aes()函数设置color等参数。


##侵权请联系作者删除!

参考书籍

[1] 《R数据可视化手册》

你可能感兴趣的:(R语言数据可视化,可视化,r语言)