Matplotlib:有没有办法从父轴获取颜色条轴?

Matplotlib: Is there a way to get a colorbar axis from a parent axis?

我正在做这样的情节:

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

fig = plt.gcf()
ax = plt.gca()
ax.pcolormesh(np.random.rand(10, 10))
fig.colorbar(mpl.cm.ScalarMappable(), ax=ax)

最后一行添加了一个颜色条和第二个轴

fig.axes
>>> [<AxesSubplot:>, <AxesSubplot:label='<colorbar>'>]

我的问题: 仅使用 ax = plt.gca() 返回的轴(在上面的列表中首先返回),这两个轴之间是否存在任何关系可用于获取颜色条的轴(上面列表中的第二个)?

据我所知,如果您这样定义 pcolormeshcolorbar,则不会。
无论如何,您可以预先为 pcolormesh 定义一个 ax 并为 colorbar 定义一个 cax。然后你可以将 cax 作为参数传递给 matplotlib.pyplot.colorbar。通过这种方式,您可以根据需要访问轴 axcax

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np


grid_kws = {'width_ratios': (0.9, 0.05), 'wspace': 0.2}
fig, (ax, cax) = plt.subplots(1, 2, gridspec_kw = grid_kws, figsize = (10, 8))
ax.pcolormesh(np.random.rand(10, 10))
plt.colorbar(mpl.cm.ScalarMappable(), cax=cax)

plt.show()


一般来说,关注你的代码:

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

fig = plt.gcf()
ax = plt.gca()
ax.pcolormesh(np.random.rand(10, 10))
fig.colorbar(mpl.cm.ScalarMappable(), ax=ax)

ax开始,可以用ax.figure得到它的数字。从那里,您可以使用 ax.figure.axes 获取所有图形轴的列表。所以,如果你想只使用 pcolormesh' 轴来获得 colobar 的轴,你应该使用:

ax.figure.axes[1]

据我所知,父图形是两个轴之间的唯一关系。