如何在Plotly Dash中基于国家情感统计数据绘制堆叠柱状图
堆叠情感柱状图实现调整方案
你的原代码存在两处核心错误,调整后的可运行代码如下:
import pandas as pd import dash from dash import html, dcc import plotly.graph_objects as go app = dash.Dash(__name__) # 读取数据 df = pd.read_csv("C:\\Users\\sentiment_by_location.csv") # 提取所有情感分类 sentiment_list = df['sentiment'].unique() app.layout = html.Div([ html.H2(children='Sentiments by Location'), dcc.Graph( id='sentiment-location', figure={ 'data': [ # 每个情感分类单独生成一个Bar轨迹 go.Bar( x=df[df['sentiment'] == sent]['country'], y=df[df['sentiment'] == sent]['count'], name=sent ) for sent in sentiment_list ], 'layout': { 'title': 'Sentiment By Location', # 开启柱状图堆叠模式 'barmode': 'stack' } } ) ]) if __name__ == '__main__': app.run_server(debug=True)
关键修改点说明
- 修正列名引用错误:你的数据集中国家字段为
country,原代码错误使用了location - 重构轨迹生成逻辑:堆叠柱状图需要为每个分类(这里是三类情感)单独生成
Bar轨迹,同个国家下的不同情感轨迹会自动按位置对齐 - 新增堆叠配置:在布局参数中添加
barmode='stack',开启plotly的柱状图堆叠能力 - 修正y轴赋值错误:原代码错误将情感列和计数列同时传入y参数,现在仅传入对应情感分类的计数值
如果部分国家缺少某类情感的统计数据,代码会自动适配,不会出现错位问题。
内容的提问来源于stack exchange,提问作者Lilly
相关产品推荐
相关产品推荐

