2017-08-01 43 views
0

我想繪製多行,使用R和plot_ly與add_trace結合使用。如果我使用下面的代碼,它像預期:在R中plot_ly的奇怪行爲,如果使用for循環創建動態行數

df <- data.frame(x=c(1,2,3), y=c(2,4,5), y=c(4,1,3)) 
p <- plot_ly(mode="lines", type="scatter") 
p <- add_trace(p, x=~df[,1], y=~df[,2]) 
p <- add_trace(p, x=~df[,1], y=~df[,3]) 
p 

,並給出this image

如果我嘗試使用一個for循環,而不是這樣的,這是行不通的:

df <- data.frame(x=c(1,2,3), y=c(2,4,5), y=c(4,1,3)) 
p <- plot_ly(mode="lines", type="scatter") 
for(i in 1:2) 
{ 
    p <- add_trace(p, x=~df[,1], y=~df[,i]) 
} 
p 

這給我只有一個單行(實際上是後者)here

可能有誰解釋我請,這裏發生了什麼,以及如何修復第二版? 謝謝

+1

如果你正在循環中添加很多痕跡,那麼這個答案將與你有關:https://stackoverflow.com/a/38170340/2761575 – dww

回答

0

我不能準確地解釋這裏發生了什麼,因爲在幾個月前曾經有過劇烈的變化,我從未真正趕上過。

for索引更改爲2:3來匹配數據並刪除~df[,]調用只是簡單df[,],它應該工作。它至少在我的結尾。

+0

現在哇,它的工作原理。其實我認爲使用波浪號是新風格所必需的......我不明白爲什麼要這樣做。當然索引是我的一個錯誤,但不是真正的問題^^實際上'1:2'也應該鞋兩個地塊,但不同的... – Martin

+0

是的,我還隱約回想起波浪線是新需要的。好吧。很高興它的工作。 – joelnNC

+0

'〜'用於通過列名指定列 - 即讓其知道將數據幀範圍內的名稱解釋爲數據參數。在這個例子中,你用'df [,i]'而不是名字引用列,所以不需要代字符 – dww