matplotlib.pyplot.imshow在转换数组时不能绘制所有数据

时间:2018-02-13 18:32:34

标签: python-3.x numpy matplotlib

我正在尝试绘制一个充满1和0的数组,并且大部分时间它运行良好,看起来像this

然而,当我的数组变得太大(我需要绘制60,000x70)时,情节只会绘制part of the data

起初我认为这可能是某种内存问题,但是阵列实际上并不是那么大,在查看内存使用情况时,也没有任何过于繁重的迹象。

然而,当我绘制转置数组时,它变得非常奇怪,因为它可以正常工作like a breeze

我在论坛里看了很多,但显然没有其他人有过这样的问题。这可能是个错误吗?我真的需要在原始方向上绘制它。所以,任何帮助都非常感谢。提前谢谢!

更新

这完全重现了我的问题:

import numpy as np
import matplotlib.pyplot as plt

# generate fake data
a = np.random.random((60000, 70))
for x in np.nditer(a, op_flags=['readwrite']):
    if x > 0.9:
        x[...] = 1
    else:
        x[...] = 0

# plot fake data
fig, axes = plt.subplots(2, 2)
axes[0][0].imshow(a, interpolation='none', cmap='binary', aspect='auto')
axes[0][1].imshow(a.T, interpolation='none', cmap='binary', aspect='auto')
axes[1][0].imshow(a[:30000], interpolation='none', cmap='binary', aspect='auto')
axes[1][1].imshow(a[:30000].T, interpolation='none', cmap='binary', aspect='auto')
plt.show()

代码产生this。在左上方的子图中,绘制了所有内容。但是,在显示转置数组(右上角)的图中,matplotlib仅绘制了第一个~10000列。较低的两个图只显示了阵列的前半部分(左侧正常,右侧转置),正如您所看到的,对于较小的阵列,没有问题。

解决

matplotlib 2.x

不会出现此问题

1 个答案:

答案 0 :(得分:0)

[解决] 只有matplotlib的过时版本才会出现此问题。