R科研繪圖01——基礎折線圖

2021-03-06 生信菜鳥筆記
簡介

折線圖通常用來對兩個連續變量之間的相互依存關係進行可視化。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)

目前,基礎函數繪製多個分組折線圖,需要藉助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)

多個分組時,可以藉助for循環實現。

2. ggplot()函數

不加任何參數繪製簡單折線圖。

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

在這裡插入圖片描述
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() 知道這些數據點屬於同一個分組,從而應該用一條折線連在一起。相比於基礎函數,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
  }

如圖,分別將supp映射給了顏色和線條類型。如果要添加數據點等其他類型,可以通過geom系列函數實現。

來吧,實踐吧!

3. 實踐

我使用的是自己的小鼠早期胚胎卵母細胞到8細胞各時期的測序數據,挑選了大約3300條轉錄本。縱坐標使用的是log2(FPKM)值。一起來看看ggplot繪製分組折線圖有多方便吧

首先需要將數據組織成長數據格式。

head(oo1_long)

在這裡插入圖片描述
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')))

在這裡插入圖片描述

其實上面的代碼還可以再優化,使用aes()函數設置color等參數。

總結

ggplot2是一款強大的R繪圖包,相較於已被封裝好的在線軟體等其他工具,其具有更多的靈活性和可操作性。

光看不練假把式,必須要行動起來!

參考書籍

[1] 《R數據可視化手冊》

