Python Colorbar使子地块的大小比其他地块小
我试图创建一个子图,其中三个图相邻,然后在最后一个图的右侧创建一个颜色条(见图) 我正在使用以下代码执行此操作:Python Colorbar使子地块的大小比其他地块小,python,matplotlib,Python,Matplotlib,我试图创建一个子图,其中三个图相邻,然后在最后一个图的右侧创建一个颜色条(见图) 我正在使用以下代码执行此操作: import numpy as np import matplotlib.pyplot as plt from matplotlib import rcParams from mpl_toolkits.axes_grid1 import make_axes_locatable x = np.linspace(1, 100, 100) y = np.linspace(0.1, 10,
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
from mpl_toolkits.axes_grid1 import make_axes_locatable
x = np.linspace(1, 100, 100)
y = np.linspace(0.1, 10, 100)
z = x[:, np.newaxis] + y[np.newaxis, :]
fig, ax = plt.subplots(1, 3, figsize=(12, 4))
ax[0].contourf(x, y, z)
ax[0].set_xlabel('x')
ax[0].set_ylabel('y')
ax[1].contourf(x, y, z)
ax[1].set_xlabel('x')
ax[1].set_ylabel('y')
plt.contourf(x, y, z)
ax[2].set_xlabel('x')
ax[2].set_ylabel('y')
divider = make_axes_locatable(plt.gca())
cax = divider.append_axes("right", "10%", pad="3%")
plt.colorbar(cax=cax)
plt.tight_layout()
plt.show()
我的问题是1)我不认为前两个图是完全正方形的(我希望它们是正方形),2)最后一个包含颜色条的图的宽度比其他两个图的宽度小。是否有一些简单的技巧来解决这个问题,或者我必须手动进入并给一个比另一个多一点填充,以此类推
如果不希望子地块侵蚀第三个轴,则在创建子地块时,已经为其创建了一个额外的轴 要使绘图为方形,需要设置纵横比:
轴。设置纵横比(10)
您的问题的答案与第页的第4个答案非常相似。我假设OP的输出结果表明他/她希望颜色条高度与子批次相同
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1, 100, 100)
y = np.linspace(0.1, 10, 100)
z = x[:, np.newaxis] + y[np.newaxis, :]
gridspec = {'width_ratios': [1, 1, 1, 0.1]}
fig, ax = plt.subplots(1, 4, figsize=(12, 4), gridspec_kw=gridspec)
ax[0].contourf(x, y, z)
ax[0].set_xlabel('x')
ax[0].set_ylabel('y')
ax[1].contourf(x, y, z)
ax[1].set_xlabel('x')
ax[1].set_ylabel('y')
plt.sca(ax[2])
plt.contourf(x, y, z)
ax[2].set_xlabel('x')
ax[2].set_ylabel('y')
for axes in ax[:3]:
axes.set_aspect(10)
cax = ax[3]
plt.colorbar(cax=cax)
plt.tight_layout()
plt.show()