前提
相関係数の高い変数同士を結んで可視化
その各エッジに相関係数を表示させたい
実現したいこと
相関係数の高い変数同士を結んで可視化したネットワーク図のエッジに相関係数を表示させたい
発生している問題・エラーメッセージ
edgeにlabelを与えているのに表示されていない
該当のソースコード
Python
1def graph(test): 2 df = pd.read_csv(test+".csv", sep=',') 3 df_corr = df.corr() 4 threshold = 0.4 5 mask_df = df_corr.mask(np.triu(np.ones(df_corr.shape)).astype(bool), None) # 「右上の三角行列」にマスクをして、Noneに置き換える 6 7 # edges data frame 8 edges = mask_df.stack().reset_index().rename(columns={"level_0":"source", "level_1":"target", 0:"weight"}) 9 edges['label'] = edges['weight'].apply(lambda x: np.round(x,2) if abs(x) > threshold else '') 10 11 #しきい値以上の接続に限定 12 edges2 = edges[edges.label != ''] 13 14 # networkxからpyvisに変換 15 G = nx.from_pandas_edgelist(edges, edge_attr=True) 16 nt = Network(height=f'1000px', width=f'1000px', bgcolor="#FFFFFF", font_color="black", notebook=True, directed=False) # heading='test graph', 17 nt.from_nx(G) 18 19 # グラフ構造 20 nt.repulsion(node_distance=300) #default 300 21 22 nt.show_buttons(filter_=['physics','nodes']) 23 24 nt.show(test+".html") 25 # display(HTML(test+".html"))
test.csv
1objective,column1,column2,column3 210,5,6,7 39,6,7,8 48,6,6,6
結果
ここに加えて、各エッジに相関係数を表示させたい
試したこと
edges中身を表示させると、labelの値は反映されていたが、HTML上での表示はされていない
ネットワーク図の描画プログラムは初めてなので細かい部分は理解が足りていない可能性があります
補足情報(FW/ツールのバージョンなど)
Windows11
VSCodeでipynbファイルに記述して実行しています
回答1件
あなたの回答
tips
プレビュー