Plotly生成Sankey Plot无报错但空白问题排查求助
Plotly桑基图空白问题排查与解决
问题原因
Plotly生成桑基图时,link参数的source和target必须传入对应节点列表的整数索引,而非节点名称字符串。你当前代码中直接使用了data_long$source和data_long$target(均为字符串),Plotly无法识别这些字符串对应的节点位置,因此图表显示空白。
解决步骤
1. 解除数据集分组
你的data_long是分组数据框,先解除分组避免后续操作异常:
data_long <- data_long %>% ungroup()
2. 修改绘图代码的link参数
将source和target替换为数据集中已有的IDsource和IDtarget(这两列已经是对应nodes的整数索引),同时移除无关的valuesuffix = "TWh"(你的数据不属于该单位):
fig <- plot_ly( type = "sankey", domain = list( x = c(0,1), y = c(0,1) ), orientation = "h", valueformat = ".0f", node = list( label = nodes$name, pad = 15, thickness = 15, line = list( color = "black", width = 0.5 ) ), link = list( source = data_long$IDsource, target = data_long$IDtarget, value = data_long$value ) ) fig <- fig %>% layout( title = "aesoc", font = list( size = 10 ), xaxis = list(showgrid = F, zeroline = F), yaxis = list(showgrid = F, zeroline = F) ) fig
验证说明
nodes数据框的行索引(从0开始)正好与IDsource、IDtarget的数值一一对应,比如nodes[1,1]是"Placebo",对应IDsource中的0,完全匹配Plotly桑基图的参数要求,修改后即可正常生成图表。
内容的提问来源于stack exchange,提问作者jkatam
相关产品推荐
相关产品推荐

