2016-10-14 2 views
1

私は、facet_gridを持っていて、成長変数の符号に基づいて異なった線に点を描きたいと思っています。何らかの理由で、私はほとんどのパネルで2行を取得します。グラフからわかるように、正しく動作しません。ggplot signet_gridと標識の色

df2$sign <- paste(sign(df2[df2$variable %in% c('growth'), 'value'])) 
gg <- ggplot(df2, aes(x = date, y = value, colour = sign)) + geom_line() + facet_grid(variable ~ ., scales = 'free_y') 
gg <- gg + scale_fill_manual(values = c('1' = "green", '-1' = "red", 'NA' = 'black')) 

enter image description here

更新、全体dputはここで、あまりにも多くのかもしれません@hrbrmstrたちは本当に明確なを与えるためにここにデータを必要とする彼のコメントで言ったように、チャンク

> dput(df2[sort(sample(1:nrow(df2), 20)), ]) 
structure(list(date = structure(c(113, 204, 330, 442, 764, 834, 
274, 582, 239, 316, 533, 57, 680, 715, 813, 120, 162, 260, 582, 
785), class = "Date"), variable = structure(c(1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L 
), .Label = c("x", "trline", "abovtrend", "growth", "growthpc" 
), class = "factor"), value = c(13.3161181999425, 16.1064371699508, 
17.4335499999019, 15.7080705228661, 21.2452347312702, 24.1828936950835, 
15.8272720823308, 19.1001953187372, 0.716627289232031, 0.618404918297323, 
-0.219587860370801, NA, 4.20745119442357, 1.15183152074574, 0.978670728352593, 
NA, NA, NA, 0.808835828791911, 0.179073426736106), sign = c("NA", 
"NA", "NA", "-1", "1", "1", "NA", "1", "NA", "NA", "1", "NA", 
"1", "1", "1", "NA", "NA", "NA", "1", "1")), .Names = c("date", 
"variable", "value", "sign"), row.names = c(17L, 30L, 48L, 64L, 
110L, 120L, 160L, 204L, 275L, 286L, 317L, 369L, 458L, 463L, 477L, 
498L, 504L, 518L, 564L, 593L), class = "data.frame") 
+2

私たちは 'df2'の代表サンプルまたはその代表的なシミュレートされたデータの' dput() '出力を必要としています。 – hrbrmstr

+0

恐らく、あなたは 'geom_line()'のみを使用しているということです。私は 'geom_point()'を追加し、その色付けだけを提案します。ライン全体を違う色にする必要はありません。 –

+0

データを投稿してくれてありがとう - ちょうど 'variable =" x "'しか持っていないので、ファセットは何もしません。 –

答えて

0

です答えが、私はあなたが実際にあなたのプロットに色付けするためのポイントを追加していないため、あなたが持っている結果を得ていると信じています。ラインに色をつけます。これはあなたが望んだものですか?

df <- data.frame(
    x = 1:5, 
    y1 = c(1, 2, -2, -3, 5) 

) 
df$color <- ifelse(is.na(df$y1), "NA",ifelse(df$y1 < 0,"-1","1")) 
ggplot(df, aes(x, y1)) + geom_point(aes(color=color),size=4) + geom_line() + theme_minimal() 

この色は、赤と青の上の0を示します。色を変更するだけでも簡単です。あなたがそれらを壊すことなく、行に色をすることができるようにしたい場合は

enter image description here

0

、あなたのようなので、groupを使用して、一つのグループとして扱うためにggplotを指示する必要があります(簡単にするためにMikeyMikeのデータ@使用):

ggplot(df, aes(x, y1, color = color, group = 1)) + 
    geom_point() + 
    geom_line() 

enter image description here

それ以外の場合は、カラーグループを個別にプロットされるべきであることを前提としています。明示的にgroupを設定すると、それが無効になります。記号を計算する方法を変更して、必要な線分が色付けされていることを確認する必要があるかもしれませんが、これは良いスタートを与えるはずです。