繁体   English   中英

Matplotlib:如何在imshow()的颜色栏上添加一行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM