2013-10-03 28 views
3

我有什麼似乎是一個非常基本的問題,但我解決不了的,因爲我幾乎沒有使用ggplots2 ......我只想說左邊的小區採用的顏色變量color1和右側的圖使用變量color2中的顏色。這是一個MWE:GGPLOT2:在不同的方面用不同的顏色

library(reshape2) 
library(ggplot2) 

a.df <- data.frame(
    id=c("a","b","c","d","e","f","g","h"), 
    var1=c(1,2,3,4,5,6,7,8), var2=c(21,22,23,24,25,26,27,28), 
    var3=c(56,57,58,59,60,61,62,63), 
    color1=c(1,2,"NONE","NONE",1,2,2,1), 
    color2=c(1,"NONE",1,1,2,2,"NONE",2) 
) 

a.dfm <- melt(a.df, measure.vars=c("var2","var3")) 

ggplot(a.dfm, aes(x=value, y=var1, color=color1)) + 
    geom_point(shape=1) + 
    facet_grid(. ~ variable) 

非常感謝!

+1

我有一個需要你的數據進行繪圖之前進一步重新排列的感覺。但要說明是否如此,請提供一些更多的背景知識,並多描述一下你的變量。乾杯。 – Henrik

+0

不是一個確切的重複,但我認爲[這個問題](http://stackoverflow.com/questions/10267583/programmatically-specifying-colours-in-scale-fill-manual-ggplot-call)涵蓋了很多相同的地面,值得檢查。 – SlowLearner

+0

這只是一個非常簡單的例子;我有一個更大的數據框架結構相似,有3個不同的測量變量。我想繪製第一個(在y軸)與第二個和第三個獨立(在x軸)。除此之外,我還分離了var1值較高和var2值較高的25%,var1值較低和var2值較低的25%,而var1 vs var3的值相同。這些是我想要描述的兩種顏色比例(左側=頂部25%var1vs2紅色,底部25%藍色var1vs2,剩餘黑色;右側=頂部25%紅色var1vs3,底部25%藍色var1vs3,黑色休息)。 – DaniCee

回答

4

我想與您的數據最簡單的方法是創建具有基於的variable值適當定義的顏色的附加列。由於variable只有兩個可能的值,所以這並不難。

a.dfm2 <- transform(a.dfm, 
        color.use = ifelse(variable=="var2", 
             as.character(color1), 
             as.character(color2))) 

ggplot(a.dfm2, aes(x=value, y=var1, color=color.use)) + 
    geom_point(shape=1) + 
    facet_grid(. ~ variable) 

enter image description here

+1

工程就像一個魅力!我不確定我是否理解transform()步驟,但我會繼續努力!謝謝! – DaniCee