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

Matplotlib:能否在标记附近打断图表线条?

在Matplotlib中实现线条断开的方法

当然可以实现,下面给你几种实用的方案,对应你需求里的场景:

1. 拆分数据分段绘制

把需要断开的位置前后的数据拆成两组,分别调用plot绘制,中间就会自然断开。比如想在X轴某个区间断开线条:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 定义断开区间:x在3到5之间不绘制
x_part1, y_part1 = x[x <= 3], y[x <= 3]
x_part2, y_part2 = x[x >= 5], y[x >= 5]

# 分别绘制两段线条
plt.plot(x_part1, y_part1, 'blue')
plt.plot(x_part2, y_part2, 'blue')

plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('分段绘制实现线条断开')
plt.show()

2. 用NaN值自动断开线条

Matplotlib绘制线条时会自动跳过包含NaN的点,直接在需要断开的区域把数据设为NaN即可:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

# 把x在3到5之间的y值设为NaN
y[(x > 3) & (x < 5)] = np.nan

plt.plot(x, y, 'blue')

plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('NaN值实现线条断开')
plt.show()

3. 针对轴断开的场景(对应草图样式)

如果是像草图里那样,轴本身有断开(比如Y轴分上下两段,线条跨过断开区域),可以用brokenaxes库专门实现这种效果:

首先安装库:

pip install brokenaxes

然后编写代码:

from brokenaxes import brokenaxes
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x) * 10

# 设置Y轴的两个区间,中间断开
bax = brokenaxes(ylims=((0, 5), (8, 12)))
bax.plot(x, y)

bax.set_xlabel('X轴')
bax.set_ylabel('Y轴')
plt.title('带断开轴的图表')
plt.show()

内容的提问来源于stack exchange,提问作者Horst-Jackson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:35:18