首页 > 解决方案 > 在 matplotlib 中创建一个空的 pcolormesh

问题描述

我可以用

self.line, = self.axes.plot([],[], color="orange")

但是当我尝试对 pcolormesh 做同样的事情时

self.line2, = self.axes2.pcolormesh([],[],[])

我得到一个ValueError: not enough values to unpack (expected 2, got 1)

有没有办法用空值创建 pcolormesh 对象?我想在其他函数中将数据添加到 pcolormesh 中。

标签: pythonmatplotlib

解决方案


plot返回曲线列表(作为Line2D元素的列表)。当绘制多条曲线时,这是一致的。例如ax.plot(x1, y1, 'r-', x2, y2, 'b-'),将返回两条曲线的列表。因此,需要一个逗号来解包(一个元素的)列表以获得 的曲线ax.plot

pcolormesh只能绘制一个网格(作为QuadMesh),因此它会返回它而不将其打包到列表中。单个元素无法解包,因此不应使用逗号。此外,pcolormesh需要一个C=参数是2D列表(或 numpy 数组)。pcolormesh接受两种提供列表的方式。作为pcolormesh(X, Y, C)或直接作为pcolormesh(C)。为了区分这两种格式,需要检查这些参数的类型和维度,而空列表可能会导致混淆。有一个空的方法pcolormesh是跳过 X 和 Y,并提供C一个 2D 列表:

quads = plt.pcolormesh([[]])

推荐阅读