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()
返回的轴(在上面的列表中首先返回),这两个轴之间是否存在任何关系可用于获取颜色条的轴(上面列表中的第二个)?
据我所知,如果您这样定义 pcolormesh
和 colorbar
,则不会。
无论如何,您可以预先为 pcolormesh
定义一个 ax
并为 colorbar
定义一个 cax
。然后你可以将 cax
作为参数传递给 matplotlib.pyplot.colorbar
。通过这种方式,您可以根据需要访问轴 ax
和 cax
。
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]
据我所知,父图形是两个轴之间的唯一关系。
我正在做这样的情节:
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()
返回的轴(在上面的列表中首先返回),这两个轴之间是否存在任何关系可用于获取颜色条的轴(上面列表中的第二个)?
据我所知,如果您这样定义 pcolormesh
和 colorbar
,则不会。
无论如何,您可以预先为 pcolormesh
定义一个 ax
并为 colorbar
定义一个 cax
。然后你可以将 cax
作为参数传递给 matplotlib.pyplot.colorbar
。通过这种方式,您可以根据需要访问轴 ax
和 cax
。
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]
据我所知,父图形是两个轴之间的唯一关系。