gpt4 book ai didi

python - 颜色条使子图的大小比其余部分更小

转载 作者:行者123 更新时间:2023-12-01 09:05:21 25 4
gpt4 key购买 nike

我正在尝试制作一个子图,其中三个图彼此相邻,然后在最后一个图的右侧有一个颜色条(见图)。

我正在使用以下代码执行此操作:

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) 包含颜色条的最后一个图的宽度比其他两个图小。有没有一些简单的技巧可以解决这个问题,或者我是否必须手动进入并给一个比另一个多一点的填充等等。

enter image description here

最佳答案

如果您不希望子图占用第三个轴,请在制作子图时为其创建一个额外的轴。

要使绘图成为正方形,您需要设置纵横比:axes.set_aspect(10)

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

plot output

关于python - 颜色条使子图的大小比其余部分更小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com