R語言學習第4天--barplot()繪製堆砌條形圖

2021-12-11 小張聊科研

今天我們要教給大家的是如何用barplot()做堆砌條形圖,首先通過下圖來了解下繪圖區(Plot region)和邊緣區(Margin),下圖中綠色虛線包圍的是(主要的)繪圖區,綠框之外就是邊緣空白區,這個margin區域的大小是由par函數中的mar參數控制,默認為par(mar=c(5,4,4,2)+0.1),也就是空白區的大小依照下左上右(順時針)的順序分別為5,4,4,2(我從來沒管過它的「單位」),可以通過修改該值來調節空白區大小,從而使圖形展示更美觀。


想了解barplot()函數的用法,1、可以在命令行輸入「?barplot「,點擊「Enter」鍵即可查看說明文檔。2、在命令行輸入「example(barplot)」,之後多次點擊「Enter」即可查看多個例圖及對應的腳本。

step 1 讀入並處理數據,該示例數據及完整腳本請至雲盤下載,連結: https://pan.baidu.com/s/1bpyZh19 密碼: 6vr3

data<-read.table("genus_abundance.txt",header=T,row.names=1,sep="\t")###read.table函數讀取genus_abundance.txt文件,並將第一行設置為行名(header=T),第一列設置為列名(row.names=1),告訴函數所讀取的文件是Tab分隔的文本文件(sep="\t")。想了解更多read.table中各個參數的含義,可以直接在命令行輸入「?read.table」點擊回車鍵就會彈出網頁文檔。

head(data)   ###以下三條命令是我個人的習慣,可以查看data的一些特徵,其中head是查看文件前6行,dim是查看維度(適合二維以上的數據結構),class可以查看data的類型,在本例中,讀入的data是一個19行9列的數據框。         

dim(data)

class(data)

下面我們用barplot()來做個柱狀圖


結果報錯了,根據錯誤提示我們知道,barplot只能接受「向量(vector)」或者「矩陣(matrix)」這兩種數據結構,而我們給它的是「數據框(data.frame)」,barplot識別不了,當然要報錯啦。從這裡我們應該看出來為什麼了解數據結構辣麼重要了吧(現在你可以翻過去看看「R語言學習第2天--R語言數據結構」)。在這裡我們可以通過as.matrix函數將數據框轉化為矩陣,還有其他非常有用的數據類型檢驗及轉換的函數,大家可以自己練習(檢驗數據類型:is.numeric(), is.character(), is.vector(),is.matrix(), is.data.frame();數據類型強制轉換:as.numeric(), as.character(), as.vector(),as.matrix(), as.data.frame())。



現在我們再輸入barplot(data),就可以出圖了。


不過barplot函數默認的圖比較醜,下面我們就要通過添加不同的參數來調節圖形的外觀。

step 2.1 調用RColorBrewer顏色包

之所以要調用RColorBrewer包,因為它裡面有已經搭好的顏色可供我們調用,這樣我們就不用為顏色搭配犯愁了。

source("http://bioconductor.org/biocLite.R")

if(!require(RColorBrewer,quietly=T)) {  ####先判斷有沒有裝RColorBrewer這個包,如果沒有, require(RColorBrewer,quitely=T)運行結果為FALSE,取它的否定以後這個表達式的運行結果為TRUE,則運行{}中的語句,分別為安裝和加載RColorBrewer,該語句結構可以記住,換成其他包照樣適用。

biocLite("RColorBrewer")                   

require("RColorBrewer")

}

mycol1<-brewer.pal(8,"Accent")

mycol2<-brewer.pal(9,"Set1")

totcol<-rep(c(mycol1,mycol2),10) ###c(mycol1,mycol2)是將mycol1和mycol2兩個顏色向量合併到一起,共有9+8=17種顏色,為了防止這些顏色不夠用,利用rep()將這17種顏色再重複10次,即得到170種顏色,這樣就不怕顏色不夠用啦。

step 2.2 將pdf格式的圖片輸入到barplot_example.pdf這個文件中

data<-data[order(rowSums(data),decreasing=T),] ##可選步驟,但是為了使圖片展示更美觀些,我們將物種(矩陣的行)按豐度之和(按行求和)排了序,使豐度比例大的物种放在下面。

pdf(file="barplot_example.pdf",height=6,width=8) ###將圖形輸出到barplot_example.pdf文件中,並設置圖形的長和寬。

