matplotlib 颜色条不起作用(由于垃圾收集?)

2024-04-11

我有一个与此类似的绘图功能

def fct():
    f=figure()
    ax=f.add_subplot(111)
    x,y=mgrid[0:5,0:5]
    z=sin(x**2+y**2)
    ax.pcolormesh(x,y,z)

当我在中定义上面的函数时ipython(使用--pylab选项),然后调用

fct()
colorbar()

我收到一个错误

“运行时错误:找不到可用于创建颜色条的可映射对象。”。

def fct():
    f=figure()
    x,y=mgrid[0:5,0:5]
    z=sin(x**2+y**2)
    pcolormesh(x,y,z)

然后就可以了。我想这与垃圾收集有关 - 在第一个示例中如何防止这个问题?


这是因为你的第一个例子,你正在使用ax.polormesh, not pyplot.polotmesh(命名空间由pylab), 你打电话时colorbar()(实际上plt.colorbar()),它失去了对哪个可映射以及应该将颜色条设置为哪个轴的跟踪。

因此添加这些行将使其工作:

import matplotlib.pyplot as plt
fct()
ax=plt.gca() #get the current axes
PCM=ax.get_children()[2] #get the mappable, the 1st and the 2nd are the x and y axes
plt.colorbar(PCM, ax=ax) 

现在你提到你的实际情节要复杂得多。您想确保它是ax.get_children()[2]或者您可以通过查找来选择它matplotlib.collections.QuadMesh实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matplotlib 颜色条不起作用(由于垃圾收集?) 的相关文章

随机推荐