ggplot2學習筆記之顏色標度
以下標度對邊界色(colour)圖形屬性和填充色(fill)圖形屬性均有效。
連續型:
根據顏色梯度色彩數量劃分,共有三類連續型顏色梯度(即漸變色):
- scale_colour_gradient()和scale_fill_gradient()
- scale_colour_gradient2()和scale_fill_gradient2():三色梯度。順序為低-中-高,引數low和high 用於控制此梯度兩端顏色,中點預設值是0,可以用引數midpoint 將其設定為任意值;
- scale_colour_gradientn()和scale_fill_gradientn():自定義的n 色梯度。此標度需要賦給引數colours 一個顏色向量。不加其他引數的話,這些顏色將依照資料的範圍均勻地分佈。如果你需要讓這些值不均勻地分佈,則可以使用引數values。如果引數rescale 的值是TRUE(預設),則values 應在0 和1 之間取值,如果rescale 取值FALSE,則values
應在資料範圍內取值。
顏色梯度常被用來展示一個二維表面的高度,用以描述第三維度,顏色的深淺代表著不同的值,例如描述地勢高低時,地勢的高低常常用顏色深淺來展現。以下將使用R自帶的一個向量資料集volcano,經過以下轉換成資料框(ggplot2 只接受資料框型別):
<span style="font-size:14px;">library(reshape2) volcano3d <- melt(volcano) names(volcano3d) <- c("x", "y", "z") p <- ggplot(data,aes(x,y,fill=z)) + geom_tile() p p + scale_fill_gradient(limits=c(120,170)) p + scale_fill_gradient(low = 'blue', high = 'red')</span>
第一個使用預設引數;第二圖使用了引數 limits=c(120,170),用於控制填充顏色的值範圍,所以小於 120 與大於 170 的值都沒有顏色(即都是灰色);最後一個圖中使用了引數 low 與 high,控制顏色在 low 與 high 之間漸變。
<span style="font-size:14px;">p + scale_fill_gradient2(low = 'blue', high = 'red')
p + scale_fill_gradient2(low = 'blue', high = 'red', midpoint = 150)</span>
以上兩圖都設定了顏色由 blue 到 red 漸變,但是左圖使用預設引數 midpoint=0,右圖使用引數midpoint=150,而 z 值的範圍是 94~195,所有他們在圖中實際漸變色為,左圖:淺紅-紅,右圖:藍-白-紅 。
<span style="font-size:14px;">p + scale_fill_gradientn(colours = c('black','blue','red','white'))
p + scale_fill_gradientn(colours = topo.colors(10))
p + scale_fill_gradientn(colours = terrain.colors(10))
p + scale_fill_gradientn(colours = heat.colors(10))</span>
離散型:
離散型資料有兩種顏色標度。一種可以自動選擇顏色,另一種可以輕鬆地手工從顏色集中選擇顏色。
預設的配色方案,即scale_colour_hue()、cale_fill_hue(),可通過沿著hcl 色輪選取均勻分佈的色相來生成顏色。這種方案對顏色較少時有比較好的效果,但對於更多不同的顏色就不好區分開來。裡面的各個引數就不多說了,具體檢視幫助。
另一種可選的方案是ColorBrewer 配色,http://colorbrewer.org。使用的是scale_colour_ brewer ()、scale_fill_ brewer ()。要想了解所有的調色盤,可以使用RColorBrewer::display.brewer.all()檢視。以下是調色盤:
使用時,用引數palette=”調色盤名稱或者數字”。例如,使用第二個調色盤時用palette = 2(等價於palette = 'YIOrBr')。以下以畫箱線圖為例。
<span style="font-size:14px;">dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
(d <- ggplot(dsamp, aes(cut, price, fill = cut)) + geom_boxplot())
d + scale_fill_brewer()
d + scale_fill_brewer(palette = 2)
d + scale_fill_brewer(palette = "Spectral")</span>
左上圖使用預設配色方案 cale_fill_hue();後三種都是使用第二種配色方案,分別使用的調色盤是:預設調色盤、YIOrBr 調色盤、Spectral 調色盤。