par(xpd=T,mar=par()$mar+c(1,1,1,11))###設置邊緣空白的大小,由於我們要在圖形的右側添加legend圖例,故將右側的空白設置的比較大,xpd=T表示允許將圖例畫在Plot region以外,也就是可以畫在邊緣空白處。

barplot(data,col=totcol,las=1,cex.names=0.8,ylab="Relative Abundance(x100%)",xlab="Sample",cex.lab=1.1,border = NA,legend=rownames(data),args.legend = list(x="right",bty="n",inset=-0.3,cex=0.7))  ###col=totcol 規定data矩陣中的每行所畫出的方塊的顏色;las=1表示x和y軸的標籤(如A1)是水平的;cex.names=0.8表示x,y軸的標籤(如A1)字體大小是默認值的0.8倍;ylab是y軸的標題,xlab同理;cex.lab控制標題的該標題字體大小;border=NA表示條形圖中每個色塊周圍沒有邊框顏色;legend=rownames(data)表示將data的行名設置為legend;args.legend的參數設置類似legend()函數,其中x=」right」表示將圖例畫在條形圖的右側,bty=」n」表示圖例外圍沒有邊線,inset=-0.3是對圖例位置進行了調整,你可以在[-1,1]區間內改動下這個值就能體會它的用處了,cex=0.7不用說是控制圖例字體的大小。

dev.off()###返回終端,此時圖形文件已完成。

提醒一下

下載好genus_abundance.txt這個文件以後,要將它放到當前R的工作路徑下,才可以像上面那樣讀取,或者通過setwd()函數將genus_abundance.txt所在的路徑設置為工作路徑,如果不知道我在說什麼,請查看「R語言學習第1天--初識R」。

 

希望你們玩的開心!

That's all. Thank you!

請關注小張聊科研:搜索微信號xzlky2015,或長按二維碼識別關注。

↓↓↓

