2

少し厄介な問題があります。float 値で満たされた numpy 配列があります。背景は、配列の値が正方形グリッドの水深を表すことです。

345.34 888.78 999.35
300.00  98.00  88.45
440.89 423.56  11.68

この配列を画像として変換/保存したい。これにより、値の範囲は 1 つの色で表されます。

"dark blue" "midnight blue" "midnight blue"       #00008B #191970 #191970
"dark blue" "medium blue"   "medium blue"    or   #00008B #0000CD #0000CD 
"navy"      "navy"          "blue"                #000080 #000080 #0000FF

配列を ASCII ファイルとして保存し、ArcGIS でラスター マップに変換することでこの問題を回避しましたが、手動で行うには配列/マップが多すぎるため、ArcGIS は避けたいと考えています。

私の試みは、マスクを介して値の範囲を整数に置き換えることでした。次に、置換された float 値を文字列に変換し、文字列を RGB カラー コードに置き換えます。最後に Image.fromarray を使用して画像を作成します。結果はめちゃくちゃです。浸水マップとは異なります。

誰かが実行可能な方法を知っていることを願っています。

4

1 に答える 1

3

データを に渡すだけで実現できますmatplotlib.pyplot.imshow()。カラー スケールは、選択したカラー マップによって調整できます。データがテキスト ファイルに保存されていると仮定します。

import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt

data = np.loadtxt('data.txt')
plt.imshow(data, cmap=cm.Blues)
plt.show()
于 2014-09-21T10:00:20.717 に答える