matplotlib.pcolor很慢.备择方案?

Jak*_*kob 8 python numpy matplotlib

我想绘制一个2D数组(大约1000x1000),其值对应于色标.所以我使用了matplotlib.pcolor,它就是这样做的但是由于某种原因,当它达到那些尺寸时(例如2分钟左右才能绘制)它是超级慢的.这是什么原因?将float值转换为int16左右有帮助吗?pcolor还有其他选择吗?

from pylab import *

data=genfromtxt('data.txt',autostrip=True, case_sensitive=True)
pcolor(data,cmap='hot')
colorbar()
show()
Run Code Online (Sandbox Code Playgroud)

data.txt包含数组.加载过程确实需要几秒钟,但主要的计算时间肯定是由pcolor()和show()函数使用(大约每个60-90秒).

fre*_*hen 12

作为未来谷歌的一个注释,还有pcolormeshpcolorfast.

pcolormesh各州的文件:

pcolormesh类似于pcolor(),但使用不同的机制并返回不同的对象; pcolor返回PolyCollection,但pcolormesh返回QuadMesh.它要快得多,因此几乎总是首选大型阵列.

imshow 应该更快,但就例如非直线轴而言则不那么灵活.

请参见本页面用于之间一个很好的比较pcolor,pcolormeshimshow.

  • 另请参阅http://matplotlib.org/examples/pylab_examples/pcolor_demo.html以获取所有四种可能性的基本比较:pcolor,pcolormesh,imshow和pcolorfast. (2认同)

tom*_*m10 10

imshow会更快. pcolor返回一个PolyCollection,它有一百万个元素会相当慢,而imshow只是一个图像.

请注意,pcolor中的索引与imshow略有不同,但您可能不需要担心它取决于您使用pcolor的方式.此外,通常当从pcolor转到imshow时,人们想要interpolation="nearest"在imshow中设置(但对于如此大的图像,这可能也无关紧要).