Plotly Sunburst图表调用fig.show()打开空白页无报错求助
解决Plotly Sunburst图表显示空白无报错的问题
嘿,我帮你排查了下这段代码,问题其实出在父节点的定义不完整上!你写的parents数组里有不少节点(比如Science_and_Health、Business_and_Law这些)根本没出现在labels列表里,而Plotly的Sunburst图表要求所有父节点必须是labels中的一员——没有这些节点的话,Plotly没法构建出正确的层级结构,自然就渲染出空白页面了,还不会报错(确实有点坑)。
给你改好了代码,核心是补充缺失的父节点到labels里,同时把顶层节点的父节点设为空字符串,再给顶层节点配上合理的数值:
import plotly.graph_objects as go # 补充所有顶层/中间父节点到labels列表,确保父节点都能找到对应标签 labels = [ 'Science_and_Health', 'Business_and_Law', 'Humanities_and_Social_Science', 'Technology', 'Biology', 'Economics', 'Physics', 'Chemistry', 'Psychology', 'Sociology', 'Medicine', 'Social_psychology', 'Geology', 'Mathematics', 'Classical_mechanics', 'Ecology', 'Fishery', 'Engineering', 'Molecular_biology', 'Computer_science', 'Biochemistry', 'Fisheries_management', 'Quantum_electrodynamics' ] # 顶层节点的父节点设为空字符串'',其他子节点对应正确的父节点 parents = [ '', '', '', '', 'Science_and_Health', 'Business_and_Law', 'Science_and_Health', 'Science_and_Health', 'Science_and_Health', 'Humanities_and_Social_Science', 'Science_and_Health', 'Humanities_and_Social_Science', 'Humanities_and_Social_Science', 'Business_and_Law', 'Technology', 'Humanities_and_Social_Science', 'Humanities_and_Social_Science', 'Technology', 'Science_and_Health', 'Technology', 'Science_and_Health', 'Humanities_and_Social_Science', 'Science_and_Health' ] # 顶层节点的value用子节点的总和,这样层级比例更准确,也可以设为任意非零值 values = [ 40+31+26+20+19+11+10+10, 37+16, 19+18+18+12+12+10, 15+11+10, 40, 37, 31, 26, 20, 19, 19, 18, 18, 16, 15, 12, 12, 11, 11, 10, 10, 10, 10 ] fig = go.Figure(go.Sunburst( labels=labels, parents=parents, values=values )) fig.update_layout(margin=dict(t=0, l=0, r=0, b=0)) fig.show()
再给你提两个小排查技巧,以后遇到类似无报错的空白图表能用得上:
- 先检查数据的层级完整性:所有父节点必须在标签列表里存在,顶层节点的父节点必须是空字符串。
- 简化测试:先写个只有2-3层的极简数据,确认能正常渲染后,再逐步加回你的完整数据,这样更容易定位问题。
内容的提问来源于stack exchange,提问作者user13672551
相关产品推荐
相关产品推荐

