R學習筆記(第六章)

這一章,主要是將變數的分布作各種可視化展示,通過結果變數進行跨組比較。

一般圖形包括條形圖、箱線圖和點圖;餅圖和扇形圖;直方圖與核密度圖。

6.1、條形圖

6.1.1、簡單條形圖

條形圖通過垂直的或水平的條形展示了類別型變數的分布(頻數),可以用函數barplot()。

6.1.2、堆砌條形圖和分組條形圖

如果數據是一個矩陣而不是一個向量,則繪圖結果是一幅堆砌條形圖或分組條形圖。其中,beside=FALSE(默認值),則矩陣中的每一列都生成圖形中的一個條形,各列中的值將給出堆砌的「子條」的高度,若beside=TRUE,則矩陣中的每一列都表示一個分組,各列中的值將並列而不是堆砌。

6.1.3、均值條形圖

可以使用數據整合函數並將結果傳遞給barplot()函數來創建表示均值、中位數、標準差等的條形圖。

6.1.4、條形圖的微調

使用若干方式可以微調條形圖的外觀,例如使用函數cex.names來減少字型大小,使用函數names.arg允許指定一個字元向量作為條形的標籤名。

PS:利用函數par()可以對默認圖形做出大量修改,函數las=2旋轉了條形的標籤、修改了標籤文件,並使用函數mar增加了y邊界的大小,用函數cex=.8縮小了字體大小。

6.1.5、棘狀圖(spinogram)

棘狀圖對條形圖進行了重縮放,這樣每個條形圖的高度均為1,每一段的高度即表示比例。棘狀圖由vcd包中的函數spine()繪製,如下:

6.2、餅圖

6.2.1

餅圖可以用函數pie(x,labels),其中x是一個非負數值向量,表示每個扇形面積,而labels則是表示各扇形標籤的字元型向量。

PS:餅圖讓比較各扇形的值變得困難

6.2.2、扇形圖(fan plot)

這是利用plottrix包中的函數fan.plot()來實現的扇形圖,屬於餅圖的變種。在一幅扇形圖中,各個扇形相互疊加,並對半徑做了修改,通過疊加的效果來看出各個變數所佔的比例大約是多少。(例如上例,法國約是德國的一半,澳大利亞是德國的四分之一等)。

6.3、直方圖

直方圖通過在X軸上將值域分割為一定數量的組,在Y軸上顯示相應值的頻數,展示了連續型變數的分布。使用函數hist(x),其中x是一個由數據值組成的數值向量。

ps:其中freq=FALSE表示根據概率密度而不是頻數繪製圖形,參數breaks用於控制「組」的數量。

左下角的圖利用函數lines()添加了一條密度曲線,另外還添加了軸須圖(rug plot),是實際數據值的一種一維呈現方式,若果數據中有許多結(數據中出現相同的值),可以使用如下方式把軸須圖中的結打散:

rug(jitter(mtcars$mpg,amount=.01))

這樣講向每個數據添加一個小的隨機值(一個正負amount之間的均勻分布隨機數)以避免重疊的點產生的影響。

右下角疊加了一條正太曲線和一個將圖形圍繞起來的盒型。

6.4、核密度圖

6.4.1、普通核密度圖

核密度圖估計是用於估計隨機變數概率密度函數的一種非參數方法,利用函數Plot(density(x)),其中x是一個數值型向量。如果想在一幅已有的圖形上疊加一條核密度曲線,可以使用函數lines()。

ps:函數polygon()根據頂點的x和y坐標(這裡由函數density()提供)繪製多邊形。

6.4.2、可比較核密度圖

利用sm包中的函數sm.density.compare()可向圖形疊加兩組或更多的核密度圖,格式為:sm.density.compare(x,factor)。

其中,x為一個數值型向量,factor是一個分組向量。

下例為:計算氣缸數劃分的每加侖可行駛的英里數核密度圖(以mtcars為資料庫)

ps:函數confill<-c(2:(1+length(levels(cl.cf))))是添加了一個圖例以增加可解釋性。

6.5、箱線圖

6.5.1、普通箱線圖

箱線圖(又稱盒須圖)通過繪製連續型變數的五數總括(即最小值、下四分位數、中位數及最大值),描述了連續型變數的分布。

箱線圖可顯示可能為離群點(範圍正負1.5*IQR以為的值,IQR表示四分位距,即上四分位數與下四分位數的差值)的觀測,例如:

默認情況下,兩條須的延伸極限不會超過盒型各端加1.5倍四分位距的範圍,此範圍以外的值將以點來表示(上例沒有畫出)。上例的數據意思表述為:在該車型樣本中,每加侖汽油所行駛英里數的中位數是19.2,50%的值落在15.3至22.8之間,最小值為10.4,最大值為33.9。圖中不存在離群點,而且略微右偏(上則的須比下面的長)。

箱線圖可展示單個變數或分組變數,使用函數boxplot(formula,data=dataframe),其中formula代表一個公式,dataframe代表提供數據的數據框(或列表)。

下例為:不同氣缸數車型油耗的箱線圖

圖中可以看出,6缸車型的油耗叫其他的均勻,四缸車油耗的散布最廣且右偏,8缸車存在一個離群點。

6.5.2、含凹槽的箱線圖

ps:函數notch=TRUE,可以得到含凹槽的箱線圖;函數varwidth_=TRUE將箱線圖的寬度與其樣本大小的平方根成正比,另外還可以用函數horizontal=TRUE反轉坐標軸的方向。

6.5.3、多個分組因子的箱線圖

6.5.4、小提琴圖

小提琴圖是箱線圖與核密度圖的結合,利用vioplot包中的函數vioplot()來實現,格式為:vioplot(x1,x2,..,name=,col=),參數name=是小提琴圖中標籤的字元向量。

圖中,白點是中位數,黑色盒型的範圍是下四分位點和上四分位點,細線表示須。外部形狀即為核密度圖估計.

6.6、點圖

點圖提供了一種在簡單水平刻度上繪製大量有標籤值的方法,點圖在經過排序並且變數被不同的符號和顏色區分開的時候最有用。可以利用函數dotchart()來創建,格式是:dotchart(x,labels=)

ps:通過參數groups來選定因子,用以指定x中元素的分組方式。而參數gcolor則控制不同組標籤的顏色,參數cex控制標籤的大小。

該例中,根據每加侖汽油行駛英里數(從低到高)排序,其中數值向量cyl被轉換為一個因子

推薦閱讀:

TAG:R編程語言 | 學習 |