[英]How can I add a label to colorbar using ImageGrid?
In a previous question, colobar label matplotlib in ImageGrid , had a solution for adding a label to the colorbar, but this seems to be broken with the current version. 在上一个问题中, ImageGrid中的colobar标签matplotlib有一个向colorbar添加标签的解决方案,但这似乎与当前版本有关。
Platforms I have tried: 平台我试过:
Below is the code from the previous question, with some extra code for running in an iPython notebook: 下面是上一个问题的代码,以及一些在iPython笔记本中运行的额外代码:
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import AxesGrid
def get_demo_image():
import numpy as np
from matplotlib.cbook import get_sample_data
f = get_sample_data("axes_grid/bivariate_normal.npy", asfileobj=False)
z = np.load(f)
# z is a numpy array of 15x15
return z, (-3,4,-4,3)
def demo_grid_with_single_cbar(fig):
"""
A grid of 2x2 images with a single colorbar
"""
grid = AxesGrid(fig, 132, # similar to subplot(132)
nrows_ncols = (2, 2),
axes_pad = 0.0,
share_all=True,
label_mode = "L",
cbar_location = "top",
cbar_mode="single",
)
Z, extent = get_demo_image()
for i in range(4):
im = grid[i].imshow(Z, extent=extent, interpolation="nearest")
#plt.colorbar(im, cax = grid.cbar_axes[0])
#grid.cbar_axes[0].colorbar(im)
cbar = grid.cbar_axes[0].colorbar(im)
cbar.ax.set_label_text("$[a.u.]$")
for cax in grid.cbar_axes:
cax.toggle_label(False)
# This affects all axes as share_all = True.
grid.axes_llc.set_xticks([-2, 0, 2])
grid.axes_llc.set_yticks([-2, 0, 2])
#
F = plt.figure(1, (10.5, 2.5))
F.subplots_adjust(left=0.05, right=0.95)
demo_grid_with_single_cbar(F)
plt.draw()
plt.show()
The error message from the code is of the form: 代码中的错误消息的形式如下:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-1-60ebdb832699> in <module>()
40 F = plt.figure(1, (10.5, 2.5))
41 F.subplots_adjust(left=0.05, right=0.95)
---> 42 demo_grid_with_single_cbar(F)
43
44 plt.draw()
<ipython-input-1-60ebdb832699> in demo_grid_with_single_cbar(fig)
29 #grid.cbar_axes[0].colorbar(im)
30 cbar = grid.cbar_axes[0].colorbar(im)
---> 31 cbar.ax.set_label_text("$[a.u.]$")
32
33 for cax in grid.cbar_axes:
AttributeError: 'CbarAxes' object has no attribute 'set_label_text'
Has the matplotlib interface changed since the original question was asked? 自问问原始问题以来,matplotlib接口是否已更改? If so, how do I add the colorbar label? 如果是这样,我如何添加colorbar标签?
Personally, I've always perceived matplotlib
as black magic, similar to TeX
, so I cannot guarantee that my answer is the "official" way of doing what you want, or that it will continue to work in later versions. 就个人而言,我一直认为matplotlib
是黑魔法,类似于TeX
,所以我不能保证我的答案是做你想要的“官方”方式,或者它将继续在以后的版本中工作。 But thanks to this gallery example , I could devise the following incantation: 但是由于这个画廊的例子 ,我可以设计以下咒语:
grid[0].cax.colorbar(im)
cax = grid.cbar_axes[0]
axis = cax.axis[cax.orientation]
axis.label.set_text("$[a.u.]$")
(don't forget to remove all your colorbar-related code). (不要忘记删除所有与colorbar相关的代码)。 This works in the current matplotlib
version (1.4.3). 这适用于当前的matplotlib
版本(1.4.3)。 The result: 结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.