相關焦點

  • R語言中繪製條形圖的函數:barplot
    條形圖(bar chart)是用寬度相同的條形的高度或長短來表示數據多少的圖形。它主要用來展示不同分類(橫軸)下某個數值型變量(縱軸)的取值。在實際中,條形圖主要有簡單條形圖,組合條形圖和堆疊條形圖。在R語言的基礎包中可以使用barplot()函數來繪製條形圖。
  • R語言繪製條形圖
    作者:吳健 中國科學院大學 R語言、統計學愛好者,尤其擅長R語言和Arcgis在生態領域的應用分享個人公眾號:統計與程式語言
  • R語言繪圖(一):barplot()繪製條形圖
    條形圖:表示矩形條中的數據,條的長度與變量的值成比例。R語言中bartplot()函數可用於創建條形圖。
  • R語言筆記:用barplot()函數繪製酷炫的柱形圖
    R語言是一門統計語言。R既可以用來做數據的處理,又可以用來繪製各種各樣簡單的、複雜的可視化圖表。
  • 每天學習一點R:16.barplot條形圖之整合點線圖
    args.mges.number <- read.table("ARGs.MGEs.abundance.txt",header = TRUE,sep = "\t",row.names = 1)args.16s.abundance <- read.table("ARGs.16S.abundance.txt",header = TRUE
  • 【R語言】--- graphics包的barplot()函數繪製柱狀圖
    柱狀圖又叫條形圖,是數據展示最重要的一類統計圖,數據分析結果展示中使用頻率非常高,各類統計軟體均能繪製。在R語言中,有很多包可繪製柱狀圖,比如graphics包barplot()函數和ggplot2包geom_bar()函數。 本文介紹graphics包的barplot()函數繪製柱狀圖。
  • R語言基礎繪圖barplot與各種條形圖(1)
    此篇主要介紹一下R語言繪製各式的條形圖;需要對R語言有一定的了解,只要有興趣,學習很簡單。
  • R語言50繪圖|第一期barplot()條形圖
    接下來幾天帶來《R語言50繪圖》系列~很多小夥伴也都是和我一樣的入門級,有的希望出一些簡單繪圖的教程!那今天就和大家分享一下:barplot()條形圖barplot(height, width = 1, space = NULL, names.arg = NULL, legend.text = NULL,beside = FALSE, horiz = FALSE, density
  • 【R語言】--- ggplot2包的geom_bar()函數繪製柱狀圖
    柱狀圖又叫條形圖,是數據展示最重要的一類統計圖,數據分析結果展示中使用頻率非常高,各類統計軟體均能繪製。在R語言中,有很多包可繪製柱狀圖,比如graphics包barplot()函數和ggplot2包geom_bar()函數。本文介紹ggplot2包的geom_bar()函數繪製柱狀圖。
  • 用R語言繪製條形圖
    學「統計學」的人對R語言應該不會太陌生,近十年來,隨著大數據時代的到來,把統計學和數據分析,R語言都帶火了。
  • R語言學習第6天-boxplot()繪製盒須圖
    ,那我們在作圖前就很有必要來看看盒須圖到底該怎麼看。setwd("E:/R-work/R語言學習第6天-boxplot")trans<-read.table("transcript_exp_log2FPKM.txt",header=T,row.names=1,sep="\t")
  • 手把手教學,R語言基礎繪圖
    基礎做好了,我們就開始繪圖,繪圖之前,需要對所需繪圖的數據有清晰的認識,根據所想達到的目的去繪圖,常見的作圖類型有條形圖、餅圖、散點圖等,下面我們開始教學模式~條形圖可以展示類別型變量的分布情況,使用的函數為barplot(height),其中height為一個向量或一個矩陣。
  • python學習筆記:同時畫多圖,折線圖,箱線圖,條形圖,柱狀圖等
    1.同時畫六張圖#從Matplotlib中導入了pyplot繪圖模塊from matplotlib.pyplot import *#設置相關的數值x=[1,2,3,4]y=[5,4,3,2]#創建一個圖紙
  • R語言從入門到精通:Day8-圖形繪製|r語言|直方圖|條形圖|圖例_網易...
    條形圖  條形圖通過垂直的或水平的條形展示了類別型變量的分布(頻數),在R中對應函數barplot()。下面是幾個簡單的例子。  圖7:堆砌條形圖和分組條形圖  為了方便大家重複圖形繪製過程,上面圖形中展示的數據都是來自包vcd,大家在運行代碼前安裝vcd包即可。
  • 【MATLAB圖像】— 繪製plot與其它二維圖形
    clearclcx=0:0.02*pi:5*pi;y1=sin(x);y2=cos(x);subplot(131);plot(x),title('x');subplot(132);plot(x,y1,'r*'),title('y1=sin(x)');subplot(133);plot(x,y2),title('y2=cos(x
  • R畫circular barplot
    (xid = 1:n()) %>% mutate(angle = 90 - 360 * (xid - 0.5) / n()) %>% mutate(hjust = ifelse(angle < -90, 1, 0)) %>% mutate(angle = ifelse(angle < -90, angle+180, angle))
  • 使用R繪製幾種常用的雙坐標軸圖形
    難道R語言就無法繪製雙軸圖形了嗎?非也,R不僅是統計學家的標準工具,也是一款繪製圖形的理想工具。下面就跟大家介紹plotrix包中的twoord.plot()函數和twoord.stackplot()函數,它們可以實現雙坐標軸圖形的繪製。
  • 使用Matplotlib繪製堆積條形圖
    我們為每個平臺和區域繪製一個條形圖,並查看結果。我們在繪製之前對值進行排序,這樣可以更好地理解順序,更容易比較條形圖。我們將在「Global Sales」列中這樣操作。## 排序值df_grouped = df_grouped.sort_values('Global_Sales')df_grouped在前文中,我們為每個區域構建了一個簇狀條形圖,其中寬度參數和x軸上的調整幫助我們擬合了每個平臺的區域。類似地,我們將為每個區域繪製堆積條形圖。
  • R語言繪圖課程四------ 循序漸進ggplot2中條形圖的繪製
    終於迎來了R語言繪圖專欄的第四次更新的放送,大家是不是有一點饑渴難耐…迫不及待了呢~上一次課程中我們主要介紹了ggplot2包的繪圖原理,理解了映射的概念,用散點圖來展示了數據。但是光會畫散點圖並不能算掌握了數據可視化的核心競爭力,畢竟我們沒看見過一片sci文章中只有寥寥幾張散點圖……或許存在這樣的神仙文章,但這並不能成為優秀的小夥伴們的追求。
  • R語言學習筆記(2)數據處理和基本繪圖
    上節匯總了R語言的基本數據結構以及如何查看數據類型,本期我們將接著學習R中常見的數據處理操作和一些R基本繪圖功能。