アーチ型の関係Pythonでしょう。
-
16-09-2019 - |
質問
これは非常に具体的な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(同じリード開発者)と非常によく似ています。
他のヒント
私は本当に表示されません。必要なのは、ほとんどすべてで可能で、テキストと半分の円を描くことができ、グラフィックスライブラリです。ベジェ曲線のための必要はありません。たとえば、あなたは、単に(そして、あなたも、任意のライブラリを必要としないとうまくWebページでこれを埋め込み、それをインタラクティブにするために、いくつかのJavaScriptを使用することができます)SVGファイルを作成することができます。
実際の描画は簡単である:円の中心は、2つの単語間の中間にあり、半径は、それらの間の距離の半分です。その後、他の量を反映するために、ストロークを調整することができます。