11

我正在尝试将我的情节拆分为不同的子情节。我想要实现的是在不同的子情节中放置一个子情节的颜色条。现在我正在使用:

# first graph
axes = plt.subplot2grid((4, 2), (0, 0), rowspan=3)
pc = plt.pcolor(df1, cmap='jet')

# second graph
axes = plt.subplot2grid((4, 2), (3, 0))
plt.pcolor(df2, cmap='Greys')

# colorbar
plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc) 

但结果如下(注意颜色条左侧不需要的空图): 错误的图表

我该怎么做才能只打印没有左图的颜色条?

谢谢

4

2 回答 2

19

colorbar()接受一个cax关键字参数,允许您指定axes将在其上绘制颜色条的对象。

在您的情况下,您可以将颜色条调用更改为以下内容:

# colorbar
axes = plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc, cax=axes)

这将占用subplot2grid;给出的整个空间 您可以通过让主轴占据比颜色条轴更多的列,或者通过gridspec显式设置来调整它以使其更合理。例如,您的身材可能更容易通过以下方式进行调整:

from matplotlib import gridspec
gs = gridspec.GridSpec(2, 2, height_ratios=(3, 1), width_ratios=(9, 1))

# first graph
axes = plt.subplot(gs[0,0])
pc = plt.pcolor(df1, cmap='jet')

# second graph
axes = plt.subplot(gs[1,0])
plt.pcolor(df2, cmap='Greys')

# colorbar
axes = plt.subplot(gs[0,1])
plt.colorbar(pc, cax=axes)

height_ratios然后,您可以width_ratios根据自己的喜好进行更改。

于 2013-09-18T14:03:16.017 回答
0

我相信你应该使用ax而不是cax

# colorbar
axes = plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc, ax=axes)
于 2015-08-21T04:51:10.763 回答