2015-07-20 118 views
3

我想設置我的圖例的線型。ggplot legend中的虛線

我的數據是這樣的:

VisitMonth VisitYear CaixaForum MNAC FirstDay 
    1:   01  2007   NA 7125 2007-01-01 
    2:   02  2007   NA 5345 2007-02-01 
    3:   03  2007   NA 4996 2007-03-01 
    4:   04  2007   NA 5476 2007-04-01 
    5:   05  2007   NA 6160 2007-05-01 
---             
98:   02  2015  17903 2360 2015-02-01 
99:   03  2015  30400 2930 2015-03-01 
100:   04  2015  25422 3088 2015-04-01 
101:   05  2015  10787 2130 2015-05-01 
102:   06  2015  3679 2047 2015-06-01 

我想繪製CaixaForum論壇和MNAC列的時間序列。我有以下代碼:

ggplot(data = MUSEUMS, aes(x = FirstDay, y = MNAC)) + 
    geom_line(size=0.75, aes(x = FirstDay, y = MNAC, colour = "MNAC")) + 
    geom_line(size=0.75, aes(y = CaixaForum, colour = "CaixaForum"), linetype = "dashed") + 
    labs(title = "", x = "", y = "Monthly Visitors") + theme_bw() + 
    theme(legend.title = element_text(size=16, face="bold"), legend.direction = "horizontal", 
     legend.position=c(0.5, 1.05), text = element_text(size=20)) + 
    scale_colour_manual(name="Legend",values=c(MNAC="black", CaixaForum="black")) 

正如你可以看到,你不能兩個線型之間的區分傳說:

enter image description here

我怎麼能解決嗎?

我編寫了其他答案在stackoverflow但他們沒有奏效。

+0

您可以使用'reshape2'包中的'melt'將您的數據轉換爲長格式。你會得到兩列「變量」和「值」。然後,您將美學改爲「y = value」和「linetype = variable」。 – drmariod

+0

@drmariod ...也許你的意思是'linetype = variable',如果他們也想在圖例中看到它,那麼它們看起來就是這樣。 – joran

+1

您缺少的更大圖片是,當您將'amap()'中的數據變量映射到美學時,圖例中會出現這些東西。 – joran

回答

5

你可以只需切換到兩個點層使用linetype代替color,因爲你沒有實際使用color在任何你的圖形。

它應該是這樣的:

ggplot(data = MUSEUMS, aes(x = FirstDay, y = MNAC)) + 
    geom_line(size=0.75, aes(x = FirstDay, y = MNAC, linetype = "MNAC")) + 
    geom_line(size=0.75, aes(y = CaixaForum, linetype = "CaixaForum")) + 
    labs(title = "", x = "", y = "Monthly Visitors") + theme_bw() + 
    theme(legend.title = element_text(size=16, face="bold"), legend.direction = "horizontal", 
      legend.position=c(0.5, 1.05), text = element_text(size=20)) + 
    scale_linetype_manual(name="Legend",values=c(MNAC="solid", CaixaForum="dashed")) 

如果你真的想使用你現在正在使用某種原因的辦法,你可以通過添加以下行,讓你通過在guide_legendoverride.aes希望線您的圖形:

guides(color = guide_legend(override.aes = list(linetype = c("solid", "dashed")))) 
0

我創造了一些隨機數據顯示解決方案...

library(reshape2) 
df <- data.frame(a=rnorm(10), b=rnorm(10), x=1:10, other_data=rnorm(10)) 
mdf <- melt(df, id.vars='x', measure.vars=c('a','b')) 
ggplot(mdf, aes(x, value, linetype=variable)) + geom_line()