相關焦點

  • 手把手教你輕輕鬆鬆繪圖:Excel作圖系列之 折線圖
    ,圖都標記為Figure或Fig,本公眾號的主旨是為大家講解科研過程中的作圖步驟,以及相關的問題!軟體:Excel 20198.同樣小編展示幾種效果調整後的變形折線圖:
  • R語言繪圖|折線圖畫法,如何畫出你滿意的圖?
    作者:丁點helper來源:丁點幫你上篇文章中,我們用世界銀行的例子給大家介紹了散點圖怎麼畫,那折線圖呢?繪製折線圖如果將散點圖上的點從左往右連接起來,就會得到一個折線圖。今天我們以R中自帶的Orange 數據集為例,來學習折線圖的畫法,該數據集中包含五種橘樹的樹齡和年輪數據。要考察橘樹的年輪如何隨著樹齡變化,先畫個散點圖看看:# 先看第一種橘樹,提取第一種樹的數據,保存在t1中t1 <- subset(Orange, Tree==1)戳此複習subset()函數的功能。
  • 手把手教學,R語言基礎繪圖
    R軟體可以從其官網(https://www.r-project.org/)下載安裝。R提供了超過4000個包,這些包可以實現很多不同的功能,而R自帶了一系列的默認包,利用這些默認包,就可以畫出一些基礎的圖形。
  • R語言畫展基礎篇-折線圖
    做折線圖,以觀察兩棵樹的高度變化情況 #做一個基礎版本的折線圖plot(height_1 ~ months, type = "b")lines(height_2 ~ months, type = "b")
  • 微課|ggplot2: 折線圖
    使用ggplot2繪製折線圖.折線圖整體美化.繪製平滑折線圖.繪製多變量折線圖.
  • 【R畫圖】手把手教你使用ggplot2繪製折線圖
    折線圖同樣是應用非常廣泛的統計圖之一,通過折線圖可以反映某種現象的趨勢。
  • Python氣象繪圖教程(三)
    前面已經講了很多關於折線圖的常用參數,但是像顏色關鍵詞在黑白文獻中應該如何修改呢?這兩張圖就是典型的折線圖,折線圖在表示某個氣象數據隨時間變化特點時相對視覺觀感更好。下面講講第一張圖的繪製(第二張難度主要是反映在數據處理上),在前面初步接觸折線圖繪製時,在引入庫包後有一個步驟叫做虛擬數據,這是因為還沒有學習讀取數據。在python入門教程中會介紹open命令,和其他語言一樣,是作為讀取文件的命令。
  • R語言可視化(二):折線圖繪製
    02.折線圖繪製清除當前環境中的變量rm(list=ls())設置工作目錄setwd("C:/Users/Dell
  • MP科研繪圖|您身邊的專業繪圖工具
    然而,沒有合適的素材、繪圖軟體操作複雜等原因往往成為科研工作者們繪製配圖的絆腳石。為解決科研配圖繪製困難的問題,MedPeer研發出最適合生物醫學領域科研者的繪圖軟體,10萬+的矢量圖標、豐富全面的專業模板、簡便實用的作業系統帶給用戶全新的繪圖體驗。
  • 用R語言繪製折線圖
    構造數據源: x <- c(1020,1640,2340,5610,7942) y <- c("水產","水果","蔬菜","豬肉","綜合")        用plot()函數來繪製折線圖
  • R | 基礎繪圖
    由於R語言基礎作圖部分內容簡單直接,但參數繁多,因此這裡不做系統介紹,只挑出幾個點來講一講。主要介紹R中的顏色系統。rgb函數接的參數分別對應 r-red,g-green,b-blue,生成的顏色是由這三個顏色組成hsv 是Hue, Saturation, Value色調、飽和度、亮度。
  • ggplot2繪圖之四:散點圖、折線圖,點線圖
    第十九節 R語言ggplot2繪圖系列教程之基本認識 bilibili.com/video/BV1UK4y1r7bU第二十節 R語言ggplot2繪圖基本要素之數據、映射與圖層 bilibili.com/video/BV1zp4y1C7wU第二十一節 R語言ggplot2繪圖基本要素之幾何圖形:直方圖、密度圖與(分組)柱狀圖bilibili.com/video/BV1Ei4y187BL
  • R編程與R繪圖
    ://cos.name/cn/forum/15 http://www.rbloggers.com/http://www.statmethods.net/index.htmlhttp://zoonek2.free.fr/UNIX/48_R/all.htmlhttp://www.rdatamining.com/http://www.r-statistics.com
  • 36分文章的折線圖該怎麼畫?
    前段時間看到Nature medicine上的一個富集分析折線圖(如下),非常漂亮,心儀不已。
  • python學習筆記:同時畫多圖,折線圖,箱線圖,條形圖,柱狀圖等
    1.同時畫六張圖#從Matplotlib中導入了pyplot繪圖模塊from matplotlib.pyplot import *#設置相關的數值x=[1,2,3,4]y=[5,4,3,2]#創建一個圖紙
  • matplotlib繪圖的完善及美化
    ",figsize=(16,9),facecolor="red",edgecolor="blue",frameon=True)font={"family":"SimHei","style":"normal","weight":"normal","color":"green","size":16}axes1 = plt.subplot(2,2,1)axes1.plot(x,z,label="折線圖
  • 見識matplotlib:不常見的一面,折線圖!
    眾所周知,matplotlib是python繪圖的基礎包,能夠生成各種各樣2D或者3D的圖形,用法算是多而全的那種,下邊是matplotlib官網首頁作為例子的幾張圖,大家感受一下:什麼?醜拒?不不不,別激動!其實matplotlib一直是一個低調奢華有內涵的包,需要我們透過它樸實無華的外表認清它豐富多彩的內在,來康康這條妖嬈的曲線,有沒有感受到它的召喚?
  • 123.R簡介和統計繪圖
    本文教程的原始碼見123R簡介和統計繪圖.Rmd,實戰代碼詳見R.Rmd。為什麼要學習R圖. R常用圖形 https://www.r-graph-gallery.com/為什麼選擇R?多領域的資源, CRAN收錄16170個R包 (20年9月1日),涵蓋了統計學、經濟學、生態學、進化生物學、生物信息學、物理、化學等多學科。
  • 手把手教你用R語言做科研繪圖拼接!!!!!
    所以,想在今天,臨出發前,和大家,再分享一個有趣、簡單但非常實用的小知識,我相信科研小白以及已經上路的研究生博士生們都會用到的。畢竟回北京以後,我可能就又恢復到foodie美食博主的身份啦!但是我發現,這種方法畫的圖①是不太美觀②拼接的也不太智能(也可能我沒深入挖掘這個方法),雖然它很實用,可以完美拼接R中的base繪圖對象,但是我後來還是慢慢拋棄了他。當然,customLayout也不錯,聽名字就知道很「自定義」和「為所欲為」,可以拼接base繪圖對象也可以拼接ggplot2繪圖對象。
  • 每天學習一點R:40.折線圖和趨勢線擬合
    今天介紹幾個用R繪製折線圖、點線圖或者在散點圖的基礎上添加擬合趨勢線的方法 (PS:基於base