天天看點

《R繪圖系統(第2版)》一2.6 繪圖函數的參數

本節書摘來自異步社群《r繪圖系統(第2版)》一書中的第2章,第2.6節,作者【紐西蘭】paul murrell,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

在通常情況下,特别是繪制用于發表出版的繪圖時,通過簡單調用一個進階繪圖函數繪制的圖像并不能夠滿足我們的所有需求。r提供了許多方式可以修改繪圖函數的輸出,并且本書第3章有關于這個話題的詳細談論。這一節僅僅探讨一下通過指定進階繪圖函數的參數來改進輸出圖形的可能性。

對于給定的某個函數其大多數參數是特定的。例如,在boxplot()函數的所有參數中有兩個參數:width 和 boxwex,用于控制圖形中箱子的寬度,而在barplot()函數中有一個參數horiz,是用來控制是否水準地繪制條形而不是豎直地繪制。接下來的代碼展示了在boxplot()函數中使用boxwex參數以及在barplot()函數中使用horiz參數的例子(見圖2.7)。

《R繪圖系統(第2版)》一2.6 繪圖函數的參數

圖2.7 修改前後barplot()函數和boxplot()函數的輸出比較。上方的兩幅圖是調用boxplot()函數繪制的同樣的資料,隻是boxwex參數設定的值不同。下面的兩幅圖也調用barplot()繪制同樣的資料,隻是horiz參數設定的值不同。

在第一個例子中,boxplot()函數有兩個調用,調用基本上是相同的,除了第二個調用指定每個箱子的寬度是預設寬度的一半(boxwex=0.5)。

在第二個例子中,函數barplot()調用了兩次,調用基本上是相同的,除了第二個調用指定箱子是水準繪制而不是豎直繪制的(horiz=true)。

總之,使用者需要參考針對某個特定函數的說明文檔來決定哪個參數可用以及使用參數所産生的效果。

盡管許多參數的存在僅僅是針對某一個特定的繪圖函數的,r系統中仍然存在着許多“标準”參數,“标準”意味着很多進階傳統繪圖函數都可以接受該參數。

大多數進階函數都能夠接受那些控制例如顔色(col),線段類型(lty),以及字型(font和 family)等屬性的繪圖參數。3.2節給出了一個完整的标準參數清單并描述了它們的對繪圖的影響。

不幸的是,這些标準參數的解釋在某些情況下是不同的,是以需要特别注意。例如,如果在标準散點圖中col參數作用是特定的,隻影響資料符号的顔色(而不影響坐标軸以及坐标軸标簽的顔色),但是在barplot()函數中,col參數指定了條形内部填充條形或者應用模式所使用的顔色。

此外,對于标準繪圖參數,有專門用來控制繪圖中坐标軸以及标簽行為的标準參數。通常在調用進階繪圖函數繪制一個圖形的過程中,通過指定xlim或者ylim參數來調整坐标軸尺度的範圍,并且通常有一個參數集來指定圖形中的标簽:main參數用于标題,sub參數用于子标題,xlab參數指定x軸的标簽以及ylab參數指定y軸的标簽。

盡管并不能夠保證這些标準參數可以被擴充圖形包中的進階繪圖函數接受,但在多數情況下,這些參數是可以被接受的,并且可以産生期望的效果。

接下來的代碼展示了一些在plot()函數中設定這些标準參數的例子(見圖2.8)。所有對plot()函數的調用都使用同一組資料,并用來繪制所有資料點通過線段連接配接的散點圖:第1個調用設定了較寬的線條(lwd=3),第2個調用設定了線條顔色為灰色(col="gray"),第3個調用将線條類型設定為虛線(lty="dashed"),第4個調用設定了較寬的y軸尺度範圍(ylim=c(-4,4))。

《R繪圖系統(第2版)》一2.6 繪圖函數的參數

圖2.8 進階繪圖函數中的标準參數。所有的4幅圖都是通過調用plot()函數繪制同一組資料産生的,隻是指定了不同标準參數的值。左上方的圖形通過設定lwd參數控制線段粗細;右上方的圖形通過設定col參數控制顔色;左下方的圖形通過設定lty參數控制線條類型;右下方的圖形通過設定ylim參數控制y軸的尺度。

對于不能夠隻通過指定進階繪圖函數參數來改變進階繪圖函數預設輸出的情況,可能的選項是通過低級繪圖函數在已有圖形上添加額外的輸出(見3.4節),或者是從頭開始生成一個完整的圖形(見3.5節)。

有些進階函數提供了一個能夠阻止某些預設輸出的參數,以幫助使用者定制自己的圖形。例如,預設的plot()函數有一個axes參數用來幫助使用者隐藏坐标軸,以及一個ann參數用來在圖形中隐藏坐标軸标簽,這樣使用者就可以自己定制圖形中的坐标軸和坐标軸标簽了(見3.4.4小節)。