Matplotlib绘制二维float64数组出现异常绘图结果问题求助
问题原因与解决方法
你的异常和数组的float64类型无关,核心问题是构造二维y数组时误用了reshape操作导致数据序列混乱。
错误点拆解
- 两个单独的卡方分布序列
chi2_2、chi2_5的形状均为(1000,) - 执行
np.array((chi2_2, chi2_5))后得到的数组形状为(2, 1000),按行存储两个完整的分布序列 - 直接调用
.reshape(1000,2)时,Numpy会先将整个数组按行优先拉平为长度2000的一维序列,再逐行填充为1000行2列的结构,相当于把两个分布的数值交叉打乱,最终绘制的结果自然不符合预期。
修正方案
你需要的是将(2, 1000)的数组转置为(1000, 2),让每一列对应一个完整的分布序列,将y数组的构造代码替换为如下写法即可:
y = np.array((chi2_2, chi2_5)).T
修改后调用ax.plot(x, y)得到的绘图结果和分开调用两次plot的结果完全一致。
内容的提问来源于stack exchange,提问作者gmolnar
相关产品推荐
相关产品推荐

