使用lattice進行高級繪圖-- lattice 包(核密度圖、箱線圖、散點圖、3D散點圖、點圖、散點圖矩陣)


使用lattice進行高級繪圖-- lattice 包

lattice包提供了用於可視化單變量和多變量數據的一整套圖形系統。許多用戶轉向使用lattice包是因為它能很容易地生成網格圖形。

網格圖形能夠展示變量的分布或變量之間的關系,每幅圖代表一個或多個變量的各個水平。

思考下面的問題:紐約合唱團各聲部的歌手身高是如何變化的?

lattice包在singer數據集中提供了身高和聲部的數據。在下面的代碼中:

library(lattice)

histogram(~height | voice.part, data = singer,

          main="Distribution of Heights by Voice Pitch",

          xlab="Height (inches)")

 

結果分析:Soprano表示女高音,Tenor表示男高音,Alto表示女低音,Bass表示男低音,從圖上可以看出,似乎男高音和男低音比女低音和女高音的身高更高。

在網格圖中,調節變量的每個水平生成一個獨立的面板。如果指定多個調節變量,這些變量因子水平的每個組合都會生成一個面板。在每個面板名為條帶(strip)的區域中會提供一個標簽,比如上圖中的Soprano1Tenor1等等。

lattice包提供了大量的函數來產生單因素圖(點圖、核密度圖、直方圖、條形圖、箱線圖),二元圖(散點圖、條形圖、平行箱線圖)和多元圖(3D圖、散點圖矩陣)。每個高水平的畫圖函數都服從下面的格式:

graph_function(formula, data=, options)

其中:

q graph_function是一個函數;

q formula指定要展示的變量和任意的調節變量;

q data=指定數據框;

q options是用逗號分隔的參數,用來調整圖形的內容、安排和注釋。

我們假定小寫字母代表數值型變量,大寫字母代表分類型變量(因子)。高水平的畫圖函數通常采取的格式是:y ~ x | A * B

其中豎線左側的變量稱為主要變量(primary variable),右邊的變量稱為調節變(conditioning variable)。主要變量將變量映射到每個面板的軸上。這里的y~x分別描述了在縱軸和橫軸上的變量。對於單變量圖,用~x代替y~x;對於3D圖,用z~x*y代替y~x;對於多變量圖(散點圖矩陣或平行坐標曲線圖),用數據框來代替y~x

按照這個邏輯,~x|A表示因子A每個水平的數值變量xy~x|A*B表示在給定因子AB的水平后,數值變量yx的關系。A~x表示在縱軸上的分類變量A和橫軸上的數值變量x~x表示數值型變量x

lattice包中的圖類型和相應的函數

 

注:在這些公式中小寫字母表示數值型變量,大寫字母表示分類型變量。

一個基於mtcars數據框中的汽車數據(里程、車重、擋數、汽缸數等)。我們可以變換公式並查看結果
1lattice畫圖例子

library(lattice)

attach(mtcars)

gear <- factor(gear, levels=c(3, 4, 5),   

               labels=c("3 gears", "4 gears", "5 gears"))

cyl <- factor(cyl, levels=c(4, 6, 8),labels=c("4 cylinders", "6 cylinders", "8 cylinders"))

densityplot(~mpg,

            main="Density Plot",

            xlab="Miles per Gallon")

 

結果分析:densityplot是畫核密度圖,~mpg表示數值型變量mpg

densityplot(~mpg | cyl,

            main="Density Plot by Number of Cylinders",

            xlab="Miles per Gallon")

 

結果分析:densityplot是畫核密度圖~mpg | cyl表示因子cyl每個水平的數值變量mpg

bwplot(cyl ~ mpg | gear,

       main="Box Plots by Cylinders and Gears",

       xlab="Miles per Gallon", ylab="Cylinders")

 

結果分析:bwplot是箱線圖,cyl ~ mpg | gear表示給定(分類)因子gear后,在縱軸cyl 和橫軸 mpg上的變量關系。

xyplot(mpg ~ wt | cyl * gear,

       main="Scatter Plots by Cylinders and Gears",

       xlab="Car Weight", ylab="Miles per Gallon")

 

結果分析:xyplot是散點圖,mpg ~ wt | cyl * gear表示在給定因子cylgear的水平后,數值變量mpgwt的關系。

cloud(mpg ~ wt * qsec | cyl,

      main="3D Scatter Plots by Cylinders")

 

結果分析:cloud是繪制3D散點圖,mpg ~ wt * qsec | cyl表示對於3D圖,用z~x*y代替y~x,表示給定(分類)因子cyl后,在yqsec xwtzmpg的變量關系。

dotplot(cyl ~ mpg | gear,

        main="Dot Plots by Number of Gears and Cylinders",

        xlab="Miles Per Gallon")

 

結果分析:dotplot是點圖,cyl ~ mpg | gear表示給定(分類)因子gear后,在縱軸(分類變量)cyl 和橫軸 mpg上的變量關系。

splom(mtcars[c(1, 3, 4, 5, 6)],

      main="Scatter Plot Matrix for mtcars Data")

 

結果分析:splom是散點圖矩陣,繪制mtcars數據13456列之間的關系的散點圖矩陣

detach(mtcars)

lattice包中的高水平畫圖函數能產生可保存和修改的圖形對象。例如

library(lattice)

mygraph <- densityplot(~height|voice.part, data=singer)

創建了一個網格密度圖,並把它保存為對象mygraph。但是沒有圖像展示。聲明plot(mygraph)

(或僅僅是mygraph)將會展示出這幅圖。

mygraph

 

lattice高水平畫圖函數的常見選項

 

 

                                                                           

我們也可以使用update()函數來調整lattice圖形對象。繼續歌手的例子,下面的代碼:

newgraph <- update(mygraph, col="red", pch=16,

                   cex=.8, jitter=.05, lwd=2)

newgraph

 

結果分析:使用紅色曲線和符號(color="red"),填充點(pch=16),更小(cex=.8)更高的抖動點(jitter=.05)和雙倍厚度曲線(lwd=2)來改變mygraph。更改的結果保存在newgraph中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM