Matplotlib.pyplot.hist()非常慢

Fen*_*ick 8 python matplotlib histogram

我正在绘制数组中的大约10,000个项目.它们具有大约1,000个唯一值.

密谋现在已经运行了半个小时.我确保其余代码有效.

那慢吗?这是我第一次使用pyplot绘制直方图.

CcM*_*ngo 9

在展平 numpy 数组后立即绘制直方图。试试下面的演示代码:

import numpy as np

array2d = np.random.random_sample((512,512))*100
plt.hist(array2d.flatten())
plt.hist(array2d.flatten(), bins=1000)
Run Code Online (Sandbox Code Playgroud)

  • 遇到了同样的问题,这个解决方案非常有效。 (3认同)

use*_*424 8

要快速使用matplotlib绘制直方图,您需要将histtype='step'参数传递给pyplot.hist.例如:

plt.hist(np.random.exponential(size=1000000,bins=10000))
plt.show()
Run Code Online (Sandbox Code Playgroud)

平移或缩放时需要大约15秒绘制,大约需要5-10秒才能更新.

相比之下,绘图用histtype='step':

plt.hist(np.random.exponential(size=1000000),bins=10000,histtype='step')
plt.show()
Run Code Online (Sandbox Code Playgroud)

几乎立即绘制,可以毫不拖延地进行平移和缩放.


np8*_*np8 5

在代码中的某处导入seaborn可能会导致pyplot.hist花费很长时间。

如果问题很严重,则可以通过重置matplotlib设置来解决:

import seaborn as sns
sns.reset_orig()
Run Code Online (Sandbox Code Playgroud)