2015-07-13 77 views
2

我在R中使用ggplot來繪製一些數據。我試圖做的是在圖表的不同區域中背景不同的散點圖。有一個非常有幫助的答案here,讓我在那裏的大部分途徑,但不是所有的方式。使用因子變量更改ggplot圖表的背景顏色

這裏是數據

row.names selectionDirector country  Totals director.rank 
1 268 Alfred Hitchcock Argentina 14  1 
2 269 Alfred Hitchcock Australia 7   3 
3 274 Alfred Hitchcock Canada  10  1 
4 286 Alfred Hitchcock France  18  1 
5 288 Alfred Hitchcock Germany  9   6 
6 296 Alfred Hitchcock Italy  5   3 
7 319 Alfred Hitchcock Spain  21  4 
8 320 Alfred Hitchcock Sweden  4   8 
9 325 Alfred Hitchcock UK   87  1 
10 330 Alfred Hitchcock US   87  1 
11 346 Andrei Tarkovsky Argentina 4   20 
12 347 Andrei Tarkovsky Australia 2   34 
13 355 Andrei Tarkovsky Canada  2   32 
14 365 Andrei Tarkovsky France  2   37 

我的代碼的一個示例:

rects <- data.frame(xstart = seq(-0.5,8.5,1), xend = seq(0.5,9.5,1), col = letters[1:10]) 

ggplot() + 
    geom_rect(data=rects,aes(ymin=0,ymax=80,xmin=xstart,xmax=xend,fill=col)) + 
    geom_point(data=top.votes.by.director.country, aes(x=country, y=director.rank)) + 
    coord_flip() + 
    facet_wrap(~selectionDirector) 

國家是具有10個值的一個因素。 director.rank是數字。它們都來自數據框top.votes.by.director.country。我的想法是爲每個國家的水平區域設置一個不同的背景,以便在我面向時更容易閱讀。 enter image description here

想象一下上面的圖片,不同的是,不用彩色點,每個國家會有一個黑色點後面的彩色條帶。我可以在網上找到的最接近是下面的圖表,從答案取自上面的鏈接:

enter image description here

所以就在方位圖中每個國家的彩色背景,就像上面圖中有一每個地區的彩色背景。

問題是,當我運行上面的代碼時,出現以下錯誤。

Error: Discrete value supplied to continuous scale

當我刪除geom_rect部分時,它工作正常。如果我將geom_rect移到facet_wrap以上,我會得到一個圖表,儘管它很糟糕。如果我只是做geom_rect部分,我會得到我想要的背景。

我一直在爲此亂搞幾個小時,無法讓它工作。

+0

你能提供你的數據樣本嗎?也是預期產出的一個例子。 – Molx

+0

我試圖在帖子中添加更多相關信息。我添加了一個數據樣本,並且可以找到我想要的輸出的最接近的近似值。這將是我創建的圖表與其背景爲不同顏色的圖表之間的某種組合。 –

回答

1

發生錯誤時嘗試將離散值繪製爲連續縮放。 就你而言,你在x中繪製了「國家」爲「-0.5〜9.5」。你可以改變你的繪圖順序。

我用「希區柯克」 selectionDirector通過下面的代碼

rects <- data.frame(xstart = seq(0.5,9.5,1), xend = seq(1.5,10.5,1), 
     col = letters[1:10]) 
ggplot() + geom_point(data=top.votes.by.director.country, 
         aes(x=country, y=director.rank)) + 
      geom_rect(data=rects, aes(ymin=0, ymax=80, xmin=xstart, 
         xmax=xend, fill=col), alpha =0.5) + coord_flip() 

繪製,其結果如下圖所示。

enter image description here

注:I 「1」 RECT的x移位(開始於0.5,不-0.5),並添加阿爾法屬性RECT。

+0

非常感謝!這很好。我對問題的內容仍然有些模糊。我明白這個國家是離散的,「-0.5〜9。5「不是,但我不太瞭解國家如何分配的機制,或者爲什麼反過來也不會導致錯誤。 –

+0

我並不瞭解機制detial。在我的經驗,當錯誤發生時,可以按照下面的方式來解決:繪製「連續」尺度,然後「離散」或使用尺度函數(例如:[scale_x_discrete](http://docs.ggplot2.org/current/scale_discrete .html),[scale_x_continous](http://docs.ggplot2.org/current/scale_continuous.html)...)更改比例。 – peterchen932