R語言基礎繪圖教學

2017-03-24    編輯:諾禾致源

R語言是用于統計分析、繪圖的語言和操作環境。R的統計分析能力突出,有強大的數據展示能力。而其本質作為編程語言,具有著強大的拓展和開發能力,可以編制自己的函數,或制作獨立的統計分析包、快速實現新算法。
R軟件可以從其官網(https://www.r-project.org/)下載安裝。R提供了超過4000個包,這些包可以實現很多不同的功能,而R自帶了一系列的默認包,利用這些默認包,就可以畫出一些基礎的圖形。下面就介紹一些基礎圖形的繪制方法,當然,也可能會涉及到一些加載不出來的擴展包,這說明這不是R自帶的,需要先獲取并安裝install.packages(“包名稱”),再下載不是R自帶的其他擴展包。

基礎概念

1)數據結構:

245棋牌標量(數值型、字符型或邏輯型),向量(儲存同類型數據組成的一維數組),矩陣(儲存同類型數據組成的二維數組),數組(存同類型數據組成的多維數組)以及數據框(儲存各種類型的數據)等。

作圖類型

1)條形圖

條形圖可以展示類別型變量的分布情況,使用的函數為barplot(height),其中height為一個向量或一個矩陣。下面介紹一下基本條形圖的繪制方法:
#載入vcd包
> library("vcd")
#將數據框Arthritis的Improved列提出,制成表格
> counts <- table(Arthritis$Improved)
#繪制條形圖,定義了橫縱坐標軸名,標題,以及顏色
barplot(counts,main="Simple Bar Plot",xlab="Improvement",ylab="Frequency",col=c("lightseagreen", "lightcoral","mediumpurple"))
如圖1所示。

圖1 條形圖

當然,也可以繪制一些變化的條形圖,比如:堆砌條形圖或分組條形圖等:
#將數據框Arthritis的Improved列和Treatment列提出,制成表格
> counts <-table(Arthritis$Improved,Arthritis$Treatment)
#繪制堆砌條形圖和分組條形圖
> barplot(counts,main="堆砌條形圖",xlab="Treatment",ylab="Frequency",col=c("lightseagreen", "lightcoral","mediumpurple"), legend= rownames(counts), ylim=c(0,52) )
> barplot(counts,main="分組條形圖",xlab="Treatment",ylab="Frequency",col=c("lightseagreen", "lightcoral", "mediumpurple"),legend=rownames(counts), beside=TRUE)
如圖2與圖3所示。

2)變量類型:

245棋牌名義型(沒有順序之分的類別變量,也叫類別型,如type1,type2)、有序型(有順序的變量,但非數量關系,如poor,improved,excellent)以及連續型(某個范圍內的任意值,如10,11.5,15,20)。

245棋牌 圖2 堆砌條形圖

圖3 分組條形圖

2)餅圖

餅圖是由扇形面積來表示組分所占比例,用pie函數實現。下面介紹一下在一幅圖中同時繪制三張餅圖的方法:
#定義一個2*2的圖框
> par(mfrow=c(2,2))
#定義數據
> slices <- c(10,12,4,16,8)
> lbls <- c("US","UK","Australia","Germany","France")
#畫標準餅圖
>pie(slices, labels=lbls,main="Simple Pie Chart")
#更改圖例,添加百分比
> pct <- round(slices/sum(slices)*100)
> lbls2<- paste(lbls, " ", pct, "%", sep="")
#畫第二張圖,定義彩虹色,并且添加百分比信息
>pie(slices,labels=lbls2,col=rainbow(length(lbls2)),main="Pie Chart with Percentages")
#載入plotrix包
>library(plotrix)
#繪制扇形圖
245棋牌>fan.plot(slices, labels=lbls, main="Fan Plot")

如圖4所示。

圖4 餅圖

3)頻率直方圖

直方圖通過x軸上將值域分割為一定數量的組,在y軸上顯示相應值的頻數,可以展示連續型變量的分布。
#將mtcar數據集中的mpg列挑出來
> x <- mtcars$mpg
#繪制直方圖,定義x分組數,顏色以及坐標軸名稱
> h<-hist(x,breaks=12,col="red",xlab="MilesPer Gallon",main="Histogram with normal curve and box")
#構造正態曲線數據
> xfit <- seq(min(x),max(x),length=40)
> yfit <- dnorm(xfit,mean=mean(x),sd=sd(x))
> yfit <- yfit*diff(h$mids[1:2])*length(x)
#繪制正態曲線
> lines(xfit,yfit,col="blue",lwd=2)
#繪制外層邊框
> box()

如圖5所示。

圖5 頻率直方圖

4)箱線圖

箱線圖通過繪制連續型變量的五數總括(最小值、下四分位數、中位數、上四分位數、最大值),描述了連續型變量的分布。同時,在一副圖中并列放置多組樣品的箱線圖,可以直觀的進行跨組比較。代碼如下:
#用mtcars數據集里的mpg列作為y坐標,用cyl列作為分組方式進行箱圖繪制
> boxplot(mpg~cyl,data=mtcars,main="Car Mileage Data",xlab="Number of Cylinders", ylab="Miles Per Gallon",col=c("red","yellow","green"))
如圖6所示。

圖6 箱線圖

5)散點圖

散點圖可以描述兩個連續型變量間的關系。并且經過一些擬合,可以探索兩個變量之間的關系:
> attach(mtcars)
#繪制散點圖,定義點的類型、橫縱坐標軸名以及標題
> plot(wt,mpg,main="Basic Scatter plot of MPG vs. Weight",xlab="Car Weight (lbs/1000)",ylab="Miles Per Gallon",pch=19)
#添加最佳擬合的線性直線,并定義顏色,線型,線寬
>abline(lm(mpg~wt),col="red",lwd=2,lty=1)
#添加平滑的曲線,并定義顏色,線型,線寬
>lines(lowess(wt,mpg),col="blue",lwd=2,lty=2)
如圖7所示。

圖7 散點圖

也可以添加第三個連續型變量,拓展成為三維散點圖。
#加載scatterplot3d包
> library(scatterplot3d)
> attach(mtcars)
#繪制三維散點圖
> scatterplot3d(wt, disp, mpg, pch=16,highlight.3d=TRUE, type="h",main="3D Scatter Plot with VerticalLines")
如圖8所示。

圖8 三維散點圖