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

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

新規登録して質問してみよう
ただいま回答率
85.37%
MacOS(OSX)

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

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

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

Q&A

1回答

1842閲覧

Newtworkxのcircular_layoutの引数について

退会済みユーザー

退会済みユーザー

総合スコア0

MacOS(OSX)

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

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

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

0グッド

0クリップ

投稿2020/02/14 06:35

Pythonで以下のコードを書いて【画像1】のようなネットワーク画像を作成しました。
【画像2】【画像3】はcytoscape上で編集したものですが、Python上で【画像2】を【画像3】のように指定したノードを中心にする方法はありますか?

調べたところ、circular_layoutの引数に'center='を入れると中心に表示したいノードを指定できるようなのですが、上手くいきません。。
どなたかご教授よろしくお願いいたしますm(_ _)m

python

1from graphviz import Graph 2import networkx as nx 3import japanize_matplotlib 4%matplotlib inline 5import graphviz 6 7 8g = Graph() 9g = nx.read_edgelist('test.txt', nodetype=str) 10 11pr = nx.pagerank(g) 12pos = nx.circular_layout(g) 13 14plt.figure(figsize=(15, 15)) 15nx.draw_networkx_edges(g, pos, edge_color='y') 16nx.draw_networkx_nodes(g, pos, node_color='r', alpha=0.5, 17 font_family='IPAexGothic', node_size=[60000*v for v in ok.values()]) 18nx.draw_networkx_labels(g,pos,font_size=10, font_family='IPAexGothic') 19plt.axis('off')

【画像1】
イメージ説明

【画像2】
イメージ説明
【画像3】
イメージ説明

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

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

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

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

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

guest

回答1

0

circular_layout() ではなく shell_layout()を使うのはどうでしょうか。

https://networkx.github.io/documentation/stable/reference/generated/networkx.drawing.layout.shell_layout.html

Python

1import networkx as nx 2import matplotlib.pyplot as plt 3 4g = nx.Graph() 5g.add_edges_from([['A','B'], 6 ['A','C'], 7 ['A','E'], 8 ['A','G'], 9 ['A','J'], 10 ['B','H'], 11 ['B','E'], 12 ['B','D'], 13 ['C','E'], 14 ['C','J'], 15 ['D','I'], 16 ['D','E'], 17 ['D','F'], 18 ['D','K'], 19 ['E','K'], 20 ['E','I'], 21 ['F','G'], 22 ['F','H'], 23 ['F','I'], 24 ['G','J'], 25 ['G','J'], 26 ['H','K']]) 27pos = nx.shell_layout(g, [['E', 'G'], # 内側に配置するノード 28 ['A', 'B', 'C','D','F','H','I','J','K']]) 29 30plt.figure() 31nx.draw_networkx_edges(g, pos, edge_color='y') 32nx.draw_networkx_nodes(g, pos, node_color='r') 33nx.draw_networkx_labels(g, pos) 34plt.axis('off') 35plt.axes().set_aspect('equal') 36plt.show()

イメージ説明

投稿2020/02/14 09:34

magichan

総合スコア15898

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

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

退会済みユーザー

退会済みユーザー

2020/02/15 10:17

ご回答ありがとうございます!理想の形に近づきました! ただ、実際に扱うテキストファイルの要素はA〜K以上の膨大な数があります。 pos = nx.shell_layout(g, [['E', 'G'], # 内側に配置するノード    ['A', 'B', 'C','D','F','H','I','J','K']]) の部分は全要素を書かなければならないでしょうか?
magichan

2020/02/17 04:23 編集

遅くなりました 全部ノードと内側のノードから外側のノードを差集合で求めるとよいのではないでしょうか nodes = set(g.nodes()) inner_nodes = {'E', 'G'} outer_nodes = nodes - inner_nodes pos = nx.shell_layout(g, [inner_nodes, outer_nodes])
退会済みユーザー

退会済みユーザー

2020/02/17 09:09

めちゃくちゃ助かりました!!! いつもありがとうございますm(_ _)m またよろしくお願いいたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問