2017-04-13 12 views
0

これに似た質問がたくさんあることがわかりますが、私の特定の問題に対する解決策は見つかりません。 データ:geom_lineにfactor colorと手作業で追加したggplotに凡例を追加

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

申し訳ありませんが、その1つのライン.... –

答えて

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

おかげで、Axemanを逃しました。私は伝説を持っていますが、グラフが変わってしまいました... –

+0

私は自分の環境をきれいにして、ここで提供されているコードを試してみました。あなたが同じことをしようとすると、おそらくあなたがロードした他のものが途中にあるかもしれません。 –

+0

'aes'に' group = 1'を追加します。私が言ったように。 – Axeman

関連する問題