2016-11-23 204 views
0

删除等高线我使用contourf绘制一些数据,但我有麻烦,当涉及到设置透明度。我希望能够设置填充和线条的透明度,但似乎无法做到这一点。改变的透明度/在Matplotlib

的我的代码的简化版本如下:

array = np.random.rand(100,100) 

#lonit and latit are latitude and longitude grids from an input dataset 
LONG, LAT = np.meshgrid(lonit, latit) 
longitude,latitude = m(LONG, LAT) 

pp = m.contourf(longitude, latitude, imagelist[0], 50, 
      cmap='YlOrRd', extend="min", alpha = .5) 

plt.show() 

此输出:enter image description here

和你可以看到,尽管阿尔法被设置为0.5,该轮廓线的透明度保持在1.有没有人知道如何修正这个问题,使它们与填充物具有相同的透明度?或者,完全删除轮廓线可能会工作,但我喜欢contourf方法,因为它使视觉化变得更容易(除了前面提到的线条)!

我的目标是在底下显示底图,因此想要移除/使它们看不见。

在此先感谢!

UPDATE:MORE图表来显示问题

阿尔法设定为1.0: enter image description here

阿尔法设定为0.1: enter image description here

阿尔法设置为0.6和抗锯齿设置为True:

pp = m.contourf(longitude, latitude, imagelist[0], 50, 
cmap='YlOrRd', extend="min", alpha = 0.6, antialiased = True) 

enter image description here

这提高了线,但仍然没有摆脱他们。

+0

你肯定'alpha'参数不会改变双方的透明度? – Chr

+0

尝试降低阿​​尔法更多? – Inconnu

+0

你好,我已经更新了更多的图像显示不同的alpha水平的问题! - Alpha = 0会产生一个完全不可见的情节,这意味着它的透明度正在改变。也许我需要完全删除轮廓线,所以我会将此选项添加到原始问题。 –

回答

0

使用antialiased = True时仍然看到的线条实际上不是线条,而是闪烁的背景,因为填充的轮廓彼此不接触。

一个非常难看的补丁可能是绘制两次相同但略有不同的级别。

pp1 = m.contourf(longitude, latitude, imagelist[0], 50, cmap='YlOrRd', extend="min", alpha = 0.3, antialiased = True) 
pp2 = m.contourf(longitude, latitude, imagelist[0], 55, cmap='YlOrRd', extend="min", alpha = 0.3, antialiased = True) 

请注意,您还必须将alpha值减半以获得相同的透明度。 你仍然会看到线条,但不像以前那么强壮。