当我试图在图像上绘制一些值时,我遇到了一个问题。问题是我不能真正正确地放置色条。正确地说,我的意思是我叠加了一个线条图的图像。这个线条图的yaxis应该在右边,标签在右边,再往右应该是图像的颜色条。
以下是显示问题的简化代码:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1 import make_axes_locatable
image = np.random.randint(10, size=100).reshape(10, 10)
fig, ax = plt.subplots()
# ax2 = ax.twinx() # -> Calling this messes up the colorbar
# ax2.plot(image.sum(0), 'r') # what I actually want to do but not needed for the error
im = ax.pcolormesh(image)
cax = make_axes_locatable(ax).append_axes('right', size="5%", pad=0.4)
cbar = fig.colorbar(im, cax=cax)下面你可以看到ax2 = ax.twinx()在颜色栏上的效果(我对图像没有足够的声誉,所以stackoverflow用链接代替了它)。
我已经尝试过make_axes_locatable(ax).append_axes()和make_axes_locatable(ax).new_horizontal()的组合,灵感来自于这个问题的答案:Positioning the colorbar。
在查看fig.colorbar()的文档时,我找到了参数ax和cax,并尝试使用它们。他们做了很多事情,但不是我想做的。
我不确定我做错了什么,在互联网上找不到,我很感谢任何建议。
发布于 2021-09-30 10:56:38
你有没有用constrained_layout试过普通的色条:
import matplotlib.pyplot as plt
import numpy as np
image = np.random.randint(10, size=100).reshape(10, 10)
fig, ax = plt.subplots(constrained_layout=True)
ax2 = ax.twinx()
ax2.plot(image.sum(0), 'r')
im = ax.pcolormesh(image)
cbar = fig.colorbar(im, ax=ax)
plt.show()

https://stackoverflow.com/questions/69390700
复制相似问题