Matplotlib добавление контурной цветовой панели

Пожалуйста, дайте мне знать, как я могу включить цветную полосу контурного графика на следующем рисунке:

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() Я получаю сообщение об ошибке: не найден mappable для использования для создания цветовой панели. Сначала определите сопоставляемую информацию, такую ​​как изображение (с imshow) или набор контуров (с контуром).

1 ответ

Если у вас есть доступ на запись к источнику, вы можете изменить строку в scatter_contour, чтобы она возвращала необходимый набор контуров:

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

...

return CS

а затем вы можете сделать свой цветовой бар, позвонив

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

Если вы не можете, то вам нужно будет попытаться отследить ссылки на коллекции, хранящиеся на осях, - не сразу убедившись, как это сделать.

Другие вопросы по тегам