1

我正在使用 contourf 绘制一些数据,但在设置透明度时遇到了麻烦。我希望能够设置填充和线条的透明度,但似乎无法做到这一点。

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

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

这输出:在此处输入图像描述

正如您所看到的,尽管 alpha 设置为 0.5,但轮廓线的透明度仍然为 1。有谁知道如何修改它以使它们与填充具有相同的透明度?或者,完全删除轮廓线可能会起作用,但我喜欢 contourf 方法,因为它使可视化更容易(除了上述线条!)

我的目标是在下面显示一个底图,这样线条会增加我的情节的复杂性,因此想要删除/使它们不可见。

提前致谢!

更新:更多图表显示问题

Alpha 设置为 1.0: 在此处输入图像描述

Alpha 设置为 0.1: 在此处输入图像描述

Alpha 设置为 0.6,AntiAliased 设置为 True:

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

在此处输入图像描述

这改善了线条,但仍然没有摆脱它们。

4

1 回答 1

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 值分成两半以获得相同的透明度。你仍然会看到线条,但不像以前那么强烈。

于 2017-03-04T23:14:15.437 回答