标度(scale),是将資料空間(标度的定義域)映射到圖形屬性空間(标度的值域)
的一個函數。
每一種圖形屬性都有一個預設的标度,當我們每一次使用這個圖形屬性時都會自動
添加到圖形中。
圖形屬性 | 離散型 | 連續型 |
---|---|---|
顔色(colour)和填充色(fill) | brewer、grey、hue、identity、manual | gradient、gradient2、gradientn |
位置(position)(x,y) | discrete | continuous、date、datetime、log10、sqrt、reverse |
形狀(shape) | shape、identity、manual | |
線條類型(line type) | linetype、identity、manual | |
大小(size) | identity、manual | size |
各種标度,粗體是預設
用法:以scale_開頭,接下來是圖形屬性名稱(例如,colour_、shape_或x_),最後以标度的名稱結尾(例如,gradient、hue 或manual)。比如,離散性資料的顔色圖形屬性預設标度名為scale_colour_hue(),形狀圖形屬性标度為scale_shape_shape()。使用?或者help()可以檢視相關參數及具體用法。
- scale_x_XXX、scale_y_XXX 是控制x、y 軸的标度,用于設定x、y 軸的顯示标簽、顯示範圍、刻度上的值等等。XXX 主要有continuous、data、datatime、discrete、log10、sqrt 等等。
- 對于圖例的标度,如果圖例是控制着顔色屬性colour,那麼使用scale_colour_XXX 可以設定這個圖例的屬性(比如标簽、顯示的值)。類似的還有scale_size_XXX、scale_fill_XXX、scale_shape_XXX 等等,具體用法以及參數請檢視幫助文檔。
1. 設定坐标軸與圖例标簽
設定坐标軸或者圖例的标簽:
通過運用xlab、ylab、labs 三個輔助函數,也可以設定坐标軸或者圖例的标簽。以下
三個代碼繪制的圖形是一樣的:
p <- qplot(cty,hwy,data=mpg,colour=displ)
p + scale_x_continuous('City mpg') + scale_y_continuous('Highway mpg')
p + xlab('City mpg') + ylab('Highway mpg')
p + labs(x = ('City mpg'), y = ('Highway mpg'))
設定圖例顯示标簽:
p + scale_colour_gradient('Displacement')
p + labs(colour = 'Displacement')
2. 參數limits
limits 可以用于固定标度定義域,即指定資料顯示範圍。連續型标度接受長度為2 的數值型向量;離散型接受一個字元型向量。limits 影響的是圖形上顯示的元素。
比如以下兩個代碼中,第一個代碼控制x 軸,隻顯示(10,25)的資料(左圖);第二個控制圖例顯示範圍,隻顯示(2,5)的部分圖例,而且圖中在(2,5)之外的資料沒有指定顔色(即灰色)。
p + scale_x_continuous(limits=c(,))
p + scale_colour_gradient(limits=c(,))
3. 參數breaks 和labels
breaks 控制着顯示坐标軸或圖例上的值,即坐标軸上應該顯示哪些刻度線的值,或一個連續标度在一個圖例中将被如何分段。breaks 影響顯示坐标軸或圖例上的元素。
labels 指定了應在斷點處顯示的标簽。如果設定了labels,則必須同時指定breaks,隻有這樣兩個參數才能正确比對。
p + scale_x_continuous(breaks=c(,,))
p + scale_colour_gradient(breaks=c(, , , ))
從以上兩個圖形中可以看出,使用breaks 參數改變的僅僅是坐标軸與圖例中顯示的值,圖中元素并沒有發生改變。而使用limits 參數會影響圖中元素。
p + scale_x_continuous(breaks=c(,,),labels=c('A','B','C'))
p + scale_colour_gradient(breaks=c(,,,,),labels=c('A','B','C','D',"E"))
同樣的,參數labels 與breaks 一樣,改變的隻是坐标軸或圖例上的元素,而不會改變圖形中的元素。