Python Matplotlib如何仅连接指定分组散点,避免无关多余线段?
解决方案
方法1:拆分数据分组绘制
直接把原数组按分组切片,分别调用plt.plot()即可,两组使用相同的样式参数,视觉上和单次绘制效果一致,仅去掉中间连线。
import matplotlib.pyplot as plt x = [0, 5, 10, 15, 100, 105, 110, 115] y = [15, 10, 5, 0, 115, 110, 105, 100] plt.figure(figsize=(5, 5)) plt.xlim(-1, 120) plt.ylim(-1, 120) plt.grid() # 分别绘制两组数据,使用相同样式 plt.plot(x[:4], y[:4], 'og-') plt.plot(x[4:], y[4:], 'og-') plt.show()
该方法逻辑直观,不需要引入额外依赖,适合分组数量少、分界点明确的场景。
方法2:插入空值中断连线
如果分组数量多,不想多次调用plt.plot(),可以在两组数据的分界处插入numpy.nan,Matplotlib遇到空值时会自动中断连线,不需要拆分数据。
import matplotlib.pyplot as plt import numpy as np x = [0, 5, 10, 15, 100, 105, 110, 115] y = [15, 10, 5, 0, 115, 110, 105, 100] # 分界处插入nan中断连线 x_break = x[:4] + [np.nan] + x[4:] y_break = y[:4] + [np.nan] + y[4:] plt.figure(figsize=(5, 5)) plt.xlim(-1, 120) plt.ylim(-1, 120) plt.grid() plt.plot(x_break, y_break, 'og-') plt.show()
该方法仅需一次绘图调用,适合多组数据批量处理的场景。
内容的提问来源于stack exchange,提问作者user388794
相关产品推荐
相关产品推荐

