2011-08-08 24 views
2

私は値で色付けされた点を表示するためにggplot2を使用しています。さらに、このデータに回帰直線を示したいと思います。ggplot2プロットに線を追加して凡例を調整する

これは私が使用しているデータの一例である:

structure(list(a = c(63.635707116462, 59.7200565823145, 56.0311239027684, 
53.1573088984712, 51.0192317467653, 48.0727441921859, 47.1516684444444, 
45.5081981068289, 43.5874967485549, 43.3163255512322), b = c(278.983796321269, 
254.833332215134, 234.812503036992, 221.519477352253, 212.013474843663, 
199.926648466351, 194.577007436116, 186.506133515809, 179.411968705754, 
172.056487287103), col = c(18.36245, 22.03494, 25.70743, 29.37992, 
33.05241, 36.7249, 40.39739, 44.06988, 47.74237, 51.41486), predict = c(275.438415187452, 
256.049214397717, 237.782656695549, 223.552332598712, 212.965175538386, 
198.374997400175, 193.814089203754, 185.676086057123, 176.165312823424, 
174.82254927815)), .Names = c("a", "b", "col", "predict"), row.names = c(NA, 
-10L), class = "data.frame") 

そして、次のように私がこれまで使っていたコードは次のとおりです。

しかし
p <- ggplot(data = df, aes(x = a, y = b, colour=col)) + geom_point() 
p + stat_smooth(method = "lm", formula = y ~ x, se = FALSE) 

enter image description here

、この私はggplot2(これはqplotを使用しています)の例の1つに従おうとしましたが、fo llowing:例で

model <- lm(b ~ a, data = df) 
df$predict <- stats::predict(model, newdata=df) 
p <- ggplot(data = df, aes(x = a, y = b, colour=col)) + geom_point() 
p + geom_line(aes(x = a, y = predict)) 

、ラインが私の場合に+ geom_line(data=df)されるであろう、+ geom_line(data=grid)を使用して追加されます。これは、プロット上に直線を描くのではなく、ポイントを結合するだけです。完全に真っ直ぐであるこのプロット上の線をどのようにプロットすることができますか?

私がプロットしていた他の問題は、伝説の名前を変更しています。データの2つのタイトル(「Z密度」など)が必要ですが、変更方法はわかりません。私は+ scale_colour_discrete(name = "Fancy Title")との質問をthisのアドバイスを使って試してみましたが、私のデータが値で色付けされているので動作しません。

+0

私は 'geom_smooth(stat = lm、...)は、実際には望む通り完全な直線を生成すると信じています。 'geom_smooth(stat = lm、...)'(または '' lm "')を使用して '' geom_smooth(method = "lm") 'を使用する' 'qplot()' 'のためには – Andrie

+0

、 )が 'ggplot'のために動作しないように見える – djq

+1

ストレートラインは、連続メディアではなくピクセルで構成されているため、画面上でギザギザに見えることがよくあります。伝統的に、これに対抗するためにアンチエイリアスが使用されています。これは、Macのデフォルトデバイスが使用していると思います。 – James

答えて

3

@Andrieによると、method = "lm"を使用すると線形モデルが得られます。あなたの2番目の質問については、あなたはまた、予測のすべてを行う必要はありませんscale_color_continuous()

p <- ggplot(data = df, aes(x = a, y = b, colour=col)) + geom_point() 
p + stat_smooth(method = "lm", se = FALSE) + 
    scale_colour_continuous(name = "My Legend") 

を使用しています。 ggplot()がこれを実行しますが、これは大きな利点の1つです。

+1

'labs(color ="ファンシータイトル ")'を使って凡例に簡単にラベルを付けることもできます。 – joran

関連する問題