嗨所以我有以下命令。
在热图的网格中指定子图轴:
ax4 = plt.subplot2grid((3, 4), (1, 3), colspan=1, rowspan=1)
要在此轴上创建热图:
heatmap = ax4.pcolor(data, cmap=mycm, edgecolors = 'none', picker=True)
要将绘图向右移动,以便根据其他子图将其置于轴中心:
box = ax4.get_position()
ax4.set_position([box.x0*1.05, box.y0, box.width * 1.05, box.height])
显示没有填充的颜色条
fig.colorbar(heatmap, orientation="vertical")
然而,这导致:
http://imageshack.us/a/img812/4343/t08o.png
请注意,颜色栏位于热图的顶部。
如果我使用pad关键字,我可以移动颜色条,使其不与热图重叠,但是这会减小绘图区域的宽度,即:
http://imageshack.us/a/img542/8043/ci8m.png
如何保持绘图区域的宽度相同,并且只有该区域外的颜色条?
谢谢!
答案 0 :(得分:8)
您可以放置colorbar into it's own axis并直接设置该轴的大小和位置。我在下面添加了一个示例,它为您现有的代码添加了另一个轴。如果此图包含许多绘图和颜色条,您可能需要使用gridspec添加它们。
import matplotlib.pylab as plt
from numpy.random import rand
data = rand(100,100)
mycm = plt.cm.Reds
fig = plt.figure()
ax4 = plt.subplot2grid((3, 4), (1, 3), colspan=1, rowspan=1)
heatmap = ax4.pcolor(data, cmap=mycm, edgecolors = 'none', picker=True)
box = ax4.get_position()
ax4.set_position([box.x0*1.05, box.y0, box.width, box.height])
# create color bar
axColor = plt.axes([box.x0*1.05 + box.width * 1.05, box.y0, 0.01, box.height])
plt.colorbar(heatmap, cax = axColor, orientation="vertical")
plt.show()