2017-02-09 11 views
2

私の問題: 異なるグループ/組成の2つの回帰直線を表示したいとします。 私は最近ggplotを使い始めました。したがって、ggplotの回帰直線についての知識はあまりありません。ggplot:異なるサブセットの回帰直線を追加する

mel: 
composition diametre volume 
mixed 0.261 71.3645893 
mixed 0.233 392.9487358 
mixed 0.319 284.8683927 
pure 0.248 120.7654642 
pure 0.274 142.1273373 
pure 0.308 215.9924244 
pure 0.188 26.11804847 
pure 0.124 5.795590982 
pure 0.307 136.7732086 
pure 0.283 138.0600194 
pure 0.175 32.43129359 
pure 0.205 32.58726466 
pure 0.159 12.27308951 

以下のコードは、完璧に散布図を表示するが、geom_smooth(object 'volume' not found)を追加するときにエラーを生成します。

ggplot(data = mel, aes(x=diametre, y=volume,col=as.factor(composition))) + 
    geom_point()+ 
    geom_smooth (data = subset(mel, composition=="mixed"), method='lm', 
       formula= log(volume)~I(diametre^2), 
       se=FALSE, size=2) + 
    geom_smooth (data = subset(mel, composition=="pure"), method = "lm", 
       formula = (volume)~I(diametre^2), se = FALSE, size = 2) 

私は構成をサブセット化しているので、多分エラーが発生したと考えましたか? (あなたがgeom_smoothためx,yを持っている必要があります)だけで、これは動作するはずinvalid argument to unary operator

答えて

1

: は、だから私は、コードは結果としてこの

ggplot(data = mel, aes(x=diametre, y=volume,col=as.factor(composition))) + 
    geom_point()+ 
    geom_smooth (data = mel_mix, method='lm', 
       formula= log(volume)~I(diametre^2), 
       se=FALSE, size=2) + 
    geom_smooth (data = mel_pure, method = "lm", 
       formula = (volume)~I(diametre^2), se = FALSE, size = 2) 

のように見えたので、各組成物のために一つのテーブルで作業してみました

ggplot(data = mel, aes(x=diametre, y=volume,col=as.factor(composition))) + 
    geom_point() + 
    geom_smooth(method='lm', 
       formula= log(y)~I(x^2), 
       se=FALSE, size=2) 

か、サブセット化データに対して個別に収まるようにしたい場合:

ggplot(data = mel, aes(x=diametre, y=volume,col=as.factor(composition))) + 
    geom_point()+ 
    geom_smooth (data = subset(mel, composition=="mixed"), method='lm', 
       formula= log(y)~I(x^2), 
       se=FALSE, size=2) + 
    geom_smooth (data = subset(mel, composition=="pure"), method = "lm", 
      formula = log(y)~I(x^2), se = FALSE, size = 2) 

しかしvolume~I(diametre^2)私が思うあなたのデータのためのより良いフィット感です:

ggplot(data = mel, aes(x=diametre, y=volume,col=as.factor(composition))) + 
    geom_point() + 
    geom_smooth(method='lm', 
       formula= y~I(x^2), 
       se=FALSE, size=2) 

enter image description here

+1

グレート、どうもありがとう。 – chajamalka

関連する問題