我正在用多个数字和相应的色条绘制一个图。本页http://www.sc.eso.org/~bdias/pycoffee/codes/20160407/gridspec_demo.html声称知道这样做的最佳方法。我倾向于相信他们。
然而,当我以他们的方式来处理colorbar的kwags时,我遇到了一些问题:
from matplotlib.colorbar import Colorbar
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
import numpy as np
median = np.zeros((100,100))
map0 = np.zeros((100,100))
map1 = map0
map2 = map0
fig = plt.figure()
plt.tight_layout()
gs = gridspec.GridSpec(2,6)
ax = plt.subplot(gs[0,0])
cbax = plt.subplot(gs[0,1])
ax1 = plt.subplot(gs[0,2])
cbax1 = plt.subplot(gs[0,3])
ax2 = plt.subplot(gs[0,4])
cbax2 = plt.subplot(gs[0,5])
ax3 = plt.subplot(gs[1,0])
cbax3 = plt.subplot(gs[1,1])
ax4 = plt.subplot(gs[1,2])
cbax4 = plt.subplot(gs[1,3])
ax5 = plt.subplot(gs[1,4])
cbax5 = plt.subplot(gs[1,5])
cax = ax.imshow(map0)
ax.contour(median)
cb = Colorbar(ax = cbax,mappable = cax,shrink=0.8)
cax1 = ax1.imshow(map1)
ax1.contour(median)
cb1 = Colorbar(ax = cbax1,mappable = cax1)
cax2 = ax2.imshow(map2)
ax2.contour(median)
cb2 = Colorbar(ax = cbax2,mappable = cax2)
cax3 = ax3.imshow(map0/median)
ax3.contour(median)
cb3 = Colorbar(ax = cbax3,mappable = cax3)
cax4 = ax4.imshow(map1/median)
ax4.contour(median)
cb4 = Colorbar(ax = cbax4,mappable = cax4)
cax5 = ax5.imshow(map2)
ax5.contour(median)
cb5 = Colorbar(ax = cbax5,mappable = cax5)
当我现在调用kwargsshrink
和pad
时,我得到以下消息:
我想我不能在gs[0,1]
中填充颜色条,而必须移动gs[0,1]
,这是有道理的。但我不明白为什么心理医生不起作用?在
我正在使用Python 2.7.12
我不认为像在链接中那样直接创建
Colorbar
有用;相反,可以使用fig.colorbar()
。然而,这只是一个无关紧要的问题。在首先考虑在绘图旁边创建一个颜色条。在
这里,
shrink
工作正常,因为您希望colorbar所在的轴比它所属的轴ax
小0.8倍。在现在,如果指定colorbar应该驻留的轴,
^{pr2}$shrink
没有任何意义,因为这些轴不需要在colorbar函数内部创建,而是由外部提供。在请注意,这是gridspec的独立端。您是否想使用gridspec也是一个品味问题,但对于简单的绘图来说肯定不需要。在
如果你有更多的情节,那又取决于你想展示什么。问题中编辑的示例看起来更像一个常规网格。在这里,可以通过
make_axes_locatable
有效地为每个子批次创建颜色条轴。在考虑到上面的情况,您可以通过不使用这个轴分隔符来缩小颜色条,但是像往常一样,创建您的colorbar并使用
shrink
参数。在相关问题 更多 >
编程相关推荐