Настройка вложенных графиков, чтобы освободить место для цветовой панели

#python #matplotlib

#python #matplotlib

Вопрос:

Я пытался отобразить некоторые данные и обнаружил, что ограниченный макет очень полезен для сохранения полей и пробелов между подзаголовками. Однако, когда я добавляю цветную панель, она уменьшает ширину всех подзаголовков и создает дополнительное пустое пространство в подзаголовках выше. Это вызывает проблему, когда такие графики отображаются в отчетах, где много места тратится впустую из-за дополнительного пространства, занимаемого colorbar. Мне было интересно, как я могу избежать этого и изменять размер только графиков изображений при добавлении цветовой панели, не затрагивая подзаголовки выше, и при этом не создается дополнительного пробела. Пример кода проблемы, с которой я сталкиваюсь,:

 fig, ax = plt.subplots(4,2, constrained_layout=True)
ax[0,0].plot(range(10))
ax[0,1].plot(range(10))
ax[1,0].plot(range(10))
ax[1,1].plot(range(10))
ax[2,0].pcolor(np.random.rand(2,2))
ax[2,1].pcolor(np.random.rand(2,2))
ax[3,0].pcolor(np.random.rand(2,2))
im = ax[3,1].pcolor(np.random.rand(2,2))
bar = fig.colorbar(im,ax=[[ax[2,0],ax[2,1]],[ax[3,0],ax[3,1]]])
  

Будет лучше, если я смогу сделать это с помощью contrantrained_layout=True .

Ответ №1:

У меня нет большого опыта в настройке цветовой панели, но как насчет идеи добавления новой оси и размещения цветовой панели в центре? Я устанавливаю значения размещения вручную. Я хотел поместить цветовую панель в два нижних графика, чтобы сделать ширину одинаковой, но я не мог этого сделать.

 import matplotlib.pyplot as plt

fig, ax = plt.subplots(4,2, constrained_layout=True)
ax[0,0].plot(range(10))
ax[0,1].plot(range(10))
ax[1,0].plot(range(10))
ax[1,1].plot(range(10))
ax[2,0].pcolor(np.random.rand(2,2))
ax[2,1].pcolor(np.random.rand(2,2))
ax[3,0].pcolor(np.random.rand(2,2))
im = ax[3,1].pcolor(np.random.rand(2,2))

cax = fig.add_axes([0.48, 0.11, 0.05, 0.36])
bar = fig.colorbar(im,cax=cax,ax=[[ax[2,0],ax[2,1]],[ax[3,0],ax[3,1]]])

fig.subplots_adjust(wspace=0.7, hspace=0.5)

plt.show()
  

введите описание изображения здесь

Комментарии:

1. Он по-прежнему оставляет много места между цветовыми линиями, что мне сейчас не нужно. Тем не менее, я попробовал аналогичный подход с 2 сетками, где я использовал другую сетку для графиков изображений с тонким столбцом справа для размещения подзаголовка. Но это не удалось, так как две сетки выглядели перекрывающимися.