【问题标题】:Changing Transparency of/Remove Contour Lines in Matplotlib在 Matplotlib 中更改/删除等高线的透明度
【发布时间】:2016-11-23 15:05:42
【问题描述】:

我正在使用 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) 

这改善了线条,但仍未摆脱它们。

【问题讨论】:

  • 你确定alpha 参数不会改变两者的透明度吗?
  • 尝试进一步降低 alpha 值?
  • 大家好,我已经更新了问题,添加了更多显示不同 alpha 级别的图像! - Alpha = 0 产生一个完全不可见的图,这意味着它的透明度正在被改变。也许我需要完全删除轮廓线,所以我会将此选项添加到原始问题中。
  • 我以前也遇到过类似的问题;有时调用contourf 两次似乎可以解决问题(我知道,这很难看......)。

标签: python matplotlib contourf


【解决方案1】:

您在使用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 值分成两半才能获得相同的透明度。 您仍然会看到线条,但没有以前那么强烈了。

【讨论】:

    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2023-03-18
    • 2013-03-04
    • 2018-01-21
    • 2017-07-12
    • 2015-01-11
    相关资源
    最近更新 更多