天天看點

ggplot2學習筆記之标度scale

标度(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'))
           
ggplot2學習筆記之标度scale

設定圖例顯示标簽:

p + scale_colour_gradient('Displacement')
p + labs(colour = 'Displacement')
           
ggplot2學習筆記之标度scale

2. 參數limits

limits 可以用于固定标度定義域,即指定資料顯示範圍。連續型标度接受長度為2 的數值型向量;離散型接受一個字元型向量。limits 影響的是圖形上顯示的元素。

比如以下兩個代碼中,第一個代碼控制x 軸,隻顯示(10,25)的資料(左圖);第二個控制圖例顯示範圍,隻顯示(2,5)的部分圖例,而且圖中在(2,5)之外的資料沒有指定顔色(即灰色)。

p + scale_x_continuous(limits=c(,))
p + scale_colour_gradient(limits=c(,))
           
ggplot2學習筆記之标度scale

3. 參數breaks 和labels

breaks 控制着顯示坐标軸或圖例上的值,即坐标軸上應該顯示哪些刻度線的值,或一個連續标度在一個圖例中将被如何分段。breaks 影響顯示坐标軸或圖例上的元素。

labels 指定了應在斷點處顯示的标簽。如果設定了labels,則必須同時指定breaks,隻有這樣兩個參數才能正确比對。

p + scale_x_continuous(breaks=c(,,))
p + scale_colour_gradient(breaks=c(, , , ))
           
ggplot2學習筆記之标度scale

從以上兩個圖形中可以看出,使用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"))
           
ggplot2學習筆記之标度scale

同樣的,參數labels 與breaks 一樣,改變的隻是坐标軸或圖例上的元素,而不會改變圖形中的元素。

繼續閱讀