我正在使用matplotlib,我在尝试绘制大型矢量时发现了一些问题.有时得到"MemoryError"我的问题是,是否有任何方法可以减少我需要绘制的值的规模?

在这个例子中,我正在绘制一个大小为2647296的向量!
有没有办法在较小的范围内绘制相同的值?
您在显示器上拥有如此多的分辨率,以至于您可以在绘图中看到260万个数据点.绘制较少数据的简单方法是例如每1000个点采样:plot(x[::1000]).如果失去太多并且看到极值是非常重要的,那么你可以编写一些代码来将长向量分成适当的多个部分并获取每个部分的最小值和最大值,然后绘制:
tmp = x[:len(x)-len(x)%1000] # drop some points to make length a multiple of 1000
tmp = tmp.reshape((1000,-1)) # split into pieces of 1000 points
tmp = tmp.reshape((-1,1000)) # alternative: split into 1000 pieces
figure(); hold(True) # plot minimum and maximum in the same figure
plot(tmp.min(axis=0))
plot(tmp.max(axis=0))
Run Code Online (Sandbox Code Playgroud)