5

各州の番号を含む州レベルのデータのリストがあります。例:

AL  10.5
AK  45.6
AZ  23.4
AR  15.0
...

そして、私はそれを加重マップにしたいのですが、数字が最も高い場所が最も暗く、ここで最も明るい場所が最も低くなっています。そのような画像を生成できるソフトウェア、またはJavaまたはPythonライブラリはありますか?

4

1 に答える 1

7

自分で作成したい場合、必要なのは、優れたマップ、このマップ内の各州の位置のセット、および塗りつぶしだけです。

マップhttp://www.clker.com/cliparts/S/r/a/w/L/0/black-and-white-us-map-hi.pngを使用すると、次のようになります。

ここに画像の説明を入力してください

上記のマップを作成するためのコードは、

import sys
from PIL import Image


def floodfill(img, seed, color):
    im = img.load()
    work = [seed]
    start_color = im[seed]
    while work:
        x, y = work.pop()
        im[x, y] = color
        for dx, dy in ((-1,0), (1,0), (0,-1), (0,1)):
            nx, ny = x + dx, y + dy
            if im[nx, ny] == start_color:
                work.append((nx, ny))


USA_MAP = Image.open(sys.argv[1]).convert('1')
POINT_STATE = {'AL': (420, 260), 'AZ': (110, 240), 'AR': (350, 250)}

painted_map = USA_MAP.convert('L')
data = {'AL': 10.5, 'AZ': 23.4, 'AR': 15.0}
# Normalize data based on the minimum weight being 0+eps and maximum 30.
for k, v in data.items():
    v = v/30.
    color = int(round(255 * v))
    floodfill(painted_map, POINT_STATE[k], 255 - color)

painted_map.save(sys.argv[2])
于 2013-02-01T00:25:45.560 に答える