作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取图像的颜色条,它应该与图像具有相同的高度。有很多解决方案建议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 调用中的方面!),我明白了:
不考虑纵横比,它工作得很好,但对于我的数据,我需要设置纵横比,因为 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/
我有一张 table 。我希望它的数据垂直和水平居中。 我使用了 align="center"valign="middle" ,但它没有用。
我是一名优秀的程序员,十分优秀!