2016-12-08 30 views
0

可以說我有繪製的人物一些變量,並鏈接了點的顏色對劇情其他一些變量。這是很容易在ggplot2做,產生如下圖:添加單元標籤顏色漸變傳說GGPLOT2

require(ggplot2) 
miss <- sample(c(NA, 1:5), nrow(mtcars), rep = TRUE) 
qplot(mpg, wt, data = mtcars, colour = miss) + 
    scale_colour_gradient(na.value = "black") 

enter image description here

不過,我想了「小姐」的傳說有單位。具體而言,我希望這些單位爲瓦特米-2小時^ -1(帶有適當格式的上標)。什麼是最直接的方式來添加此?

回答

2

創建一個包含所需標籤文本的向量,其中包含任何特殊的plotmath表達式,然後使用parse將其評估爲一個表達式,該表達式將在繪圖中正確呈現。然後,在繪圖代碼中,使用參數breaks設置所需的中斷,並在labels參數中使用相應的標籤。

labs = parse(text=paste0(1:5, "~watts%.%meter^-2")) 

qplot(mpg, wt, data = mtcars, colour = miss) + 
    scale_colour_gradient(na.value = "black", breaks=1:5, labels=labs) 

enter image description here

UPDATE:你可以把單位的圖例旁邊,但你可能需要手動調整它得到安置的權利(儘管有人誰明白的了GROB結構ggplot比我更好的可能會自動化它)。另外,即使我關閉了剪裁,如果圖例太接近圖例,圖例grob仍然會覆蓋單位註釋。我不知道如何解決這個問題。

p1 = qplot(mpg, wt, data = mtcars, colour = miss) + 
    scale_colour_gradient(na.value = "black") + 
    annotate(x=max(mtcars$mpg) + 0.25*diff(range(mtcars$mpg)), 
      y=mean(range(mtcars$wt)) - 0.1, 
      label=lbl, geom="text", parse=TRUE, angle=-90, size=3.3) + 
    coord_cartesian(xlim=range(mtcars$mpg)) + 
    theme(plot.margin=unit(c(0.5,2,0.5,0.5), "lines")) 

# Turn off clipping 
gt <- ggplot_gtable(ggplot_build(p1)) 
gt$layout$clip <- "off" 
grid.draw(gt) 

enter image description here

+0

是否有可能使這一個標籤是「瓦*米^ -2「,也許旋轉90度,並在顏色漸變條的左側? – colin

+1

查看更新的代碼。 – eipi10

1

如果您在圖例希望它只是上面這將是解決辦法

require(ggplot2) 
miss <- sample(c(NA, 1:5), nrow(mtcars), rep = TRUE) 
qplot(mpg, wt, data = mtcars, colour = miss) + 
scale_colour_gradient(na.value = "black", name = bquote('' ~W ~ m^-2~h^-1*'')) 

enter image description here