2016-04-05 10 views
1

黒から緑の色の線のプロットがあります。しかし、私はx軸上の "Value2"でy値で線を徐々に色付けしたい。 "Value2"で最も高いy値を持つ線は緑色でなければならず、 "Value2"で最も低いy値を持つ線は黒色でなければなりません。ggplot:x軸の1つの特定の点で、その値で線の色を割り当てます。

x軸の特定の点でy値で線に色を割り当てるにはどうすればよいですか?

マイコード:

library(ggplot2) 

x <- structure(list(ID = c("1998-06-05_area2", "1999-07-11_area2", 
"1998-05-13_area1", "1998-05-20_area1", "1998-06-05_area2", "1999-07-11_area2", 
"1998-05-13_area1", "1998-05-20_area1", "1998-06-05_area2", "1999-07-11_area2", 
"1998-05-13_area1", "1998-05-20_area1"), variable = structure(c(1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("Value1", 
"Value2", "Value3"), class = "factor"), value = c(322, 280, 210, 
416, 384, 252, 329, 601, 83, 66, 100, 147)), .Names = c("ID", 
"variable", "value"), na.action = structure(c(1L, 2L, 3L, 4L, 
13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 25L, 26L, 27L, 28L), .Names = c("1", 
"2", "3", "4", "13", "14", "15", "16", "17", "18", "19", "20", 
"25", "26", "27", "28"), class = "omit"), row.names = c(5L, 6L, 
7L, 8L, 9L, 10L, 11L, 12L, 21L, 22L, 23L, 24L), class = "data.frame") 

pal <- colorRampPalette(c("black","green")) 
colorlist <- pal(length(unique(x$ID))) 

ggplot(data = x , aes(x = variable, y = value, color = ID)) + 
    geom_line(aes(group =ID),size=1) + geom_point(size = 2) + 
    scale_colour_manual(values=colorlist) 

答えて

3

我々はプロットを生成するggplot()コールにそれを適切なカラーマッピングのためにあなたのデータを内部の余分な列を作成し、その結果、パイプするためにdplyrを使用することができます。

library(dplyr) 
library(ggplot2) 
x %>% group_by(ID) %>% 
    mutate(col = value[variable == "Value2"]) %>% # Add column to map colours 
    ggplot(aes(x = variable, y = value, color = factor(col))) + 
    geom_line(aes(group =ID),size=1) + geom_point(size = 2) + 
    scale_colour_manual(values=colorlist) 

enter image description here

関連する問題