如何在不同的子批次matplotlib中绘制pcolor colorbar

2024-05-19 02:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着把我的情节分成不同的小段。。我想实现的是在不同的子块中为子块放置一个颜色条。 现在我正在使用:

# 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) 

但其结果如下(请注意,位于色条左侧的不需要的空图形): Wrong graph

如果只打印色条而不打印左边的图,我该怎么办?

谢谢


Tags: 颜色pltgraphfirstcmap子块df1pc
2条回答

colorbar()接受一个cax关键字参数,该参数允许您指定将绘制colorbar的axes对象。

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

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

这将占用subplot2grid给定的整个空间;您可以通过使主轴占用比colorbar轴更多的列,或者通过显式设置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_ratioswidth_ratios

我认为你应该使用ax而不是cax。

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

相关问题 更多 >

    热门问题