[英]Matplotlib: How to add a line on the colorbar of an imshow()
基本上,我找到了有关如何在颜色条上添加自定义线或点的这些说明,但是我的代码没有任何反应。
我尝试更改zorder或切换到pyplot样式,但仍然无法正常工作。
fig, ax = plt.subplots()
im = ax.imshow(data, cmap='rainbow')
cbar = ax.figure.colorbar(im)
cbar.outline.set_visible(False)
cbar.ax.set_ylabel("α", rotation=0, va="bottom")
# None of them does anything
cbar.ax.plot(0.5, 0.5, 'k.', label="Ref")
cbar.ax.plot(0.5, 3, 'k.', label="Ref")
cbar.ax.plot([0, 1], [3, 3], 'k', label="Ref")
到目前为止的数字看起来像这样
我正在使用matplotlib 3.1.1
Matplotlib会将颜色条的x和y限制设置为相同的值。 因此,如果色条的y限制为1.8和7.2,则x限制也为。 您将需要在这些限制范围内作图以查看标记。
使用axhline
可能是更容易的选择,而不是绘制一条线plot
。 要标记此标记的值,可以将其添加到颜色栏的刻度和刻度标签中。
# clim = cbar.ax.get_ylim() # find axis limits
# cbar.ax.plot(mean(clim), 3, 'k.') # point at 3 in the middle of x axis
cbar.ax.axhline(y=3, c='w') # line at 3
# Set label
original_ticks = list(cbar.get_ticks())
cbar.set_ticks(original_ticks + [3])
cbar.set_ticklabels(original_ticks + ['Ref'])
在这种情况下,您可能需要annotate
而不是plot
。 您在指定的标签plot
通话将不会出现,直到legend()
调用,即使在这种情况下,你想他们是传说中不会出现。
fig, ax = plt.subplots()
im = ax.imshow(np.random.normal(size=100).reshape(10, 10), cmap='rainbow')
cbar = ax.figure.colorbar(im)
cbar.outline.set_visible(False)
cbar.ax.set_ylabel("α", rotation=0, va="bottom")
cbar.ax.annotate('Ref', (0, 0))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.