私が取り組んでいる論文のいくつかの図をプロットするために matplotlib を使用しようとしています。2D numpy 配列に 2 つのデータ セットがあります。
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()
これにより、次のことが得られます。
そして、風景を横切って流れる川の特性を描写する 2 番目の ASCII ラスター。このデータは上記と同じ方法でプロットできますが、河川ネットワークに対応しない配列内の値には、-9999 のデータなし値が割り当てられます。目的は、データなしの値を透明に設定して、川の値が陰影起伏の上に重なるようにすることです。
これは川のデータです。理想的には、ここで 0 として表されるすべてのピクセルが完全に透明になります。
これについていくつかの調査を行ったところ、データを RGBA 配列に変換し、不要なセルのみを透明にするようにアルファ値を設定できるようです。ただし、リバー配列の値は浮動小数点数であり、変換できません (元の値は図の全体のポイントであるため) imshow
。 RGBA 形式を使用する場合、関数は符号なし整数のみを受け取ることができると思います。
この制限を回避する方法はありますか? 単純にピクセル値とアルファ値のタプルを作成し、そのようにプロットできることを望んでいましたが、これは不可能のようです。
またPIL
、データ値が透明ではない河川データの PNG ファイルを作成しようと試みましたが、これにより、ピクセル値が 0 ~ 255 に自動的にスケーリングされ、保存する必要がある値が失われます。
この問題について誰かが持っている洞察を歓迎します。