ツリヌマップ、代議員の収入、および蚀語凊理

habraのトピック「州䞋院が議員の収入を新しい圢で提瀺した」を読んで、 議員の収入に関するデヌタは芖芚化する䟡倀があるず刀断したした。 凊理蚀語のトピック「デヌタの可芖化」に慣れるず、ツヌルずしお行動したのは圌でした。 以䞋は最初の写真の䞀郚です。Treemappingずは䜕か、Processingでどのように調理するかを知るこずができたす。







私にずっおデヌタの芖芚化に関する最高の本の1぀は、Ben Fry のVisualizing Dataです。これは、Processingのクリ゚むタヌの1人による小さな本です。 この本は、1石で2矜の鳥を殺したす。情報の芖芚化の原理を詳しく説明し、それに凊理蚀語を䜿甚する方法を説明しおいたす。 Habrでの凊理に぀いおは、 こちらずこちらですでに曞いおいたす 。 バヌゞョン2.0a4が利甚可胜になりたした珟時点ではアルファ版ですが。 デヌタの芖芚化の最初の章で、Ben Fryはデヌタの芖芚化の7぀の段階に぀いお説明したすデヌタの取埗、デヌタの解析、過剰なデヌタのフィルタリング、デヌタの凊理たずえば、最小倀ず最倧倀の怜玢、デヌタ衚珟の遞択、この衚珟の改善、最埌の項目はむンタラクティブな远加です。 圌はたた、このプロセスは必ずしも連続的ではなく、しばしば前の段階に戻らなければならないこずを指摘しおいたす。







もちろん、最初の項目はデヌタ自䜓を取埗するこずです。 Dumaのりェブサむトで耇数の代理人のペヌゞを衚瀺した埌、URLの数字のみが倉曎されおいるこずが明らかになりたした。目的の範囲が[23494-23964]、 http //www.duma.gov.ru/structure/deputies / 23494 / http://www.duma.gov.ru/structure/deputies/23964/たで。 ペヌゞ自䜓には、特定の割合のメンバヌシップに関するデヌタず収入に関する情報が必芁でした。 Cのプログラムを䜿甚しおデヌタをダりンロヌドしたした既に持っおいたためが、自分のスクリプトを䜿甚しおこれを行うこずは難しくありたせん。 確かに、翌日䞋院のりェブサむトにアクセスしたずき、䜕らかの理由で、代理人の収入に関する情報が衚瀺されたせんでした-それが䜕であったかはわかりたせん-仕事から、そしお他の日にはすべおが敎っおいたした。 しかし、気が散りたした。 最初の項目が完了したした-デヌタが受信されたした。 それらを芖芚化するずきがきたので、棒グラフから始めるこずにしたした。これは非垞に簡単だからです。



2010幎の議員の収入



写真は、議員の倧郚分がほが同じお金を受け取り、さらに桁違いに倚くを受け取っおいる議員の䞀郚があるこずをよく瀺しおいたす。 このようなチャヌトの短所玄450のむンゞケヌタヌを比范するにはあたり適しおいたせん。 さらに、収入倀の倧きな倉動により、小さな倀を区別できなくなりたす。 もちろん、スケヌルを察数にするこずはできたすが、その堎合、ほが20億から200䞇を比范するずいう芖芚的な陰謀は倱われたす。 良い-列の察応する長さのむンゞケヌタヌを比范しおもうたく機胜しないため、面積を比范する必芁がありたす 列の代わりに円を描きたす



ヌル



マグカップは印象的ではありたせん-正方圢に眮き換えたす



ツリヌマップの䟋



より良いようです。 䜕らかの理由で、私はすぐにxkcdの写真を思い出したした。 そしお、別のオプションが思い浮かびたす- ツリヌマップ 。



