matplotlib.pcolor非常慢。选择?

2024-07-08 15:27:08 发布

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

我想绘制一个二维数组(大约1000x1000),其中的值对应于一个色阶。所以我使用matplotlib.pcolor,它就是这样做的,但是由于某种原因,当它到达这些维度时,速度会非常慢(比如2分钟左右的绘图时间)。这是什么原因?将浮点值转换成int16左右有帮助吗?有没有其他的颜色?

from pylab import *

data=genfromtxt('data.txt',autostrip=True, case_sensitive=True)
pcolor(data,cmap='hot')
colorbar()
show()

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


Tags: 函数txttrue绘图datamatplotlibshow时间
2条回答

imshow将更快。pcolor返回一个PolyCollection,对于一百万个元素来说,这个过程相当慢,而imshow只是一个图像。

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

作为未来谷歌用户的注意事项,还有^{}^{}

pcolormesh的文档说明:

pcolormesh is similar to pcolor(), but uses a different mechanism and returns a different object; pcolor returns a PolyCollection but pcolormesh returns a QuadMesh. It is much faster, so it is almost always preferred for large arrays.

^{}应该更快,但在非直线轴方面灵活性稍差。

有关pcolorpcolormeshimshow之间的良好比较,请参见this page

相关问题 更多 >

    热门问题