2016-10-27 3 views
0

В качестве иллюстрации я представляю здесь фигуру, чтобы изобразить мой вопрос.Настройка рамки рамки для двух подзаголовков, содержащих MatPlotLib. Содержание базы данных

fig = plt.figure(figsize = (10,4)) 
ax1 = plt.subplot(121) 
map =Basemap(llcrnrlon=x_map1,llcrnrlat=y_map1,urcrnrlon=x_map2,urcrnrlat=y_map2) 
map.readshapefile('shapefile','shapefile',zorder =2,linewidth = 0) 
for info, shape in zip(map.shapefile, map.shapefile): 
    x, y = zip(*shape) 
    map.plot(x, y, marker=None,color='k',linewidth = 0.5) 
plt.title("a") 
ax2 = plt.subplot(122) 
y_pos = [0.5,1,] 
performance = [484.0,1080.0] 
bars = plt.bar(y_pos, performance, align='center') 
plt.title("b") 

enter image description here

В связи с настройкой отображения не согласуется с подзаговором (б). Таким образом, подзаголовок (а) и подзаголовок (б) имеют четкую рамку платы. На мой взгляд, неприсоединившиеся границы не нравятся читателю.

Есть ли способ отрегулировать размер границы подзаголовка (b) для гармонии в целом.

Это моя цель:

enter image description here

Обратите внимание, что, сюжетные (а) должны содержать matplotlib.basemap элементы.

ответ

1

В настоящее время ваш подзаговор слева имеет соотношение сторон 'equal', а для другого - автоматическое. Поэтому вам необходимо вручную установить соотношение сторон подзаголовка справа:

def get_aspect(ax): 
    xlim = ax.get_xlim() 
    ylim = ax.get_ylim() 
    aspect_ratio = abs((ylim[0]-ylim[1])/(xlim[0]-xlim[1])) 

    return aspect_ratio 

ax2.set_aspect(get_aspect(ax1)/get_aspect(ax2))