2017-04-13 40 views
0

我可以看到有很多類似的問題,但我找不到解決方案,我的特定問題。 數據:添加圖例與gomplot geom_line與因素的顏色和手動添加行

risk_accum <- structure(list(date = structure(c(1465948800, 1465952400, 1465956000, 
           1465959600, 1465963200, 1465966800, 1465970400, 1465974000, 1465977600, 
           1465981200, 1465984800, 1465988400, 1465992000, 1465995600, 1465999200, 
           1466002800, 1466006400, 1466010000, 1466013600, 1466017200, 1466020800, 
           1466024400, 1466028000, 1466031600, 1466035200, 1466038800, 1466042400, 
           1466046000, 1466049600, 1466053200, 1466056800, 1466060400, 1466064000, 
           1466067600, 1466071200, 1466074800, 1466078400, 1466082000, 1466085600, 
           1466089200, 1466092800, 1466096400, 1466100000, 1466103600, 1466107200, 
           1466110800, 1466114400, 1466118000, 1466121600, 1466125200, 1466128800, 
           1466132400, 1466136000, 1466139600, 1466143200, 1466146800, 1466150400, 
           1466154000, 1466157600, 1466161200, 1466164800, 1466168400, 1466172000, 
           1466175600, 1466179200, 1466182800, 1466186400, 1466190000, 1466193600, 
           1466197200, 1466200800, 1466204400, 1466208000, 1466211600, 1466215200, 
           1466218800, 1466222400, 1466226000, 1466229600, 1466233200, 1466236800, 
           1466240400, 1466244000, 1466247600, 1466251200, 1466254800, 1466258400, 
           1466262000, 1466265600, 1466269200, 1466272800, 1466276400, 1466280000, 
           1466283600, 1466287200, 1466290800, 1466294400, 1466298000, 1466301600, 
           1466305200, 1466308800, 1466312400, 1466316000, 1466319600, 1466323200, 
           1466326800, 1466330400, 1466334000, 1466337600, 1466341200, 1466344800, 
           1466348400, 1466352000, 1466355600, 1466359200, 1466362800, 1466366400, 
           1466370000, 1466373600, 1466377200), class = c("POSIXct", "POSIXt" 
          ), tzone = "UTC"), risk = c(NA, NA, NA, 1, 2, 3, 4, 5, 6, NA, 
                  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
                  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1, 2, 3, NA, NA, NA, 
                  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
                  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
                  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
                  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1, 2, 3, 
                  4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, NA, NA)), .Names = c("date", 
                                 "risk"), row.names = c(NA, -120L), class = c("tbl_df", "tbl", 
                                             "data.frame")) 

和代碼生成圖表:

#color variable 
color_var <- vector(mode = "double",length = length(risk_accum$risk)) 
color_var[color_var== '0']<-NA 
color_var[risk_accum$risk<6] <- "green4" 
color_var[risk_accum$risk>=6 & risk_accum$risk<12] <- "yellow2" 
color_var[risk_accum$risk>=12] <- "red" 

#plot of Effective Blight Hours accumulation 
ggplot(risk_accum)+ 
    geom_line(aes(x = date, y = risk), color = color_var)+ 
    scale_y_continuous(name = "EBH accumulation")+ 
    scale_colour_manual(values=c("green", "yellow", "red"))+ 
    geom_line(aes(date, y= 12), linetype= "dotted", size = 0.1)+ 
    theme(axis.title.x = element_blank()) 

我需要一個傳說這可以解釋的交通燈系統(紅色爲危險等)和手動添加的閾值的風險線。

+0

遺憾,錯過了一個行.... –

回答

2

將您的顏色變量添加到數據集中,映射到aes中的該變量,並使用scale_*_identity直接使用顏色。

risk_accum$color_var <- NA 
risk_accum$color_var[risk_accum$risk<6] <- "green4" 
risk_accum$color_var[risk_accum$risk>=6 & risk_accum$risk<12] <- "yellow2" 
risk_accum$color_var[risk_accum$risk>=12] <- "red" 


ggplot(risk_accum)+ 
    geom_line(aes(x = date, y = risk, color = color_var)) + 
    scale_y_continuous(name = "EBH accumulation")+ 
    scale_color_identity(guide = 'legend') + 
    geom_line(aes(date, y= 12), linetype= "dotted", size = 0.1)+ 
    theme(axis.title.x = element_blank()) 

enter image description here

您也可以將您的門檻添加到傳說:

ggplot(risk_accum)+ 
    geom_line(aes(x = date, y = risk, color = color_var)) + 
    geom_line(aes(date, y= 12, linetype = "threshold"), size = 0.1)+ 
    scale_y_continuous(name = "EBH accumulation")+ 
    scale_color_identity(guide = 'legend') + 
    scale_linetype_manual(values = 2) + 
    theme(axis.title.x = element_blank()) 

enter image description here

+0

感謝,斧頭兵。我得到了這個傳說,但圖表已經改變了...... –

+0

我剛剛清理了我的環境並嘗試了這裏提供的代碼,並且它可以正常工作。如果你嘗試相同的方式,它可能會工作,也許你已經加載了一些其他的東西阻礙。 –

+0

將'group = 1'添加到'aes'。就像我說的。 – Axeman