R語言基礎繪圖barplot與各種條形圖(1)

2021-03-02 生信窗

此篇主要介紹一下R語言繪製各式的條形圖;需要對R語言有一定的了解,只要有興趣,學習很簡單。

R語言繪圖系統:

    R語言實際上由兩大繪圖系統,基礎繪圖系統以及grid繪圖系統,現在介紹的都是基於基礎繪圖系統進行作圖,基於grid繪圖系統的lattice包以及ggplot2包以後會介紹(有興趣可以去網上先找找看,教程有很多)。

條形圖適用:

第一,針對離散數據:

比如小明的數學,語文,英語,成績分別為80,90,70,那麼用條形圖可以完美展示,一行代碼,非常簡單;

barplot(c(80,90,70),names.arg = c("數學","語文","英語")

現在小紅的成績也出來了,成績分別為88,95,60;代碼也很簡單,只是添加了顏色和圖例;

library(RColorBrewer) #顏色面板mycol<- brewer.pal(7,"Set3")#barplot(rbind(c(80,90,70),c(88,95,60)),beside = T,names.arg = c("數學","語文","英語"),col=c(mycol[3],mycol[4]))#添加顏色par(xpd=T)legend(8,100,legend = c("xiaoming","xiaohong"),cex=.6,fill =c(col=c(mycol[3],mycol[4])),pt.cex = .5,bty="n")#添加圖例

如果想要展示每個柱子的數值呢,仔細觀察,barplot是沒有x軸信息的,玄機就在barplot函數的返回值裡面,用mypos接受barplot返回值,mypos包含的數值就是每個柱子的中間部位對應的橫坐標值,然後利用text添加就很簡單了;

library(RColorBrewer) #顏色面板mycol<- brewer.pal(7,"Set3")#mypos <- barplot(rbind(xiaoming,xiaohong),beside = T,names.arg = c("數學","語文","英語"),col=c(mycol[3],mycol[4]))#添加顏色par(xpd=T)legend(8,100,legend = c("xiaoming","xiaohong"),cex=.6,fill =c(col=c(mycol[3],mycol[4])),pt.cex = .5,bty="n")#添加圖例text(t(mypos),c(xiaoming,xiaohong)+5,c(xiaoming,xiaohong))#添加數值

也可以橫著放,疊著放。。。

barplot(rbind(c(80,90,70),c(88,95,60)),beside = T,names.arg = c("數學","語文","英語"),col=c(mycol[3],mycol[4]),horiz =T)#橫著放barplot(rbind(c(80,90,70),c(88,95,60)),names.arg = c("數學","語文","英語"),col=c(mycol[3],mycol[4]))#疊著放

然後畫出我們封面圖的代碼就很簡單了,添加點,添加線就好了;

set.seed(100)mycolor <- brewer.pal(7, "Set3") myvalue <- runif(7,10,50)xpos <- barplot(myvalue,col=mycolor,names.arg = letters[1:7],ylim=c(0,45))points(xpos,myvalue+2,pch=3,col=mycolor)points(xpos,myvalue+2,pch=19,col=mycolor)lines(xpos,myvalue,lwd=2,lty=2)

第二,針對論文中常見的均值加減標準誤:

a. 均值加減標準誤表示多次抽樣的均值的離散程度,主要表示抽樣誤差;

b. 均值加減標準差表示一次抽樣,數據的離散程度;

c. 還有人用均值加減2倍或3倍標準誤,都可以;

幾種方式在論文中都有人在用,此處我們用標準誤作為誤差棒繪製的數據;

例如小明第一次模擬試各門成績為88,89,99,90;第二次模擬考試各門成績為90,79,60,93;用條形圖來展示兩次數據:

標準誤計算為: 標準差/sqrt(n)

chengji_1 <- c(88,89,99,90)chengji_2 <- c(90,79,60,93)se_1 <- sd(chengji_1)/sqrt(4) #計算標準誤se_2 <- sd(chengji_2)/sqrt(4)mean_1 <- mean(chengji_1) #計算均值mean_2 <- mean(chengji_2)

有了前面的條形圖基礎,此處就很簡單了,誤差棒繪製用R中的arrows就可以了;

mypos <- barplot(main="成績",c(mean_1,mean_2),col=c(mycol[1],mycol[2]),names.arg = c("模擬1","模擬2"))arrows(x0 = mypos,y0 = c(mean_1-se_1,mean_2-se_2),x1 = mypos,y1 = c(mean_1+se_1,mean_2+se_2),code=3,angle = 90,length = 0.07)

缺點:條形圖的缺點是不能反應數據分布,比如一個柱子只能反應一個數據,或者一組數據的平均數,反應數據分布的話箱線圖是個很好的選擇,後面再說。

最後放個進階版條形圖,圖片看著簡單,邏輯還是比較複雜的:

y <- sample(1:10)midpts <- barplot(y,col="light gray") width <- diff(midpts[1:2])/4left <- rep(midpts,y-1)-widthright <- rep(midpts,y-1)+width height <- unlist(apply(matrix(y,ncol = 10),2,seq))[-cumsum(y)] segments(left,height,right,height,col="red")

參考:

R Graphics (2nd Edition)

相關焦點

  • R語言50繪圖|第一期barplot()條形圖
    接下來幾天帶來《R語言50繪圖》系列~很多小夥伴也都是和我一樣的入門級,有的希望出一些簡單繪圖的教程!那今天就和大家分享一下:barplot()條形圖barplot(height, width = 1, space = NULL, names.arg = NULL, legend.text = NULL,beside = FALSE, horiz = FALSE, density
  • 手把手教學,R語言基礎繪圖
    R語言是用於統計分析、繪圖的語言和操作環境。R的統計分析能力突出,有強大的數據展示能力。
  • R語言繪圖(一):barplot()繪製條形圖
    R語言中bartplot()函數可用於創建條形圖。weight<-c(3,6,9,1,15,22)png(file="barchart.png")barplot(weight)dev.off()執行以上代碼後產生如下圖形:那怎麼改變條形圖的標籤、標題及顏色你?
  • 【R語言】--- graphics包的barplot()函數繪製柱狀圖
    柱狀圖又叫條形圖,是數據展示最重要的一類統計圖,數據分析結果展示中使用頻率非常高,各類統計軟體均能繪製。在R語言中,有很多包可繪製柱狀圖,比如graphics包barplot()函數和ggplot2包geom_bar()函數。 本文介紹graphics包的barplot()函數繪製柱狀圖。
  • R語言中繪製條形圖的函數:barplot
    條形圖(bar chart)是用寬度相同的條形的高度或長短來表示數據多少的圖形。它主要用來展示不同分類(橫軸)下某個數值型變量(縱軸)的取值。在實際中,條形圖主要有簡單條形圖,組合條形圖和堆疊條形圖。在R語言的基礎包中可以使用barplot()函數來繪製條形圖。
  • R語言數據分析從入門到進階-R語言數據可視化基礎-基礎繪圖函數部分代碼
    》視頻已在B站上線,本文是第6部分R語言數據可視化基礎的基礎繪圖函數的代碼。在B站上這部分視頻被單獨發布在《R語言數據可視化基礎》系列中,大家可以單獨觀看。希望大家能夠對照視頻,找數據,寫代碼,發現不對的時候再來參考代碼。有任何問題都可以在視頻的評論區留言交流,UP主會竭盡所能幫助大家解決問題。
  • R語言學習第4天--barplot()繪製堆砌條形圖
    今天我們要教給大家的是如何用barplot()做堆砌條形圖,首先通過下圖來了解下繪圖區(Plot region)和邊緣區(Margin
  • Python語言plotnine VS R語言ggplot2
    相對於R中的基礎可視化包,是基於圖形語法的繪圖包,一經提出就迅速受到廣大R語言使用者的喜愛。ggplot2包利用圖層疊加的繪圖方式,往圖像上不斷的添加圖形元素、注釋、統計結果等內容。plotnine庫可以看作是在Python中對ggplot2包的一種實現,方便Python對數據可視化的應用。本文章會分別介紹在R和Python中,如何使用相關的庫進行數據可視化分析。
  • 每天學習一點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語言筆記:用barplot()函數繪製酷炫的柱形圖
    在R中,繪圖的代碼可以說是函數式編程,不像Python一樣,需要寫比較多的邏輯代碼,而是像Excel一樣,通常,我們只需要找到合適的函數,然後往裡面填寫參數即可。本文就以barplot()繪製柱形圖來展開講解。
  • 【R語言】--- ggplot2包的geom_bar()函數繪製柱狀圖
    柱狀圖又叫條形圖,是數據展示最重要的一類統計圖,數據分析結果展示中使用頻率非常高,各類統計軟體均能繪製。在R語言中,有很多包可繪製柱狀圖,比如graphics包barplot()函數和ggplot2包geom_bar()函數。本文介紹ggplot2包的geom_bar()函數繪製柱狀圖。
  • R語言繪製條形圖
    作者:吳健 中國科學院大學 R語言、統計學愛好者,尤其擅長R語言和Arcgis在生態領域的應用分享個人公眾號:統計與程式語言
  • R語言從入門到精通:Day8-圖形繪製|r語言|直方圖|條形圖|圖例_網易...
    在上一次教程中,我們講解了R語言繪圖的諸多函數,想必看到自己做出的圖形,肯定小有成就感吧。將整個繪圖區域理解為橫坐標為 0 到 1、縱坐標為 0 到 1 的正方形區域,上圖中散點圖的繪圖區為橫坐標 0 到 0.8、縱坐標 0 到 0.8 的區域,上方的箱線圖繪圖區域為橫坐標 0 到 0.8、縱坐標為 0.55 到 1 的區域。
  • R語言學習筆記(2)數據處理和基本繪圖
    上節匯總了R語言的基本數據結構以及如何查看數據類型,本期我們將接著學習R中常見的數據處理操作和一些R基本繪圖功能。
  • Stata繪圖:addplot-層層疊加輕鬆繪圖
    該命令與 twoway 繪圖命令的附加選項 addplot_option 的區別在於它是獨立於原有繪圖命令的,可以在原有繪圖命令之後單獨運行,其優勢在於:如果你必須修改一個圖形,而你又不能重新運行原來的繪圖命令,或者你只有圖形文件,而沒有用於創建圖形的數據,那麼 addplot 允許你在圖形生成後向其添加元素;addplot 可以實現單一繪圖命令中難以實現的效果(例如,包含多個子圖的情況下自定義單個子圖
  • R畫circular barplot
    ( rep('A', 10), rep('B', 30), rep('C', 14), rep('D', 6)) , value=sample( seq(10,100), 60, replace=TRUE))datagroup <- data$group %>% unique()allplotdata <- tibble('group' =
  • R語言簡介、安裝、R包的安裝問題、R的繪圖函數概覽、par()函數及plot()函數詳解
    本文1.4萬字,內容涵蓋:R語言簡介、安裝、R包的安裝問題、R的繪圖函數概覽、par()函數及plot()函數詳解。
  • R語言之plot繪圖函數的使用
    R有強大的繪圖功能,plot()函數是一種常用的繪圖函數,用其可以繪製散點圖、曲線圖等。plot函數的語法格式R語言中plot()函數的基本格式如下:plot(x,y,...)主要參數的含義如下:(1)type為一個字符的字符串,用於給定繪圖的類型,可選的值如下:"p":繪點(默認值);"l":繪製線;"b":同時繪製點和線;"c":僅繪製參數
  • R繪圖之箱線圖(boxplot)
    收錄於話題 #R語言;繪圖 6個內容
  • R語言(繪圖入門)
    x <- 1:4y <- c(2, 4, 3, 1)plot(x, y, type="b")繪圖參數:par()函數 par() 用來獲取當前圖形的參數。如果加入 no.readonly=TRUE, 表示該參數列表是非只讀的,即用戶可以進行修改。