[英]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.