为了账号安全,请及时绑定邮箱和手机立即绑定

在Matplotlib中基于像素值设置透明度

在Matplotlib中基于像素值设置透明度

慕桂英3389331 2021-03-28 12:02:22
我正在尝试使用matplotlib为正在研究的论文绘制一些数字。我有2D numpy数组中的两组数据:一个ascii hillshade栅格,我可以使用以下方式高兴地绘制和调整:import matplotlib.pyplot as ppimport numpy as nphillshade = np.genfromtxt('hs.asc', delimiter=' ', skip_header=6)[:,:-1]pp.imshow(hillshade, vmin=0, vmax=255)pp.gray()pp.show()这使:有第二个ascii栅格,描绘了流经景观的河流的属性。可以按照与上述相同的方式来绘制此数据,但是将不对应于河流网络的数组中的值分配为-9999的无数据值。目的是将无数据值设置为透明,以便河流值覆盖山体阴影。这是河流数据,理想情况下,此处表示为0的每个像素都是完全透明的。在对此进行了一些研究之后,似乎我可以将我的数据转换为RGBA数组并设置alpha值以仅使不需要的单元格透明。但是,river数组中的值是浮点数,无法进行转换(因为原始值是图的整个点),并且我相信imshow如果使用RGBA格式,该函数只能采用无符号整数。有什么办法可以解决这个限制?我曾希望我可以简单地用像素值和alpha值创建一个元组,然后像这样绘制它们,但这似乎是不可能的。我也PIL尝试过创建一个没有数据值透明的河流数据的PNG文件,但是这似乎会自动将像素值缩放到0-255,从而丢失我需要保留的值。我欢迎任何人对这个问题有任何见识。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 308 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信