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
相关产品推荐
相关产品推荐

