拼接数组绘图为何出现对角线?如何消除该线条?
问题分析与解决
对角线产生的原因
你在下方子图用np.concatenate拼接数组后,plt.plot会按照数组的顺序依次连接每个数据点。如果x_left的最后一个元素和x_right的第一个元素在数值上不连续(比如x_left的最大值远小于x_right的最小值),plot就会自动把x_left的最后一个点和x_right的第一个点用直线连起来,这就是那条多余的对角线。
举个实际例子:假设x_left = [1,2,3],x_right = [5,6,7],y = [10,20,30],拼接后的x数组是[1,2,3,5,6,7],y数组是[10,20,30,10,20,30],plot会直接连接(3,30)和(5,10),这条线就是你看到的对角线。
消除对角线的方法
有两种简单可行的解决方式:
- 直接沿用上方子图的绘图逻辑,在下方子图里分开调用两次
plot:
plt.plot(x_left, y) plt.plot(x_right, y)
这样两条曲线各自独立绘制,不会出现跨曲线的连接线。
- 如果一定要用拼接数组的方式,在拼接后的数组中间插入一个NaN值——
plt.plot会自动跳过NaN,不会连接前后的点。代码示例:
x_combined = np.concatenate((x_left, [np.nan], x_right)) y_combined = np.concatenate((y, [np.nan], y)) plt.plot(x_combined, y_combined)
内容的提问来源于stack exchange,提问作者Pengyu
相关产品推荐
相关产品推荐

