Matplotlib曲面图,内存错误。三列数据

2024-04-18 23:59:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大数据文件,包含3列x,y,z(1,6mx3数组,128mb)。我试图在Matplotlib中生成一个轮廓图,但是当转换X,Y网格的数据时,我的内存用完了,这当然很可能发生。 下面是一个示例脚本(我也尝试过其他用于插值的numpy/scipy方法,但使用相同的MemoryError):

import numpy as np
import matplotlib.pyplot as plt    
a=np.loadtxt("data.dat")
xi = np.linspace(min(a[:,0]), max(a[:,0]), 40000)
yi = np.linspace(min(a[:,1]), max(a[:,1]), 40000)

X, Y = np.meshgrid(xi, yi)
Z = griddata(a[:,0], a[:,1], a[:,2], xi, yi, interp='nearest')
plt.contourf(X,Y,Z)
plt.show()

所以我试着用MATLAB来完成同样的程序,最后,要么我必须用一个很小的矩阵来插值,这样就失去了我感兴趣的图片(数据显示出很快的振荡)。下面是一个MATLAB脚本(变量“a”也表示数据数组):

x1=a(:,1);
y1=a(:,2);
z1=a(:,3);
xi=linspace(min(x1),max(x1),40000);
yi=linspace(min(y1),max(y1),40000);
[XI YI]=meshgrid(xi,yi);
ZI = griddata(x1,y1,z1,XI,YI,'nearest');
contourf(XI,YI,ZI)

显然,它看起来和Python中的一样:) 为了证明得到我想要的东西是可行的,来自Origin的结果是here

我在网上找到的解决方法都不能解决我的问题。你知道吗


Tags: 数据脚本npplt数组minmax插值