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

Matplotlib图表坐标轴出现额外标记问题排查与解决请求

解决Matplotlib营收实际值与预测值对比图的轴额外标记问题

问题原因分析

  1. 轴范围设置顺序错误:你先调用plt.xlim()和plt.ylim()设置轴范围,之后再绘制数据。Matplotlib默认会根据数据的实际范围自动调整轴刻度,这会覆盖你提前设置的范围,导致出现额外标记。
  2. 重复创建轴对象:代码中ax = plt.axes()会创建一个新的坐标轴对象,和当前figure的默认轴产生冲突,进一步导致轴设置混乱。

解决方案

方案1:调整代码顺序,先绘图再设置轴范围

将轴范围设置的代码放在绘图之后,确保Matplotlib不会覆盖你的自定义范围:

import matplotlib.pyplot as plt
import numpy as np

# 假设df1已正确定义
plt.figure(figsize=(13,7))
fontsize = 15
plt.title("Nonlinear Extrapolation of Revenues - Actual vs. Forecast", fontsize=fontsize)

# 先提取数据并完成绘图
Actual = np.array(df1.Actual1)
Forecast = np.array(df1['Forecast Fit'])

plt.plot(Forecast, marker='o', color="green", label="Forecast")
plt.plot(Actual, marker='o', color="blue", label="Actual")

# 绘图完成后设置轴范围
plt.xlim(0, 18)
plt.ylim(-500, 3000)

plt.legend(loc="center right")
plt.show()

方案2:手动指定x轴坐标(针对数据长度超出x范围的情况)

如果你的Actual或Forecast数据长度超过18,Matplotlib会自动将x轴延伸到数据的最大索引。此时可以手动指定x轴的数值,严格控制x轴范围:

import matplotlib.pyplot as plt
import numpy as np

# 假设df1已正确定义
plt.figure(figsize=(13,7))
fontsize = 15
plt.title("Nonlinear Extrapolation of Revenues - Actual vs. Forecast", fontsize=fontsize)

Actual = np.array(df1.Actual1)
Forecast = np.array(df1['Forecast Fit'])
# 手动生成x轴坐标,确保长度匹配数据
x = np.arange(len(Actual))

plt.plot(x, Forecast, marker='o', color="green", label="Forecast")
plt.plot(x, Actual, marker='o', color="blue", label="Actual")

plt.xlim(0, 18)
plt.ylim(-500, 3000)

plt.legend(loc="center right")
plt.show()

额外检查点

  • 确认df1.Actual1和df1['Forecast Fit']的数据长度是否在0-18范围内,如果数据本身包含超出该范围的索引或值,也会导致轴标记异常。
  • 移除多余的ax = plt.axes()语句,避免轴对象冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:59:59