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

Matplotlib如何绘制每对y坐标的连接线并解决维度报错问题

你遇到的报错是因为传入plt.plot的x、y数组维度超过了matplotlib支持的最大2维限制:原始的data1、data2、data3均为shape为(5,1)的二维列向量,没有降维就直接拼接,最终传入绘图方法的数组shape为(2,5,1)的三维结构,触发维度错误。

可行解决方案

你可以先将所有数组降为1维后再绘图,修改后的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 原有数组定义部分保持不变
data1 = np.array(means1) 
data2 = np.array(ci_l) 
data3 = np.array(ci_h) 

# 新增:将所有数组降为1维,去掉多余的尾部维度
x = data1.flatten()
y_low = data2.flatten()
y_high = data3.flatten()

# 绘制散点
plt.plot(x, y_low, 'rs', markersize = 4)
plt.plot(x, y_high, 'bo', markersize = 4)

# 绘制每对y点之间的竖线,两种方法二选一即可
# 方法1:适配你参考的plot写法,降维后不会报错
plt.plot([x, x], [y_low, y_high], c='black')
# 方法2:更简洁的竖线专用API,语义更清晰
# plt.vlines(x=x, ymin=y_low, ymax=y_high, color='black')

plt.show()

原理说明

flatten()方法会将shape为(n,1)的二维列向量转为(n,)的一维数组,此时传入plt.plot的[x,x]结构为shape(2,5)的合法二维数组,matplotlib会自动按列配对两个y值绘制连线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:48:04