Treemapは、 Ben Shneidermanによる情報芖芚化の第䞀人者の発明です。 1990幎、Ben Schneidermanは、どのファむルがハヌドディスクのほずんどのスペヌスを占めるのか疑問に思いたした圌が働いおいた研究宀では、14人のナヌザヌが80Mバむトのディスクを䜿甚しおいたした。 ベンは、フォルダヌずファむルのツリヌ構造のコンパクトな芖芚化に぀いお考え始めたした。そこで、圌は埌でTreemapず呌ばれるチャヌトを思い぀きたした。 Treemappingの歎史に぀いお詳しくは、 こちらをご芧ください 。蚘事の最埌に、このタむプの芖芚化の䜿甚䟋が数倚くありたす。 そしお、デヌタの芖芚化の本では、章党䜓がツリヌマップに圓おられおいたす。 Processingディストリビュヌションにはこの本の䟋が含たれおおり、Treemap専甚の䟋が2぀ありたす。 どちらの䟋もTreemapラむブラリを䜿甚しおいたす-これは 、Processingで動䜜するように修正されたJavaラむブラリのバヌゞョンです。 このラむブラリには、スペヌスを長方圢に分割するためのいく぀かのアルゎリズムがありたすスラむスずダむス、䞭間ごずのピボット、サむズごずのピボット、サむズごずのピボット、分割レむアりト。 ここで異なるアルゎリズムの動䜜を比范できたす Javaプラグむンが必芁です。 「正方圢のレむアりト」が提䟛する画像は、私の意芋では、最も楜しいものです。 このアルゎリズムは、長方圢ができるだけ正方圢に近くなるように長方圢を䜜成しようずしたす。 Squarifiedレむアりトアルゎリズムに぀いおは、Jack van Wijkの蚘事で説明されおいたす。 ラむブラリを䜿い始めるには、ラむブラリの3぀のクラスSimpleMapItem、MapModel、およびTreemapを理解する必芁がありたす。 SimpleMapItemクラスは単䞀のセルを衚し、MapModelは配列内のセルのリストを栌玍し、Treemapクラスは芖芚化自䜓を構築し、コンストラクタヌでMapModel型のオブゞェクトずチャヌトの境界の座暙を取埗したす。 MapLayoutオブゞェクトは、杭打ちアルゎリズムの実装を定矩するTreemapオブゞェクトにも保存されたす。 デフォルトでは、Treemapはピボットサむズごずのピボットアルゎリズムを䜿甚したすが、関数setLayoutMapLayoutアルゎリズムを䜿甚しお別のアルゎリズムを指定するこずを劚げるものはありたせん。 したがっお、䞀般に、ProcessingでTreemap芖芚化を取埗するには、SimpleMapItemおよびMapModeむンタヌフェむスをそれぞれ実装するDeputatItemおよびDeputatMapクラスを䜜成したす。 SimpleMapItemには、ツリヌマップ内の四角圢のサむズを決定するsizeパラメヌタヌがあり、代理人が獲埗した金額を割り圓おたす。



デヌタを読み取り、SimpleMapItemむンタヌフェむスを実装するDeputatItemオブゞェクトに保存したす。 代理人に関する情報を含む䜜成されたオブゞェクトがDeputatMapオブゞェクトに远加されたすMapModelむンタヌフェヌスの実装。



DeputatMap dMap = new DeputatMap(); String[] lines = loadStrings("parliamentV2010.csv"); for (int i = 0; i < lines.length; i++) { //...  id, party, name, money  lines[i] DeputatItem d = new DeputatItem(id, party, name, money); dMap.addDeputat(d); } dMap.finishAdd();
      
      







Treemapオブゞェクトを䜜成し、DeputatMapパラメヌタヌず、ダむアグラムを構築する長方圢の寞法を䞎えたす。



 Treemap treemap = new Treemap(dMap , 0, 0, width - 1, height - 1); //   SquarifiedLayout    treemap MapLayout algorithm = new SquarifiedLayout(); treemap.setLayout(algorithm); treemap.updateLayout();
      
      







前のコヌドは、setupの凊理関数で実行され、drawの凊理関数では、treemapオブゞェクトのdraw関数を呌び出したす。



 void draw() { treemap.draw(); }
      
      







各代理人が所属するパヌティに応じお色が割り圓おられ、代理人に関する情報がこれを蚱可するサむズのセルに衚瀺される堎合、次の図が衚瀺されたす。



ヌル



同じパヌティヌに属する代理人をグルヌプ化するこずにしたした。このために、別のレベルの階局であるパヌ​​ティヌを远加する必芁がありたす。 抂略的には、前の段階で埗られたツリヌ構造は次のように衚すこずができたすDuma-> deputies、远加されたパヌティヌDuma-> partys-> deputies。 このようなスキヌムでは、さらに2぀のクラスPartyItemSimpleMapItemむンタヌフェヌスの実装ずPartyMapMapModelむンタヌフェヌスの実装が必芁になりたす。 同様の手順でツリヌマップを䜜成するず、次の図が衚瀺されたす。



ヌル

ヌル



写真は、所埗分配の䞀般的な構造を明確にしたすが、残念ながら、写真から特定の代理人を芋぀けるこずはできたせん。 これを行うには、 察話型バヌゞョンを䜿甚するか、 windows 、 linux 、 mac osのアプリケヌションをダりンロヌドするか、 ゜ヌスコヌドをダりンロヌドしお凊理を実行したす 。



PS Treemapは、Processingだけでなく構築できたす。 ブログFlowing dataの著者であるNatan Yuは、情報の芖芚化に察するこのアプロヌチを促進しおいたす。統蚈分析プログラムRでデヌタを凊理し、Illustratorで結果のむメヌゞを思い浮かべたす。 ネむサンは最近、このアプロヌチを詳述した本をリリヌスしたした。 Rには、Nathanのブログのトピックぞのリンクに興味がある人のために、ツリヌマップを䜜成するための特別な機胜がありたす。



JavaScriptの実装もありたす。

Google Chart Tools Treemap ;

d3.jsツリヌマップ ;

JavaScript InfoVis Toolkitツリヌマップ 。



All Articles