Matplotlib を使用してカートグラムを描画しますか?
-
26-09-2019 - |
質問
誰かが知らない場合に備えて:あ カートグラム は、国/地域に依存する数値プロパティがそれぞれの地域を拡大縮小して、そのプロパティの密度が(ほぼ)一定になるようにするマップのタイプです。例としては、
から ワールドマッパー.org. 。この例では、国は人口に応じてスケールされ、人口密度はほぼ一定になります。
言うまでもなく、これは本当に素晴らしいです。このような地図を描画するための Matplotlib ベースのライブラリを知っている人はいますか?worldmapper.org で使用されている方法は (1) で説明されているため、これをまだ誰も実装していないのは驚くべきことですが...
また、たとえ Matplotlib 用に作られていないとしても、他のカートグラム ライブラリについても知りたいと思っています。
(1) マイケル T.ガストナーと M.E.J.Newman、密度平等化マップを生成するための拡散ベースの方法、Proc。ナット。アカド。科学。米国、101、7499-7504 (2004)。で入手可能 arXiv.
解決
こののは、ありますし、別のアルゴリズム(およびそれのいえESRIサイト上で、それは)のArcGISを必要としません。もちろん、あなたが統計地図を持っていたら、あなたはmatplotlibの中でそれをプロットすることができます。
他のヒント
ここ D3 を使用してカートグラムを作成するための Javascript プラグインです。領域のサイズが正確であることをあまり気にしない場合、これは優れたシンプルなソリューションです。精度が重要な場合は、より正確な結果を得るためにアルゴリズムのパラメーターをより自由に操作できる他のオプションが利用可能です。
私が知っている 2 つの優れたスタンドアロン プログラムを以下に示します。
スケープトードはとても使いやすいです。シェープファイルを与え、スケーリングに使用する属性を指定し、いくつかの精度パラメータを設定するだけです。疑問がある場合は、 この郵便受け プロセスを説明します。
Carto3F はより複雑で、より高い精度を可能にしますが、理解するのが少し難しく、多くのパラメーター設定があり、それらを説明するドキュメントがあまりありません。
もあります。 QGIS カートグラム プラグイン, 、Pythonで書かれています。ただし、私はそれを機能させることができていないので、それについてコメントすることはできません。
要するに、いいえ。しかし、ニューマンは、彼とガストナーのメソッドの優れた小さな実装を持っています。 彼のウェブサイトで. 。インストールは簡単で、コマンドラインから実行できます。このソフトウェアを使用して私にとってうまくいったワークフローの例を次に示します。
- ある領域にわたる密度推定のグリッドを計算します。Pythonで。それを数値の行列として保存します。
- を実行します。
cart
コマンド ラインからの入力として、または Python のサブプロセスとして密度行列を使用してプログラムします。 - プログラムは、各グリッド点の新しい座標のリストを返します。
- シェープファイルのポイントをパイプします。
interp
プログラムを新しいシェープファイルにコピーして、変換されたマップを取得します。
メインページにはわかりやすい説明があります。
geoplot.cartogram の機能で Geoplot:地理空間データの視覚化 - geoplot 0.2.0 の
は、それがハイレベルのPython地理空間プロットライブラリ、およびcartopyとmatplotlibのに拡張したものであると言います。