この問題を解決するにはいくつかの問題がありますが、データフレームがあり、そこからグラフを作成する必要があります。相関行列を使ってグラフを作成する
A =pd.DataFrame([(1, 0.3, 0.4, 0.7),
(0.3, 1, 0.9, 0.2),
(0.4, 0.9, 1, 0.1),
(0.7, 0.2, 0.1, 1)
], columns=['a', 'b', 'c', 'd'], index=['a', 'b', 'c', 'd'])
np.fill_diagonal(A.values, 0)
>>> A
a b c d
a 0.0 0.3 0.4 0.7
b 0.3 0.0 0.9 0.2
c 0.4 0.9 0.0 0.1
d 0.7 0.2 0.1 0.0
私は、このデータでグラフを作成したい:
マイデータフレームは次のようになります。 a、b、c、dの4つのノードがあり、ノード間の距離は、a-b = 0.3のノード間の距離などの行列によって与えられます(これは相関行列の値が複製されるためです)。
ありがとうございました!
私は(それは最高のアイデアであるかどうかはわからない)辞書としてエッジの値を格納するために、この関数を作成しました:
def edges(matr):
edge = {}
for m in matr.columns:
for n in matr.index:
a,b = m,n
if a!= b:
x = matr.at[m, n]
edge[m,n] = float("{0:.4f}".format(x))
return edge
edges(A)
>>> edges(A)
{('a', 'b'): 0.3,
('a', 'c'): 0.4,
('a', 'd'): 0.7,
('b', 'a'): 0.3,
('b', 'c'): 0.9,
('b', 'd'): 0.2,
('c', 'a'): 0.4,
('c', 'b'): 0.9,
('c', 'd'): 0.1,
('d', 'a'): 0.7,
('d', 'b'): 0.2,
('d', 'c'): 0.1}
しかし、ABは、いくつかの縁BAと同じであるため、繰り返された値を取り除く方法はわかりません。 そしてそのデータから私はグラフ/画像を作成する必要があります。
ありがとうございました!
おそらく疑問な質問ですが、どのようなグラフですか?特定のデータ構造ですか?絵? – doctorlove
エッジと距離のリスト、およびグラフ/画像を作成します。ありがとう! – Mee