R語言學習第三章(多圖)
? 自定義符號、線條、顏色和坐標軸
? 標註文本和標題? 控制圖形維度? 組合多個圖形3.1 使用圖形
R是一個驚艷的圖形構建平台。這裡我特意使用了構建一詞。在通常的互動式會話中,你可以通過逐條輸入語句構建圖形,逐漸完善圖形特徵,直至得到想要的效果。考慮以下五行代碼:
attach(mtcars) # 綁定了數據框 mtcars
plot(wt,nmpg) # 打開了一個圖形窗口並生成了一幅散點圖
abline(lm(mpg~wt))n #向圖形添加了一條最優擬合曲線
title("Regressionnof MPG on Weight")#添加了標題
detach(mtcars)n #為數據框解除了綁定
在R中,圖形通常都是以這種互動式的風格繪製的
可以通過代碼或圖形用戶界面來保存圖形。要通過代碼保存圖形,將繪圖語句夾在開啟目標圖形設備的語句和關閉目標圖形設備的語句之間即可。
R將在保證用戶輸入最小化的前提下創建儘可能美觀的圖形。不過你依然可以使用圖形參數來指定字體、顏色、線條類型、坐標軸、參考線和標註。其靈活度足以讓我們實現對圖形的高度定製。
3.2 一個簡單的例子(藥物A劑量和響應的折線圖)
3.3 圖形參數
我們可以通過修改稱為圖形參數的選項來自定義一幅圖形的多個特徵(字體、顏色、坐標軸、標籤)。
一種方法是通過函數 par() 來指定這些選項。以這種方式設定的參數值除非被再次修改,否n則 將 在 會 話 結 束 前 一 直 有 效 。 其 調 用 格 式 為npar(optionname=value,optionname=name,...) 。不加參數地執行npar() 將生成一個含有當前圖形參數設置的列表。添加參數 no.readonly=TRUE 可以生成一個可以修改的當前圖形參數列表。
3.2的例子中,假設你想使用實心三角而不是空心圓圈作為點的符號,並且想用虛線代替實線連接這些點。你可以使用以下代碼完成修改:
第二種方法是為高級繪圖函數直接提供 optionname=value 的鍵值對。這種情況下,指定的選項僅對這幅圖形本身有效。你可以通過代碼:plot(dose, drugA, type="b", lty=2, pch=17)來生成與上圖相同的圖形。
3.3.1n符號和線條
代碼如下:
繪製圖形如下:3.3.2n顏色
在R中,可以通過顏色下標、顏色名稱、十六進位的顏色值、RGB值或HSV值來指定顏色。舉例來說,ncol=1 、 col="white" 、ncol="#FFFFFF" 、 col=rgb(1,1,1) 和 col=hsv(0,0,1)都是表示白色的等價方式。函數 rgb() 可基於紅-綠-藍三色值生成顏色,而 hsv() 則基於色相-飽和度-亮度值來生成顏色。
display.brewer.all()代碼執行後圖形如下:
灰色色階代碼:
3.3.3 文本屬性圖形參數同樣可以用來指定字型大小、字體和字樣。表3-4闡釋了用於控制文本大小的參數。字體族和字樣可以通過字體選項進行控制(見表3-5)。
在執行語句:par(font.lab=3, cex.lab=1.5, font.main=4, cex.main=2) 之後創建的所有圖形都將擁有斜體、1.5倍於默認文本大小的坐標軸標籤(名稱),以及粗斜體、2倍於默認文本大小的標題。
在Windows中,可以通過函數 windowsFont() 來創建這類映射。
3.3.4 圖形尺寸與邊界尺寸
最後,可以使用表3-6列出的參數來控制圖形尺寸和邊界大小。
使用圖形參數控制圖形外觀:
3.4 添加文本、自定義坐標軸和圖例
除了圖形參數,許多高級繪圖函數(例如 plot 、 hist 、nboxplot )也允許自行設定坐標軸和文本標註選項。舉例來說,以下代碼在圖形上添加了標題( main )、副標題( sub )、坐標軸標籤( xlab 、 ylab )並指定了坐標軸範圍( xlim 、 ylim )。舉例如下(藥物A劑量和響應的折線圖。添加了標題、副標題和自定義的坐標軸)
3.4.1 標題
可以使用 title() 函數為圖形添加標題和坐標軸標籤。調用格式為:
title(main="mainntitle", sub="subtitle",xlab="x-axis label",nylab="y-axis label")
函數 title() 中亦可指定其他圖形參數(如文本大小、字體、旋轉角度和顏色)。舉例來說,以下代碼將生成紅色的標題和藍色的副標題,以及比默認大小小25%的綠色x軸、y軸標籤:
3.4.2 坐標軸
你可以使用函數 axis() 來創建自定義的坐標軸,而非使用R中的默認坐標軸。其格式為:
axis(side,nat=, labels=, pos=, lty=, col=, las=, tck=, ...)
創建自定義坐標軸時,你應當禁用高級繪圖函數自動生成的坐標軸。參數 axes=FALSE 將禁用全部坐標軸(包括坐標軸框架線,除非你添加了參數nframe.plot=TRUE )。參數 xaxt="n" 和yaxt="n" 將分別禁用X軸或Y軸(會留下框架線,只是去除了刻度)。
3.4.3 參考線
函數 abline() 可以用來為圖形添加參考線。函數 abline() 中也可以指定其他圖形參數(如線條類型、顏色和寬度)。
3.4.4 圖例
當圖形中包含的數據不止一組時,圖例可以幫助你辨別出每個條形、扇形區域或折線各代表哪一類數據。我們可以使用函數 legend() 來添加圖例。
3.4.5 文本標註
我們可以通過函數 text() 和 mtext() 將文本添加到圖形上。text() 可向繪圖區域內部添加文本,而 mtext() 則向圖形的四個邊界之一添加文本。
不同字體族代碼:
3.4.6 數學標註
函數nplotmath() 可以為圖形主體或邊界上的標題、坐標軸名稱或文本標註添加數學符號。
3.5 圖形的組合
在R中使用函數 par() 或 layout() 可以容易地組合多幅圖形為一幅總括圖形。
001.你可以在 par() 函數中使用圖形參數 mfrow=c(nrows, ncols)來創建按行填充的、行數為rows 、列數為 ncols 的圖形矩陣。另外,可以使用 mfcol=c(nrows, ncols) 按列填充矩陣。
通過par(mfrow=c(2,2)) 組合的兩行兩列圖形:
通過par(mfrow=c(3,1)) 組合的三行一列圖形:
002. 函數 layout() 的調用形式為 layout(mat) ,其中的 mat 是一個矩陣,它指定了所要組合的多個圖形的所在位置。代碼及圖形如下:
圖形布局的精細控制可以使用圖形參數 fig= 完成這個任務。舉例如下:
理解參數 fig= 的取值是一個形如 c(x1, x2, y1, y2) 的數值向量。
本章總結:
001.如何修改一幅圖形的坐標軸、字體、繪圖符號、線條和顏色;
002以及如何添加標題、副標題、標籤、文本、圖例和參考線;
003.看到了如何指定圖形和邊界的大小,以及將多幅圖形組合為實用的單幅圖形。
推薦閱讀:
※在Linux系統安裝R
※Apache kylin進階——元數據篇
※第四關作業1,翻譯一篇大神的文章
※在數據採集上的痛苦、幻想與失望
※RHadoop環境的搭建基礎