2017-04-23 16 views
1

スムージング曲線(x = var1、y = var2)をプロットし、第3の連続変数(z = var3)に対して色付けする方法はありますか?私は次のコードを使用しています:R ggplot2 - geom_smooth、第3の連続変数からのグラデーションカラー

library(ggplot2) 

    x = runif(100,-20,20) 
    y = 2*x+x^2+rnorm(100,0,50) 
    z = 0.5*x+rnorm(100,0,2) 
    df = data.frame(x=x,y=y,z=z) 

    ggplot(data=df,aes(x=x,y=y))+geom_smooth(method='loess', aes(color=z),se=F) 

ただし、平滑化された線はまだ青です。

var3の代わりに内部変数 "..y .."を使用すると、var2に関する行が表示されます。

ggplot(data=df,aes(x=x,y=y))+geom_smooth(method='loess', aes(color=..y..),se=F) 

var3に関して行を色付けするために別の内部変数がありますか?

私はgeom_lineで目的のプロットを生成することができますが、代わりにスムージングしたいと思います。

+0

してください[あなたの例が再現します](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#5963610) 。 – alistaire

+0

個々のデータ点を異なる色でプロットすることができますが、 'geom_smooth'はカーブのどの部分をどのように色付けするのかを知るにはどうすればよいでしょうか? – Uwe

+0

あなたは情報をほとんど提供していませんが、これを試してください: 'aes(color = factor(var3))'。これがあなたのデータセットの正しい意味を持っていれば、わかりません。 – knb

答えて

0

geom_lineを使用して正しい軌道に乗っているので、平滑化前のデータに使用するだけで済みます。そして、上記のようにあなたのデータフレームを取る:あなたのxは大きなギャップがある場合、これは醜い結果を生成することができます

df$predict <- predict(loess(y~x, data = df)) 

ggplot(df, aes(x = x,y = predict)) + 
    geom_line(aes(colour = z)) 

。彼らはポイント間のフラットなセグメントとして出てくるでしょう。 newdata=predict()に送って2番目のデータフレームに格納することで回避策がありますが、新しいx値の場合はzも再計算する必要があります。いくつかのデータを追加することにより、

enter image description here

関連する問題