統計分析:R/R/圖形入門
外觀
正如本書貫穿始終所論證的,分析中一個極其重要的部分是對資料的視覺化。幸運的是,R 擁有廣泛的資料視覺化功能:事實上,本書中的所有圖形都是使用 R 製作的,通常只需幾行程式碼[1]。
在 R 中生成繪圖主要有兩種方法
- 傳統的 R 圖形。我們將在此主題中介紹這個基本的圖形框架。我們將使用它來生成與圖 1.1 和 1.2 中類似的繪圖。
- “Trellis” 圖形。這是一個更復雜的框架,可用於在一個頁面上生成多個類似的繪圖。在 R 中,此功能由 “lattice” 包提供(鍵入
help("Lattice", package=lattice)獲取詳細資訊)。
如何生成特定型別繪圖的詳細資訊將在後面的章節中介紹;本主題僅介紹最基本的原理,其中主要有 3 個要點需要牢記
- 在 R 中生成繪圖是透過鍵入特定的圖形命令來實現的。這些命令有兩種型別
- 設定完全新繪圖的命令。此型別最常見的函式被稱為
plot()。在最簡單的情況下,這可能會用新繪圖替換任何先前的繪圖。 - 向現有繪圖新增圖形(線、文字、點等)的命令。許多函式可以做到這一點:最有用的函式是
lines()、abline()、points()和text()。
- 設定完全新繪圖的命令。此型別最常見的函式被稱為
- R 始終將圖形輸出到一個 裝置。通常這是一個螢幕上的視窗,但它也可以是一個 pdf 或其他圖形檔案(完整列表可以透過
?device找到)。這是將繪圖儲存到文件等中的方法之一。要在 (比如) pdf 檔案中儲存圖形,您需要使用pdf()啟用一個新的 pdf 裝置,執行您的常規圖形命令,然後使用dev.off()關閉裝置。這在下面的最後一個示例中得到了說明。 - 不同的函式會根據
plot()的第一個引數觸發。預設情況下,這些函式旨在生成合理的輸出。例如,如果它給出一個函式,比如sqrt函式,plot()將生成x與sqrt(x)的圖形;如果它給出一個數據集,它將嘗試以合理的方式繪製資料點(有關更多詳細資訊,請參閱?plot.function和?plot.data.frame)。諸如顏色、樣式、專案大小以及軸標籤、標題等圖形細節,大多數可以透過plot()函式的其他引數來控制[2]。
plot(sqrt) #Here we use plot() to plot a function
plot(cars) #Here a dataset (axis names are taken from column names)
###Adding to an existing plot usually requires us to specify where to add
abline(a=-17.6, b=3.9, col="red") #abline() adds a straight line (a:intercept, b:slope)
lines(lowess(cars), col="blue") #lines() adds a sequence of joined-up lines
text(15, 34, "Smoothed (lowess) line", srt=30, col="blue") #text() adds text at the given location
text(15, 45, "Straight line (slope 3.9, intercept -17.6)", srt=32, col="red") #(srt rotates)
title("1920s car stopping distances (from the 'cars' dataset)")
###plot() takes lots of additional arguments (e.g. we can change to log axes), some examples here
plot(cars, main="Cars data", xlab="Speed (mph)", ylab="Distance (ft)", pch=4, col="blue", log="xy")
grid() #Add dotted lines to the plot to form a background grid
lines(lowess(cars), col="red") #Add a smoothed (lowess) line to the plot
###to plot to a pdf file, simply switch to a pdf device first, then issue the same commands
pdf("car_plot.pdf", width=8, height=8) #Open a pdf device (creates a file)
plot(cars, main="Cars data", xlab="Speed (mph)", ylab="Distance (ft)", pch=4, col="blue", log="xy")
grid() #Add dotted lines to the pdf to form a background grid
lines(lowess(cars), col="red") #Add a smoothed (lowess) line to the plot
dev.off() #Close the pdf device請注意,cars 資料集給出了以英尺為單位的制動距離和以英里/小時為單位的速度,因此此處生成的繪圖與圖 1.1 和 1.2 中的繪圖有所不同,因為那裡的資料已經轉換為公制單位。
- ↑ 本書中介紹的 R 知識還不足以完全解釋本章中使用的繪圖命令。不過,對於那些感興趣的人來說,對於任何繪圖,生成它的命令都列在影像摘要中(可以透過單擊影像檢視)。
- ↑ 不幸的是,大量可用引數的詳細資訊(其中許多引數在其他生成圖形的例程中很常見)分散在許多幫助檔案中。例如,要檢視在資料集上呼叫
plot()時可用的選項,請參閱?plot、?plot.default和?par。要檢視在函式上呼叫plot()時可用的選項,請參閱?plot.function。在points()的幫助檔案中列出了指定各種繪圖符號的pch引數給出的數字(用於向繪圖新增點的函式):可以透過example(points)檢視它們。