我正在尝试使用 matplotlib 为我正在研究的论文绘制一些数字。我在 2D numpy 数组中有两组数据: 一个 ascii 山体阴影栅格,我可以很高兴地使用它来绘制和调整:
import matplotlib.pyplot as pp
import numpy as np
hillshade = 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 值以仅使不需要的单元格透明。但是,河流数组中的值是浮点数,无法转换(因为原始值是图中的全部点),我相信imshow
如果使用 RGBA 格式,该函数只能采用无符号整数。
有没有办法绕过这个限制?我曾希望我可以简单地创建一个带有像素值和 alpha 值的元组并像那样绘制它们,但这似乎是不可能的。
我还PIL
尝试创建一个没有数据值透明的河流数据的 PNG 文件,但这似乎会自动将像素值缩放到 0-255,从而丢失我需要保留的值。
我欢迎任何人对这个问题有任何见解。