我有一个与此类似的绘图功能
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(使用前将#替换为@)