Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Colorbar使子地块的大小比其他地块小_Python_Matplotlib - Fatal编程技术网

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()