Plotly绘制饼图异常:无论数值如何均返回等分饼图求助
问题原因
你直接把数值列表sizes传给px.pie的第一个参数,但plotly.express.pie的第一个参数要求是DataFrame对象,而非单纯的数值列表。当你传入列表时,Plotly会把它当成包含三个元素的数据集,每个元素对应一个类别,但没有指定数值字段,默认每个类别的权重都是1,最终生成等分饼图。
解决方法
有两种可行的修复方式:
方法1:显式指定values参数
直接在px.pie中传入values=sizes,无需传第一个data_frame参数:
import plotly.express as px sizes = [923, 168, 40] labels = ['Monthly', 'Yearly', 'Weekly'] fig = px.pie(values=sizes, names=labels, color_discrete_sequence=px.colors.sequential.RdBu) fig.show()
方法2:将数据整理为DataFrame(推荐)
更贴合Plotly Express的使用逻辑,把标签和数值封装到DataFrame中:
import plotly.express as px import pandas as pd data = { 'CompFreq': ['Monthly', 'Yearly', 'Weekly'], 'Counts': [923, 168, 40] } df = pd.DataFrame(data) fig = px.pie(df, values='Counts', names='CompFreq', color_discrete_sequence=px.colors.sequential.RdBu) fig.show()
两种方法都能让饼图正确对应[923, 168, 40]的数值占比。
内容的提问来源于stack exchange,提问作者casualhuman
相关产品推荐
相关产品推荐

