Plotly柱状图异常修复:空柱与错误线性增长问题
问题描述
使用Python的plotly库绘制柱状图时遇到两个问题:
- 图表显示数据呈线性增长,与实际数据不符
- 第一个数据点(数值
5585)被渲染为空柱
原代码
import plotly.graph_objects as go fig = go.Figure() x = df_quaterly_results.index y = df_quaterly_results[df_quaterly_results.columns[0]] # Sales Columns trace_name = 'QoQ Sales' fig.add_trace(go.Bar(x=x, y=y, name=trace_name)) plot_title = 'QoQ Sales' fig.update_layout( title=plot_title, xaxis_title='Quarter', yaxis_title='Rupees in Cr.') # pyo.plot(fig, filename="temp-plot.html") fig.show()
样本数据框
| Quarter | Sales |
|---|---|
| Jun 2021 | 5585 |
| Sep 2021 | 7096 |
| Dec 2021 | 8527 |
| Mar 2022 | 7893 |
| Jun 2022 | 8607 |
| Sep 2022 | 8458 |
注:Quarter列为数据框的索引。
解决方案
问题根源是索引列Quarter被自动识别为日期时间类型,导致x轴按时间线性排列且首个日期存在解析异常;同时需确认Sales列是数值类型,修复步骤如下:
1. 确保Sales列为数值类型
避免因非数值类型导致渲染错误,强制转换列类型:
import pandas as pd df_quaterly_results['Sales'] = pd.to_numeric(df_quaterly_results['Sales'], errors='coerce')
2. 将索引转为字符串类型
阻止Plotly自动解析日期时间轴,保持原始季度显示:
x = df_quaterly_results.index.astype(str)
3. 完整修复代码
import plotly.graph_objects as go import pandas as pd # 预处理数据类型 df_quaterly_results['Sales'] = pd.to_numeric(df_quaterly_results['Sales'], errors='coerce') x = df_quaterly_results.index.astype(str) y = df_quaterly_results['Sales'] # 直接指定列名,避免依赖列顺序 fig = go.Figure() fig.add_trace(go.Bar(x=x, y=y, name='QoQ Sales')) fig.update_layout( title='QoQ Sales', xaxis_title='Quarter', yaxis_title='Rupees in Cr.' ) fig.show()
额外检查点
- 若仍有空柱,通过
df_quaterly_results.head()确认首行数据无缺失值 - 优先使用列名
df_quaterly_results['Sales']而非df_quaterly_results.columns[0],避免列顺序变动引发错误
内容的提问来源于stack exchange,提问作者RSW
相关产品推荐
相关产品推荐

