2012-05-30 58 views
2

我想用ggplot來製作一個簡單的字段映射。該場的設計是這樣的格式:爲ggplot2中的不同因素映射兩種顏色美學

design <- data.frame(Genotype=rep(LETTERS[1:4], 4), Status=rep(c("P","N"), each=8), 
       Density=rep(c(40,80), each=4), 
       Row=rep(seq(1:4)), 
       Range=rep(1:4, each=4)) 

我想與填充地圖映射到Genotype並映射到Density別的東西(理想亮度)。我最近來的是使用alpha,但它並不理想,因爲它從非常低的alpha值變爲非常高。在非常低的alpha值時,很難看到填充是什麼。

下面是我的陰謀代碼目前:

d.p <- ggplot(design, aes(Row, Range)) 
d.p1 <- d.p + geom_tile(aes(fill=Genotype, alpha=Density)) 

我擺弄周圍scale_fill_hue,但似乎無法做任何事情發生懂事。

在此先感謝。

編輯

對不起,我意識到,我離開了我的現實世界的問題的一個基本方面,當我做了重複的例子,上面固定。

如下指出,alpha可以映射到密度,但我也需要區分Status。孵化似乎是一個明顯的解決方案,但我明白這不是一個選擇。我可以手動指定相似的顏色(淺藍色,深藍色等),但是我真的很希望能夠將其自動化,以便我可以在任何現場設計中使用它。

任何想法表示讚賞,並抱歉的混亂!

回答

4

我會忽略的事實是和Genotype包含冗餘信息,並提供了這一點:

ggplot(design,aes(x = Row,y = Range)) + 
    geom_tile(fill = "transparent",colour = "black") + 
    geom_point(aes(colour = Genotype,size = factor(Density),shape = Status)) + 
    scale_size_manual(values = c(3,6)) 

enter image description here

但直覺告訴我將有一個原因,你不能做到這一點無論。

+0

我完全可以看到你來自哪裏,這是一個完全合理的解決方案。這裏的問題是我沒有真正做出情節,我正在製作一張地圖,並且場地圖具有定義的風格。雖然'Genotype'和'Row'在這種情況下有冗餘信息,通常情況並非如此。我認爲唯一真正的解決方案是手動應用相似的顏色,然後像你之前建議的那樣使用alpha。但你一路上有我。 – alexwhan