gpt4 book ai didi

python - 如何为纵横比 < 1 的图像设置 Matplotlib 颜色条高度

转载 作者:行者123 更新时间:2023-12-04 14:12:30 25 4
gpt4 key购买 nike

我正在尝试获取图像的颜色条,它应该与图像具有相同的高度。有很多解决方案建议here ,但它们都不适用于纵横比小于 1 的图像。

如果您像这样使用链接问题中接受的答案...

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

plt.figure()
ax = plt.gca()
im = ax.imshow(np.arange(100).reshape((10,10)), aspect = 0.4375)

# create an axes on the right side of ax. The width of cax will be 5%
# of ax and the padding between cax and ax will be fixed at 0.05 inch.
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)

plt.colorbar(im, cax=cax)
plt.savefig("asdf.png", bbox_inches = "tight")

...(注意 imshow 调用中的方面!),我明白了:

enter image description here

不考虑纵横比,它工作得很好,但对于我的数据,我需要设置纵横比,因为 x 轴的步长比 y 轴的步长大得多。

其他解决方案,如 plt.colorbar(im,fraction=0.046, pad=0.04) 或添加一个单独的轴也不起作用并产生类似的结果。

在这种情况下,如何让颜色条具有相同的高度?

最佳答案

我终于找到了解决方案here :

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

...

fig, ax = plt.subplots(1, 1)
im = ax.imshow(data, aspect = aspectRatio)
axins = inset_axes(ax, width = "5%", height = "100%", loc = 'lower left',
bbox_to_anchor = (1.02, 0., 1, 1), bbox_transform = ax.transAxes,
borderpad = 0)
fig.colorbar(im, cax = axins)

...其中 data 是您的值数组,1.02 是图形和颜色条之间的填充。

无论纵横比如何,这都会创建具有完美高度的颜色条。不要摆弄魔数(Magic Number)或任何类似的东西。

关于python - 如何为纵横比 < 1 的图像设置 Matplotlib 颜色条高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63118710/

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