Изменение размера рисунка с помощью colorbar

#python #matplotlib #colorbar

#python #matplotlib #цветная панель

Вопрос:

Следующий вопрос возник во время игры с размерами рисунков. Я пытаюсь создать рисунки одинакового размера (скажем, 5 на 5 дюймов). Дело в том, что когда я меняю обозначение colorbar , кажется, что размер рисунка меняется. В приведенном ниже коде этого можно достичь, изменив конечное значение if на tick_check=False . Как я могу заставить рисунки иметь одинаковый размер, независимо от colorbar обозначения?

Вот мой MWE:

 import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

def foo(arr, sub, fig, _str, vmin, vmax, ticks, fontsize, check, tick_check):
    cm=plt.cm.jet
    P2A=0.12; box_size=5
    image=sub.matshow(arr,origin='low',cmap=cm,vmin=vmin,vmax=vmax,extent=[-10.92,10.92,-10.92,10.92],interpolation='bilinear')
    sub.axis([-box_size,box_size,-box_size,box_size])
    divider = make_axes_locatable(sub)
    sub.set_title(_str,fontsize=fontsize); sub.set_xlabel(r"A",fontsize=fontsize); sub.set_ylabel(r"B",fontsize=fontsize)
    if tick_check: cbar=fig.colorbar(image, cax=divider.append_axes("right", size="5%", pad=0.05), format='%.1E')
    else: cbar=fig.colorbar(image, cax=divider.append_axes("right", size="5%", pad=0.05), format='%.1f')
    cbar.set_ticks(ticks); sub.xaxis.tick_bottom(); sub.tick_params(labelsize=10);sub.set_title(_str, y=1.01); plt.tight_layout(h_pad=1)

d_arr=np.random.rand(182,182)
fig0, (a1) = plt.subplots(ncols=1,figsize=(5,5))
im=foo(d_arr,a1,fig0,r'Test',np.min(d_arr),np.max(d_arr),np.arange(np.min(d_arr),np.max(d_arr),0.1),10,False,True)
plt.savefig('Foo.eps',bbox_inches='tight',dpi=100)
  

Приветствуется любая помощь.

Ответ №1:

Оказывается, решением этой проблемы является ключевое слово aspect , для которого необходимо установить значение auto . So:

 image=sub.matshow(arr,origin='low',cmap=cm,vmin=vmin,vmax=vmax,extent=[-10.92,10.92,-10.92,10.92],interpolation='bilinear', aspect='auto')