2016-05-13 3 views
1

scatterプロットのトレンドラインを作成する際に、add_traceを使用して線形トレンドラインを追加しています。plotly linear trendlineを作成していません

データに1つの「系列」のデータしかない場合、つまり1つの座標グループしかない場合、下のコードは正常に動作します。私は、一連の番号を導入する場合しかし、「トレンドライン」は次のようになります。ここでは enter image description here

コードの関連する部分である:

p <- plot_ly(filteredFull(), x=Relative.Time.Progress, y=cumul.ans.keystroke, 
       mode='markers', color=KeystrokeRate, size=KeystrokeRate, 
       marker=list(sizeref=100), type='scatter', 
          hoverinfo='text', text=paste("token: ",Token, "Keystrokes: ", 
                  KeystrokeCount)) %>% 
     layout(
      xaxis=list(range=c(0,1)), 
      yaxis=list(range=c(0,max(filteredFull()$cumul.ans.keystroke))) 
     ) 

    lm.all <- lm(cumul.ans.keystroke ~ Relative.Time.Progress, 
       data=df) 
     observe(print(summary(lm.all))) 
     p <- add_trace(p, y=fitted(lm.all), x=Relative.Time.Progress, 
        mode='lines') %>% 
     layout(
      xaxis= list(range = c(0,1)) 
     ) 
p 

私はより多くのコードを追加、またはしようとすることができます必要に応じて、最小限の作業例を作成してください。しかし、私はこれがコードから明らかな家族的な問題であることを期待しています。

+0

あなたの値と同じ順序で、あなたが供給しているデータフレームを配置してください。私はこの同じ問題を抱えていた。それは少なくとも私の場合はインデックスで追跡されます。 – Gopala

+0

コードのどの部分をソートする必要がありますか? –

+0

xで整理したら、yはそうするべきだと思います。私はそれがここでの問題だとは言えませんが、それが描く混乱を考えれば、x値とy値ではなく、データ内にある順番でトレースするようです。 – Gopala

答えて

1

add_trace(p, y=fitted(lm.all), x=Relative.Time.Progress, mode='lines')data = ...引数を指定する必要があると思います。

最初のトレースはサブセットであるようですが、2番目のトレースは、回帰モデルをデータセット全体にフィッティングすることによって得られた回帰フィット値を使用します。

Relative.Time.ProgressfilteredFull()dfの間に不一致がある可能性があります。

例を示します。うまくいけば...

library(plotly) 
df <- diamonds[sample(1:nrow(diamonds), size = 500),] 

fit <- lm(price ~ carat, data = df) 

df1 <- df %>% filter(cut == "Ideal") 

plot_ly(df1, x = carat, y = price, mode = "markers") %>% 
    add_trace(x = carat, y = fitted(fit), mode = "lines") 

enter image description here

plot_ly(df1, x = carat, y = price, mode = "markers") %>% 
    add_trace(data = df, x = carat, y = fitted(fit), mode = "lines") 

enter image description here

+0

ニース!ありがとうございました! –

0

に役立ちますこれは、次のコードが正常に動作する必要があり、今少し変更:

df <- diamonds[sample(1:nrow(diamonds), size = 500),] 
fit <- lm(price ~ carat, data = df) 
df1 <- df %>% filter(cut == "Ideal") 
plot_ly() %>% 
    add_trace(data = df1, x = ~carat, y = ~price, mode = "markers") %>% 
    add_trace(data = df, x = ~carat, y = fitted(fit), mode = "lines") 

は空で開始する必要がありますプロットし、トレースを追加します。

関連する問題