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

时间:2015-08-05 22:47:31

标签: 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(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()的后续两次调用不能同时工作。

如果有人告诉我如何在同一轴上显示两个轮廓,我将不胜感激?

Resulting figure. Only the red contours show on the left, and the blue contours on the right are missing

1 个答案:

答案 0 :(得分:0)

你的第二个情节是用不透明的白色遮盖第一个情节,这就是为什么当你没有绘制第二个情节时你会看到第一个情节。如果要同时查看两者,可以设置alpha关键字:

alpha=0.5

使地块足够透明以便透视。或者,如果您知道重叠区域在哪里并希望简单地将其掩盖在第二个图中,那么this有一个关于屏蔽调用tricontourf的问题的答案。