我正在製作一個帶有ggplot2
的「靶心」或「飛鏢板」圖。我想問問是否有辦法爲我正在創建的圖形手動添加漸變圖例,或者是否有方法修改我的過程以添加該圖例。在ggplot2中添加手動漸變圖例
這是一個可重複的數據集的工作:
step <- 0.1
frac <- seq(0, 1, step)
df <- data.frame(l=levels(cut(0, breaks=frac)), o=frac[1:length(frac)-1], f=c(0.000, 0.028, 0.165, 0.151, 0.149, 0.129, 0.138, 0.060, 0.090, 0.088), cols=c('#0000FF','#4343FF','#FF4343','#FF6969','#FF7070','#FFA4A4','#FF8E8E','#9D9DFF','#F0F0FF','#E8E8FF'))
這裏是什麼樣子:
> df
df
l o f cols
1 (0,0.1] 0.0 0.000 #0000FF
2 (0.1,0.2] 0.1 0.028 #4343FF
3 (0.2,0.3] 0.2 0.165 #FF4343
4 (0.3,0.4] 0.3 0.151 #FF6969
5 (0.4,0.5] 0.4 0.149 #FF7070
6 (0.5,0.6] 0.5 0.129 #FFA4A4
7 (0.6,0.7] 0.6 0.138 #FF8E8E
8 (0.7,0.8] 0.7 0.060 #9D9DFF
9 (0.8,0.9] 0.8 0.090 #F0F0FF
10 (0.9,1] 0.9 0.088 #E8E8FF
下面是可重複的代碼來生成的情節:
library(ggplot2)
#pdf("test.pdf", width=8, height=8)
p <- ggplot() + ylim(0, 1) + geom_rect(aes(xmin=-1, ymin=df$o, xmax=1, ymax=df$o+step), fill=df$cols) + coord_polar() + theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
print(p)
#dev.off()
下面是這段代碼生成的情節 - 基本上是一組具有所需顏色填充的同心環:
我想圖例欄添加到該圖顯示從起始顏色結束顏色的(線性)梯度,在使用的df$f
最小/最大的標籤。
我可以從df
手動提供的開始和結束的顏色 - 或從單獨的colorRampPalette
物體(未示出)的第一和最後一個條目 - 或提供從colorRampPalette
對象的顏色陣列,以提供經內插的色彩。我只是不知道如何生成與主圖分離的圖例對象。
有沒有辦法手動構建和追加這樣的對象到這個圖上?
我嘗試過的幾件事是探索guide_colourbar()
object和scale_colour_gradientn()
對象,但我無法使用這些實體獲得任何東西進入我的情節。有沒有辦法在這裏使用它們?
我還在學習ggplot讓我欣賞的那種幫助。 –