You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()

关键修复点说明

  1. 获取Axes对象:调用df.plot()时将返回值赋值给ax,所有绘图设置都通过这个对象操作,避免pyplot状态混乱
  2. 修正X轴刻度:根据实际数据行数(386行,索引0-385)设置刻度间隔,确保刻度覆盖全部或目标范围
  3. 合并图例设置:单次调用ax.legend()并传入所有参数,避免重复调用覆盖设置
  4. 移除错误的xlim限制:原plt.xlim(0,100)会截断数据,若需限制范围请根据实际需求调整

内容的提问来源于stack exchange,提问作者WMS7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:20:23