2017-09-21 12 views
0

私は2つの名前と3つの名前を持つデータテーブルを持っています。R ggplot、1つのgeom_lineに色を設定しますが、別のものを設定します。

dt = CJ(as.Date(c('2000-01-01','2000-01-02','2000-01-03','2000-01-04')), c('A','B'), c('t1','t2','t3')) 
setnames(dt, c('date','name','type')) 
dt[, type := paste0(name, type)] 
dt[, value := rnorm(n = .N) + (name == 'A')] 


date   name type  value 
1: 2000-01-01 A At1 0.3872948 
2: 2000-01-01 A At2 -0.6147802 
3: 2000-01-01 A At3 2.2317864 
4: 2000-01-01 B Bt1 0.4979870 
5: 2000-01-01 B Bt2 -1.7946112 
6: 2000-01-01 B Bt3 0.7247306 
7: 2000-01-02 A At1 0.3148835 
8: 2000-01-02 A At2 0.1124225 
9: 2000-01-02 A At3 1.1758116 
10: 2000-01-02 B Bt1 -0.7068185 
11: 2000-01-02 B Bt2 -1.6968477 
12: 2000-01-02 B Bt3 0.4575144 
.... 

種類によってプロットが、名前による色、私たちは今、私はそれぞれの名前

mdt = dt[, .(value = mean(value)), by = 'name,date'] 

ggplot(dt) + geom_line(aes(x = date, y = value, group = type, col = name)) + 
    geom_line(data = mdt, aes(x = date, y = value, col = name), size = 1.5) 
の手段を表す2つの行を追加したい3本の赤い線と3本の青い線

ggplot(dt) + geom_line(aes(x = date, y = value, group = type, col = name)) 

を取得

これは、個々のラインと平均ラインとで全く同じ2色を使用します。平均行に異なる色を指定するにはどうすればよいですか?

+0

あなたは伝説ではどのように過ごしたいですか?そこに4色ありますか? – PoGibas

+0

理想的には、平均ラインに少し違う色を使用しますので、2つの伝説「赤ちゃんA、青いB」が必要です。しかし、凡例の設定はすべて始めるのが良いでしょう – jf328

+0

色の引数をエースの外に置き、それを明示的な色にマッピングするだけです: 'geom_line(data = mdt、aes(x = date、y = value)、col = "#000000"、size = 1.5) ' – dshkol

答えて

1

プロットmdt行に別のgeom_lineのレイヤーを指定し、色を指定します。
名前の場合プロットの平均行は、geom_line(data = mdt[name == "A"], col = "#ff5a32")と赤色を使用しています。細い線の場合は、同様の色をscale_color_manualと指定します。

library(data.table) 
library(ggplot2) 

mdt <- dt[, .(value = mean(value)), by = .(name, date)] 

ggplot(dt, aes(date, value)) + 
    geom_line(aes(group = type, col = name)) + 
    geom_line(data = mdt[name == "A"], col = "#ff5a32", size = 2) + 
    geom_line(data = mdt[name == "B"], col = "#475cd3", size = 2) + 
    scale_colour_manual(name = "Name", 
         values = c("#ff987f", "#8c99e4")) + 
    labs(x = "Date", 
     y = "Value", 
     title = "Change in value over time") + 
    theme_classic() 

enter image description here

関連する問題