質問

これは非常に具体的なinforgraphic challange altoughのfundemental質問を構築するにarchs単語と単語の間にmatplotlibを用い,carioまたはその他のpython libary.

与えられ、以下のデータ構造です。

できているかの確認を行います。は、7| 私apple、appleのロゴは、9| apple、appleのロゴは、お1| バイクから5

名前が表示され横方向の名前の関係がより大きいその他そが重archsの名をとります。10均archがある程度の厚みとして、5つの重み付きアーチがあります。

ひらから:類似のdiverstiy. http://similardiversity.net/

のchallange開始!

役に立ちましたか?

解決

あなたがやりたいだろうmatplotlibのに依存している少なくとも一つは、いくつかのライブラリが、あります。私は(www.networkx.lanl.gov)あなたのグラフ構造を構築するために、そしてあなたがプロットに関連するmatplotlibのメソッドを呼び出すために使用できるNetworkxをお勧めします。 Networkxとmatplotlibのは、一緒に非常によく働きます。

import networkx as NX
import matplotlib.pyplot as PLT
Gh = NX.Graph()
Gh.add_edge("You", "Bike", weight=1.0)
Gh.add_edge("Bike", "Apple", weight=0.9)
Gh.add_edge("Me", "Bike", weight=1.1)
all_nodes = Gh.nodes()
# to scale node size with degree:
scaled_node_size = lambda(node) : NX.degree(Gh, node) * 700
position = NX.spring_layout(Gh)    # just choose a layout scheme
NX.draw_networkx_nodes(Gh, position, node_size=map(scaled_node_size, all_nodes))
NX.draw_network_edges(Gh, position, Gh.edges(), width=1.0, alpha=1.0, edge_color="red")
# now for the Matplotlib part:
PLT.axis("off")
PLT.show()

あなたが見ることができるように、あなたは「エッジ」メソッド、私はノードのスケーリングのためにそれをやったとちょうど同じ方法のいずれかに「重み」パラメータを変化させる要因を適用することにより、エッジを拡張できます。

私も(そのバックエンドとしてgraphvizの使用して明らかに)pygraphvizをお勧めします。それはNetwworkx(同じリード開発者)と非常によく似ています。

他のヒント

matplotlib な右図書館が、ここでは、汎用グラフィック図書館があります。必要なものはいずれかのようなもの カイロ, 又は簡単になりきると、グラフィック能力のGUIツールキットなどのPyQt.別可能なアプローチはPyGameに優れた描画力です。

したい場合を例にこちらをご覧ください カイロのサンプル ページの最初のサンプル。あなただけのテキストの言葉を使用しアークコードの弧の幅や色をします。

困難や課題がある。ここで、

私は本当に表示されません。必要なのは、ほとんどすべてで可能で、テキストと半分の円を描くことができ、グラフィックスライブラリです。ベジェ曲線のための必要はありません。たとえば、あなたは、単に(そして、あなたも、任意のライブラリを必要としないとうまくWebページでこれを埋め込み、それをインタラクティブにするために、いくつかのJavaScriptを使用することができます)SVGファイルを作成することができます。

実際の描画は簡単である:円の中心は、2つの単語間の中間にあり、半径は、それらの間の距離の半分です。その後、他の量を反映するために、ストロークを調整することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top