如何为按日期分组的堆叠条形图设置条形标签以显示当月合计值
问题原因
你当前代码的问题在于:str(df[df['A']==X]['B'].sum()) 会先计算每个A分类下所有月份B列的总合计值,仅返回单个字符串,plotly会把这同一个字符串绑定到该分类下所有月份的条形上,因此所有条形都会显示全局合计值。
修改方案
要让每个条形仅显示对应月份的数值,只需给text参数传入和x、y长度完全匹配的序列,每个位置的元素对应同位置条形要展示的文本即可。
修改后的代码如下:
import plotly.graph_objects as go df = data[['Month', 'A', 'B']] traces = [] for X in df['A'].unique(): filtered_df = df[df['A']==X] trace = go.Bar( x = filtered_df['Month'], y = filtered_df['B'], # 直接传入对应月份的B列数值,plotly会自动逐个匹配到对应条形 text = filtered_df['B'], # 如果需要自定义文本格式(比如保留2位小数、加单位),可以用下面的写法 # text = filtered_df['B'].apply(lambda x: f"{x:.2f}") ) traces.append(trace) # 后续绘图逻辑保持不变 fig = go.Figure(traces) fig.show()
内容的提问来源于stack exchange,提问作者user40551
相关产品推荐
相关产品推荐

