ボロノイツリーマップを作成するにはどうすればよいですか? [閉まっている]
-
10-07-2019 - |
質問
次のような統計データのボロノイツリーマップを作成したい ニュースグラフィー
Perl、PHP、Ruby、またはPythonでそれを行う方法を知っていますか?
解決
Python用の素敵なデモとグラフィックス: http://home.scarlet.be/zoetrope/voronoi / (アーカイブされたコピーウェイバック)
他のヒント
このページが見つかりました。 Benjamin DittesによるSteven FortuneのアルゴリズムのC#バージョンをJavascriptに変換した後、Javascript / canvasを使用してVoronoiデモアプレットに取り組んできました(Code Projectで入手可能、「FortuneのVoronoiアルゴリズムをC#で実装」を参照)。 FortuneのVoronoiアルゴリズムをJavascriptに含むページを次に示します。 http://www.raymondhill.net/voronoi/voronoi.php これは最初のイテレーションです。Javascriptにより適したものになるようにさらに適応させる予定です。これがお役に立てば幸いです。
まず、線は奇妙ではありません:これは通常のボロノイ分割ではなく、面積加重ボロノイ(AWT)分割、おそらくは重心ボロノイ分割(CVT)であるという事実の結果です。つまり、大幅に異なる領域(データの属性を反映する)を持つボロノイ領域(ポリゴン)を使用するには、AWT(ポリゴンの適切なアスペクト比を保持するためにCVTとして実装することが望ましい)が必要です。通常のボロノイアルゴリズム(上記の一部の人によって提案された)は、あなたを助けることができません。 AWTの反復的な更新手順による計算の複雑さが非常に高いため、特にスクリプト言語ではなく、これに対する直接的な解決策はおそらくないでしょう。 「Voronoi Treemaps」に関する作業を調べる必要があります。および「動的ボロノイツリーマップ」バルザー他による。およびスッド等。アルゴリズムのアイデアを得て、それを自分で実装します(必要なものはすべて彼らの論文にあります)。
他のPythonの答えは、ラスターのみのソリューションを指しているようです。私はこの問題を(Pythonで)解決することにも興味があり、次のスクリプトが有用な出発点を形成できると思います。
James Tauberは、JavaScriptと Fortuneのアルゴリズムを使用して、 canvas
要素のボロノイ図: Voronoi Canvasチュートリアル
まだ完全ではありませんが(彼は4/3のパート3にいます)、それを完了するのに十分だと思います。
Macrofocus TreeMap の最新バージョン(2.0)には、オプションとしてVoronoiアルゴリズムがあります。