我正在尝试使用matplotlib为我正在撰写的一篇论文绘制一些图形。我有两组二维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的无数据值。其目的是将no数据值设置为透明,以便河流值覆盖在山体阴影上。
这是河流数据,理想情况下,这里表示为0的每个像素都是完全透明的。
在这方面做了一些研究之后,我似乎可以将我的数据转换为RGBA数组,并将alpha值设置为只使不需要的单元格透明。但是,河数组中的值是浮点数,不能转换(因为原始值是图中的全部内容),我相信如果使用RGBA格式,imshow
函数只能接受无符号整数。
有什么方法可以绕过这个限制吗?我曾希望我可以简单地创建一个包含像素值和alpha值的元组,并像这样绘制它们,但这似乎不太可能。
我还尝试过使用PIL
创建河流数据的PNG文件,但这似乎会自动将像素值缩放到0-255,从而丢失我需要保留的值。
我欢迎任何人在这个问题上有任何见解。
https://stackoverflow.com/questions/17170229
复制相似问题