Определение ширины / высоты GridSpec в Matplotlib - PullRequest
0 голосов
/ 31 декабря 2018

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

fig = plt.figure(constrained_layout=True,figsize=(15,15))
gs = GridSpec(3,2, figure=fig)
axes = []

ax = fig.add_subplot(gs[0, 0])
ax.imshow(square, cmap='gray')
ax.set_title('Original')
axes.append(ax)

ax = fig.add_subplot(gs[0, 1])
im1 = ax.imshow(scaled_square_sobel, cmap='gray')
ax.set_title('Sobel')
axes.append(ax)

ax = fig.add_subplot(gs[1, 0])
im2 = ax.imshow(scaled_square_sobel_x, cmap='gray')
ax.set_title('Sobel X')
axes.append(ax)

ax = fig.add_subplot(gs[1, 1])
ax.imshow(scaled_square_sobel_y, cmap='gray')
ax.set_title('Sobel Y')
axes.append(ax)

ax = fig.add_subplot(gs[2,0:2])
fig.colorbar(im2, cax=ax, orientation='horizontal')
plt.suptitle('Comparacao Sobel');

Это выглядит так

Weird colorbar

КакВы можете видеть, что цветовая шкала принимает высоту всего графика вместо красивой и элегантной маленькой высоты.Как я могу «заставить» GridSpec иметь предопределенную высоту.

Конечно, я мог бы создать (30,20) сеточную спецификацию и определить каждый график для большего среза, но ИМХО это тоже неэлегантно, и, кажется, я работаю с таблицами HTML.

Есть идеи по улучшению кода выше?

1 Ответ

0 голосов
/ 09 февраля 2019

Нет необходимости создавать сетку для цветовой шкалы:

fig, axs = plt.subplots(constrained_layout=True,figsize=(15,15))

# other axes...

ax = axs[1, 1]
im2 = ax.imshow(np.random.rand(10,10), cmap='gray')
ax.set_title('Sobel Y')

fig.colorbar(im2, ax=axs, orientation='horizontal')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...