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

Matplotlib设置plt.xlim后默认会绘制轴外曲线吗?如何截断轴外部分?

使用matplotlib设置xlim后,默认是否绘制轴外曲线?

matplotlib默认不会自动截断轴外的曲线——plt.xlim()仅调整坐标轴的显示范围,不会修改原始数据或截断绘制的线条,超出轴范围的曲线部分依然会被绘制出来,只是坐标轴只展示指定区间。

我使用matplotlib 3.5.3版本(开发环境为Spyder IDE),代码如下:

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
x = np.linspace(-10, 10, 11)
y = x**2
plt.plot(x, y)
plt.xlim((-5, 5))

当前效果:曲线完整显示了x从-10到10的所有点,轴外的曲线部分依然可见;
期望效果:仅显示x在-5到5之间的曲线部分,轴外部分被截断。

解决方案

要实现仅显示轴内曲线的效果,推荐两种方法:

  1. 预筛选数据(效果最可控)
    绘制前直接过滤出x在目标范围内的数据点,只绘制符合条件的部分:
import matplotlib.pyplot as plt
import numpy as np

plt.figure()
x = np.linspace(-10, 10, 11)
y = x**2
# 筛选x在-5到5之间的数据
valid_mask = (x >= -5) & (x <= 5)
plt.plot(x[valid_mask], y[valid_mask])
plt.xlim((-5, 5))
plt.show()
  1. 启用裁剪(无需修改原始数据)
    通过plot的clip_on=True参数确保曲线被裁剪到坐标轴范围内,同时使用面向对象的方式设置坐标轴范围:
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
x = np.linspace(-10, 10, 11)
y = x**2
ax.plot(x, y, clip_on=True)
ax.set_xlim(-5, 5)
plt.show()

注:这种方法对于离散点连线,若相邻点一个在轴内一个在轴外,连线仍会穿过轴边缘,因此预筛选数据的方式更贴合你的期望效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:15:44