【问题标题】:matplotlib.pcolor very slow. alternatives?matplotlib.pcolor 很慢。备择方案?
【发布时间】:2015-08-17 18:37:55
【问题描述】:

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

from pylab import *

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

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

【问题讨论】:

  • 也许你需要的是 pyplot.imshow() ?
  • 是的,效果更好,非常感谢!

标签: python numpy matplotlib


【解决方案1】:

作为未来谷歌员工的注意事项,还有pcolormeshpcolorfast

pcolormesh 的文档指出:

pcolormesh 类似于 pcolor(),但使用不同的机制和 返回一个不同的对象; pcolor 返回一个 PolyCollection 但 pcolormesh 返回一个 QuadMesh。它快得多,所以它几乎 总是首选大型数组。

imshow 应该更快,但在例如非直线轴。

请参阅 this page,了解 pcolorpcolormeshimshow 之间的良好比较。

【讨论】:

【解决方案2】:

imshow 会快得多。 pcolor 返回一个 PolyCollection,如果有一百万个元素,它会相当慢,而 imshow 只是一个图像。

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

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2015-11-22
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多