我正在尝试绘制一个图,其中所有子图都共享类似于此答案的色标。我遇到的问题是在脚本中,我正在调用一个函数,该函数创建QuadMesh(从生成ax.pcolormesh)实例并返回与之关联的Figure和Axes实例。有什么方法可以从Axes实例(或Figure实例)获取QuadMesh实例的句柄?
import matplotlib.pyplot as plt
import numpy as np
def foo(subplot):
data = np.random.random((100,100))
x,y = np.meshgrid(np.arange(101),np.arange(101))
fig = plt.gcf()
ax = fig.add_subplot(subplot)
quadmesh = ax.pcolormesh(x,y,data)
return fig,ax
fig = plt.figure()
f,a = foo(221)
f,a = foo(222)
f,a = foo(223)
f,a = foo(224)
fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.85,0.15,0.05,0.7])
#fig.colorbar(magic_get_quadmesh,cax=cbar_ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我不确定自己想要的是什么-尤其是因为有4个四边形-但您可以通过其collections属性给定AxesSubplot来找到四边形:
fig.colorbar(a.collections[0], cax=cbar_ax)
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我使用了这种探索性内省工具找到了答案:
def describe(obj):
for key in dir(obj):
try:
val = getattr(obj, key)
except AttributeError:
continue
if callable(val):
help(val)
else:
print('{k} => {v!r}'.format(k=key, v=val))
print('-' * 80)
describe(a)
Run Code Online (Sandbox Code Playgroud)
是的,它可以打印出很多输出,但是快速搜索"quadmesh"可以找到答案。
| 归档时间: |
|
| 查看次数: |
624 次 |
| 最近记录: |