Python 2.7 将两个tricontourf放在同一轴上不会同时显示两个

Python 2.7 将两个tricontourf放在同一轴上不会同时显示两个,python-2.7,matplotlib,Python 2.7,Matplotlib,我有两个独立的数据集,这里是z_p和z_g,我想把两个tricontourf()实例放在同一个轴上,每个实例对应一个数据集的轮廓。下面是我所做工作的伪代码: cmap_p = plt.get_cmap('Reds') norm_p = BoundaryNorm(levels, ncolors=cmap_p.N, clip=True) cmap_g = plt.get_cmap('Blues') norm_g = BoundaryNorm(

我有两个独立的数据集,这里是z_p和z_g,我想把两个tricontourf()实例放在同一个轴上,每个实例对应一个数据集的轮廓。下面是我所做工作的伪代码:

  cmap_p      = plt.get_cmap('Reds') 
  norm_p      = BoundaryNorm(levels, ncolors=cmap_p.N, clip=True)
  cmap_g      = plt.get_cmap('Blues')
  norm_g      = BoundaryNorm(levels, ncolors=cmap_g.N, clip=True)

  lev = range(lower_level, upper_level+1)
  obj_g = ax.tricontourf(x, y, z_g, cmap=cmap_g, norm=norm_g,
                 levels=lev, extent=[x0, y0, x1, y1], zorder=2)

  obj_p = ax.tricontourf(x, y, z_p, cmap=cmap_p, norm=norm_p,
                 levels=lev, extent=[x0, y0, x1, y1], zorder=3)
输出图附在下面。显然,只有对tricontourf()的第二次调用有效,因为图的左侧有一个红色的补丁。如果我注释掉获取obj_p的调用,那么我会在图的右侧得到一个蓝色补丁。但是,对tricontourf()的两个后续调用不能同时工作

如果有人能告诉我如何在同一轴线上显示两条等高线,我将不胜感激


您的第二个绘图用不透明的白色覆盖第一个绘图,这就是为什么您在不绘制第二个绘图时看到第一个绘图。如果要同时查看这两个,可以设置alpha关键字:

alpha=0.5

使绘图足够透明以使其透明。或者,如果您知道重叠区域的位置,并且只想将其屏蔽在第二个绘图之外,那么在SO有一个关于屏蔽对tricontourf的调用的问题的答案。

您的第二个绘图用不透明的白色覆盖第一个绘图,这就是为什么您在不打印第二个绘图时看到第一个绘图。如果要同时查看这两个,可以设置alpha关键字:

alpha=0.5

使绘图足够透明以使其透明。或者,如果您知道重叠区域的位置,并且只想将其从第二个图中屏蔽出来,那么关于屏蔽对tricontourf的调用的问题在SO有一个答案。

我不是肯定的,但我猜您希望“白色”空间是透明的,而实际上它们是不透明的。蓝色的那个可能在那里,你就是看不到它在白色的下面。@Ajean:非常正确;实际上,将
alpha=0.5
添加到我的每个
ax.tricontourf()
实例解决了这个问题。非常感谢你的话。我不是很肯定,但我猜你希望“白色”空间是透明的,而实际上它们是不透明的。蓝色的那个可能在那里,你就是看不到它在白色的下面。@Ajean:非常正确;实际上,将
alpha=0.5
添加到我的每个
ax.tricontourf()
实例解决了这个问题。非常感谢你的话。我已经试过了
alpha=0.5
,但是,两个补丁的颜色都变得不合适,这是我根本不想要的。因此,这又提出了另一个问题:是否可以叠加两个(甚至更多)ax.contourf()实例,但要确保最低
级别的补丁是透明的。这将允许我仍然保持
alpha=1.00
,并叠加多个
contour()
实例,确保其顶部覆盖的空白不覆盖底部覆盖的空白。我的轮廓有足够的空白。有什么建议吗?最好的。你看了我链接的问题的答案了吗?它为tricontourf(使部分输出透明)提供了精确的信息。如果你想改用contourf(实际上更简单),你也可以做同样的事情——使用NaNs使matplotlib忽略一些事情。谢谢。我已经试过了
alpha=0.5
,但是,两个补丁的颜色都变得不合适,这是我根本不想要的。因此,这又提出了另一个问题:是否可以叠加两个(甚至更多)ax.contourf()
实例,但要确保最低
级别的补丁是透明的。这将允许我仍然保持
alpha=1.00
,并叠加多个
contour()
实例,确保其顶部覆盖的空白不覆盖底部覆盖的空白。我的轮廓有足够的空白。有什么建议吗?最好的。你看了我链接的问题的答案了吗?它为tricontourf(使部分输出透明)提供了精确的信息。如果您想改用contourf(实际上更简单),您可以做同样的事情——使用NAN使matplotlib忽略一些事情。