2015-11-15 48 views
0

創建多個混合的傳說我在ggplot2(該ChickWeight數據幀的虛構的修改)以下情節:如何GGPLOT2

require(ggplot2) 
ChickWt <- data.frame(ChickWeight, Sex = rep(c("M", "F"), times = 289)) 
p1 <- ggplot(ChickWt, aes(x=Time, y=weight, 
colour=Diet, Group = Chick, linetype = Sex)) + geom_line() 
p1 

這將產生如下:

enter image description here

這很好,除了傳說。

我想圖例爲四對:

食物1-M(有色紫色,實線), 飲食1-F(有色紫色,brokem線),

飲食2 -M(彩色綠色,實線), 飲食2-F(綠色,帶狀折線), ....

等。讓我們說我想把標籤放在一個2×2塊中。 我相信,我可以用

p1 + guides(fill=guide_legend(nrow = 2, ncol = 2)) 

放在一個2×2塊的標籤,但我難倒上的問題是如何使傳說的四對飲食男女組合。任何建議將是一個很大的幫助!

回答

1

您可以通過使用interaction函數生成的DietSex所有組合,然後手動設置的顏色和線型,以您爲每個飲食性組合想要的數值得到一個傳奇。

require(ggplot2) 
require(dplyr) 

# Add Sex column 
set.seed(104) 
ChickWt = ChickWeight %>% group_by(Chick) %>% 
    mutate(Sex = sample(c("M","F"),1)) 

plot.colors = hcl(seq(15,375,length.out=5)[1:4],100,65) 

ggplot(ChickWt, aes(x=Time, y=weight, 
          colour=interaction(Diet,Sex,sep="-"), 
          linetype = interaction(Diet,Sex,sep="-"), 
          group=Chick)) + 
    geom_line() + 
    scale_colour_manual(values=plot.colors[rep(1:4, 2)], name="Diet-Sex") + 
    scale_linetype_manual(values=rep(1:2, each=4), name="Diet-Sex") + 
    guides(colour=guide_legend(ncol=2)) 

enter image description here

+0

但似乎沒有1-F,3-M,4-M。另外,對於每種飲食,我如何獲得四對獨立的對?謝謝! – user3236841

+0

圖表中出現的飲食和性別的組合只是那些出現在數據中的組合。 1-F,3-M和4-M不出現在數據中,因此在圖中不存在。你可以看到數據中出現的組合,例如'with(ChickWt,unique(paste(Diet,Sex,sep =「 - 」)))',它給出了「1-M」 M「」2-F「」3-F「」4-F「'。 – eipi10

+0

抱歉,現在編輯了8個組合。我仍然需要四對飲食(線型代表性)。 – user3236841