Matplotlib更改子图大小

3
我试图制作一个带有多个子图的图形。在这个例子中,左侧面板是一个imshow图片,但它有点太小了。我该如何扩大ax1?为了使颜色条与ax2ax3的x轴平齐,我该怎么做?
代码和输出如下:
import matplotlib.pyplot as plt
import numpy as np


fig=plt.figure(figsize=(15,5.5))
ax1=plt.subplot2grid((1,3),(0,0))
ax2=plt.subplot2grid((1,3),(0,1))
ax3=plt.subplot2grid((1,3),(0,2))


image=np.random.random_integers(1,10,size=(100,100))
cax=ax1.imshow(image,interpolation="none",aspect='equal')
cbar=fig.colorbar(cax,ax=ax1,orientation=u'horizontal')

x=np.linspace(0,1)
ax2.plot(x,x**2)
ax3.plot(x,x**3)

plt.show()

enter image description here

1个回答

4

借鉴这个答案,您可以使用AxisDivider调整colorbar的布局。

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

fig=plt.figure(figsize=(15,5.5))
ax1=plt.subplot2grid((1,3),(0,0))
ax2=plt.subplot2grid((1,3),(0,1))
ax3=plt.subplot2grid((1,3),(0,2))

image=np.random.random_integers(1,10,size=(100,100))
im = ax1.imshow(image,interpolation="none",aspect='equal')

divider = make_axes_locatable(ax1)
cax = divider.append_axes("bottom",size="5%",pad=0.7)
cbar=fig.colorbar(im,cax=cax,orientation=u'horizontal')

x=np.linspace(0,1)
ax2.plot(x,x**2)
ax3.plot(x,x**3)

plt.show()

输入图像描述

pad=0.7 看起来对我来说差不多合适。你可能需要调整这个参数以及 figsize 的高度,才能完全按照你的意愿设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接