Matplotlib 添加轮廓图的颜色条

1 投票
1 回答
2171 浏览
提问于 2025-04-18 16:09

请告诉我如何在下面的图中添加一个等高线图的颜色条:

from matplotlib import pyplot as plt
from astroML.plotting import scatter_contour
from astroML.datasets import fetch_sdss_S82standards

data = fetch_sdss_S82standards()

g = data['mmu_g']
r = data['mmu_r']
i = data['mmu_i']


fig, ax = plt.subplots(figsize=(5, 3.75))
scatter_contour(g - r, r - i, threshold=200, log_counts=True, ax=ax,
                histogram2d_args=dict(bins=40),
                plot_args=dict(marker=',', linestyle='none', color='black'),
                contour_args=dict(cmap=plt.cm.bone))

ax.set_xlabel(r'${\rm g - r}$')
ax.set_ylabel(r'${\rm r - i}$')

ax.set_xlim(-0.6, 2.5)
ax.set_ylim(-0.6, 2.5)

plt.show()

我试过用 cbar = plt.colorbar(),但是出现了错误:没有找到可以用来创建颜色条的可映射对象。首先需要定义一个可映射对象,比如用 imshow 创建的图像,或者用 contourf 创建的等高线集。

1 个回答

2

如果你有权限修改源代码,那么你可以在scatter_contour这个地方改一行代码,让它返回你需要的轮廓集:

CS = ax.contourf(H.T, levels, extent=extent, **contour_args)

...

return CS

然后你可以通过调用下面的代码来创建你的颜色条:

CS = scatter_contour(...)
colorbar(CS)

如果你没有权限,那你就得尝试找出坐标轴中保存的集合的引用——我现在不太确定该怎么做。

撰写回答