簡體   English   中英

散亂堆積的條形圖add_trace循環問題

[英]Plotly stacked bar chart add_trace loop issue

我正在用散點圖構建堆積的條形圖,每當我為add_trace運行循環時,都會出現一個問題,因為在保留名稱的情況下,先前跟蹤的數據似乎消失了。

        p = plot_ly( x = rownames(dist_data), y = as.numeric(dist_data[,1]), type = 'bar', name = colnames(dist_data)[1])%>%
      layout(legend = list(x = 0.1, y = 0.9))

    for ( j in 2:length(colnames(dist_data)))
    {
      p =  add_trace(p, y = ~as.numeric(dist_data[,j]), type = 'bar',name = colnames(dist_data)[j]) %>%
        layout( barmode = 'stack')
    }
    p

我想知道循環中是否存在錯誤。 手動嘗試添加trace1時,工作正常。 添加跡線2(j = 3)時,跡線1的值將自動等於跡線2的值。

UPD:使用dplyr時,我的代碼的其他部分有問題。 有沒有解決方案?

感謝您的幫助,

您在每次循環迭代時都會覆蓋p。 嘗試:

p =  p %>% add_trace(y = ~as.numeric(dist_data[,j]), type = 'bar',name = colnames(dist_data)[j]) %>%
        layout( barmode = 'stack')

第二編輯:不確定為什么會這樣。 如果將其整形為長格式數據框,則比使用for循環更好的做法是有效的:

mtcars %>% 
  mutate(id = rownames(.)) %>%
  gather(key = "variable",value = "value",-id) %>% 
  plot_ly(x = ~id, y=~value, type="bar", color=~variable) %>%
  layout(barmode = "stack")

在此處輸入圖片說明

編輯:

dist_data=mtcars
p = plot_ly( x = rownames(dist_data), 
             y = as.numeric(dist_data[,1]), 
             type = 'bar', name = colnames(dist_data)[1]) %>%
  layout(legend = list(x = 0.1, y = 0.9))

for ( j in 2:length(colnames(dist_data))){
  p =  add_trace(p, y = ~as.numeric(dist_data[,j]), 
type = 'bar',name = colnames(dist_data)[j]) %>%
    layout( barmode = 'stack')
}
p

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM