Pandas绘制area plot时X轴刻度无法修改及图例失效问题求助
问题解决:Pandas面积图X轴刻度异常及绘图设置无效的修复
核心问题分析
- 未获取绘图返回的
Axes对象,导致ax.set_xticks报错(ax未定义) - 混用
plt函数和未定义的ax对象,造成设置无响应 plt.xlim(0,100)强制限制X轴范围,仅显示前100行数据,掩盖了实际386行的刻度问题
修复后的完整代码
import matplotlib.pyplot as plt import numpy as np import pandas as pd # 配置绘图样式 rc = {'figure.figsize':(12,7),'axes.facecolor':'white','axes.grid' : True,'grid.color': '.8', 'font.family':'Times New Roman','font.size' : 12} plt.rcParams.update(rc) pd.options.display.float_format = '{:,.2f}%'.format StkPivTIDPct= StkPivotT.div(StkPivotT.iloc[:,-1], axis=0 )*100 StkPivTIDPctA= StkPivTIDPct.iloc[:, :-1] # 获取绘图的Axes对象,后续所有操作基于这个对象 ax = StkPivTIDPctA.plot(kind='area') # 设置X轴刻度:根据386行数据(索引0-385),按间隔40设置刻度示例 ax.set_xticks(np.arange(0, 386, 40)) # 如果需要显示刻度标签对应实际索引值,可添加: # ax.set_xticklabels(np.arange(0, 386, 40)) # 调整图例(一次设置所有参数,避免重复调用) ax.legend(loc="upper right", fontsize=12) # 设置轴标题(示例) ax.set_xlabel("处理阶段优先级") ax.set_ylabel("周期时长占比(%)") # 如果需要显示全部数据,不要设置xlim(0,100),若需限制范围则按需调整 # ax.set_xlim(0, 385) plt.show()
关键修复点说明
- 获取Axes对象:调用
df.plot()时将返回值赋值给ax,所有绘图设置都通过这个对象操作,避免pyplot状态混乱 - 修正X轴刻度:根据实际数据行数(386行,索引0-385)设置刻度间隔,确保刻度覆盖全部或目标范围
- 合并图例设置:单次调用
ax.legend()并传入所有参数,避免重复调用覆盖设置 - 移除错误的xlim限制:原
plt.xlim(0,100)会截断数据,若需限制范围请根据实际需求调整
内容的提问来源于stack exchange,提问作者WMS7
相关产品推荐
相关产品推荐

