質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3795閲覧

networkxのノードの固定方法がわからず苦戦しています。。

退会済みユーザー

退会済みユーザー

総合スコア0

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/10 10:03

編集2020/02/11 10:47

異なる2つのテキストファイルを使ってnetworkxでグラフを作る際に、2つのファイルで共通するデータ(ノード)の位置を固定してグラフを表示したいのですが、何かいい方法はありますでしょうか?
どなたかご教授よろしくお願いいたします。。
例えば、seedでノードごとに固定する方法などありましたら教えて下さい。。

【データ1:test_1.txt】

A B E C A C E D A E B D C E A B

【データ2:test_2.txt】

A Z W D Y A A X W X Y Z A D

【データ1コード】

pythoon

1g = Graph() 2g = nx.read_edgelist('test_1.txt', nodetype=str) 3pos = nx.spring_layout(g, k=1, seed=2) 4 5plt.figure(figsize=(10, 10)) 6pr = nx.pagerank(g) 7nx.draw_networkx_edges(g, pos, edge_color='khaki', alpha=1) 8#node_sizeにPageRankの値を組み込む 9nx.draw_networkx_nodes(g, pos, node_color=list(pr.values()), cmap=plt.cm.Greens, 10 alpha=0.5, node_size=[20000*v for v in pr.values()], font_family='IPAexGothic') 11nx.draw_networkx_labels(g, pos, font_size=10, font_family='IPAexGothic', dpi=2000) 12plt.axis('off') 13 14plt.savefig("test_1.svg", dpi=2000)

【データ2:コード】

python

1g = Graph() 2g = nx.read_edgelist('test_2.txt', nodetype=str) 3pos = nx.spring_layout(g, k=1, seed=2) 4 5plt.figure(figsize=(10, 10)) 6pr = nx.pagerank(g) 7nx.draw_networkx_edges(g, pos, edge_color='khaki', alpha=1) 8#node_sizeにPageRankの値を組み込む 9nx.draw_networkx_nodes(g, pos, node_color=list(pr.values()), cmap=plt.cm.Greens, 10 alpha=0.5, node_size=[20000*v for v in pr.values()], font_family='IPAexGothic') 11nx.draw_networkx_labels(g, pos, font_size=10, font_family='IPAexGothic', dpi=2000) 12plt.axis('off') 13 14plt.savefig("test_2.svg", dpi=2000)

【データ1出力画像】
イメージ説明

【データ2出力画像】
イメージ説明

↑AとDのノードの位置がバラバラになってしまっている。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

spring_layoutを呼び出す際にposおよびfixed引数を適切に指定することで、任意のノードの位置を固定できます。

たとえば以下のように指定することが可能です。

python

1pos = nx.spring_layout(g, k=1, seed=2, pos={"A":[0, 0], "B":[1, 0]}, fixed=["A", "B"])

ただし、これをやるとグラフの形状が歪むようです。本来異なる形状になるべきグラフの間で整合を取るのはなかなか困難なようにも思いますので、個人的にはそこまでしない方が良いようにも思います。

spring_layout — NetworkX 1.9 documentation

投稿2020/02/13 15:04

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/14 03:15

ご回答ありがとうございます! 確かにグラフが歪みますね、、要素の繋がりを網羅するためには仕方ないのかもしれませんが、、 しかし一つの引き出しとして知識が増えました! ありがとうございますm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問