Настройка размера colorbar под график в Matplotlib: практический гид
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы цветовая шкала автоматически подстроилась под размеры вашего графика в Matplotlib, воспользуйтесь функцией make_axes_locatable
.
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
fig, ax = plt.subplots()
im = ax.imshow([[1, 2], [2, 3]]) # Добавьте свои данные здесь
# Приводим размеры цветовой шкалы к размерам графика
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)
# Размещаем цветовую шкалу в соседнем контейнере
fig.colorbar(im, cax=cax)
plt.show()
Этот пример демонстрирует, как улучшается визуальное восприятие графика при правильном размещении цветовой шкалы.
Секрет в создании идеальной динамичной цветовой шкалы
Ничто так не ухудшает впечатление от графика, как несоответствующая его размерам цветовая шкала. Для достижения идеального соответствия воспользуйтесь функцией make_axes_locatable
.
Золотой рецепт: делитель осей
С помощью make_axes_locatable
вы сможете подстроить размеры и отступы цветовой шкалы под свои нужды:
# Предполагается, что `fig` и `ax` уже созданы
# Приспосабливаем размер и отступ цветовой шкалы под изображение
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="7%", pad=0.07)
# Теперь cax готов
plt.colorbar(im, cax=cax)
Путь мастера: оси через add_axes
Для точного размещения цветовой шкалы используйте метод ax.add_axes
:
# Определяем положение текущих осей графика
pos = ax.get_position()
# Получаем место для цветовой шкалы
cax = fig.add_axes([pos.x1 + 0.01, pos.y0, 0.02, pos.height])
# Размещаем в нём цветовую шкалу
plt.colorbar(im, cax=cax)
Не забудьте сохранить пропорции!
Важно избегать сжатия или растяжения графика, размещая цветовую шкалу на отдельной оси:
fig.colorbar(im, cax=cax)
Автоматическая настройка параметров fraction и padding
Установите параметры fraction
и pad
так, чтобы они подходили различным размерам графика:
fig.colorbar(im, fraction=0.046 if ax.get_aspect() == 'equal' else 0.035, pad=0.04)
Визуализация
Как при подборе одежды, важно, чтобы все элементы гармонично сочетались друг с другом: то же самое относится и к графику с цветовой шкалой. Убедитесь, что размеры цветовой шкалы приемлемы и не нарушают эстетику изображения.
Вы можете настроить размер цветовой шкалы следующим образом:
cbar = plt.colorbar()
cbar.ax.set_aspect('auto')
Результат заметен:
До: Цветовая шкала была слишком велика для графика
После: Цветовая шкала идеально гармонирует с графиком!
Довершение ваших графиков: продвинутые советы
Работа с несколькими подграфиками
Если у вас есть множество подграфиков, используйте параметр ax
, чтобы обеспечить унифицированное отображение цветовых шкал:
fig.colorbar(im, ax=axs, fraction=0.046, pad=0.04)
Ориентация цветовой шкалы
В зависимости от ориентации цветовой шкалы, подберите соответствующие значения для fraction
и pad
:
cax = divider.append_axes("bottom", size="5%", pad=0.3)
plt.colorbar(im, cax=cax, orientation='horizontal')
Профессиональный совет: функция для многократного использования
Создайте функцию для быстрого добавления цветовых шкал к вашим графикам:
def whipUpColorbar(fig, ax, im, orientation='vertical'):
divider = make_axes_locatable(ax)
if orientation == 'vertical':
cax = divider.append_axes("right", size="5%", pad=0.05)
else:
cax = divider.append_axes("bottom", size="5%", pad=0.3)
fig.colorbar(im, cax=cax, orientation=orientation)
Полезные материалы
- Официальная документация Matplotlib по цветовым шкалам.
- Обсуждение настройки размера цветовой шкалы на Stack Overflow.
- Гид по модулю AxesGrid1 в Matplotlib documentation.
- Учебное видео о применении цветовых шкал в Matplotlib на YouTube.
- Блог Джозефа Лонга с полезными советами по настройке цветовых шкал.
- Урок по используемый функции Tight Layout в Matplotlib для управления расположением графиков.