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

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

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

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

最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

Python

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

Q&A

解決済

2回答

3672閲覧

networkxのノードの配置について

退会済みユーザー

退会済みユーザー

総合スコア0

MacOS(OSX)

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

最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

Python

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

0グッド

0クリップ

投稿2020/02/04 13:11

編集2020/02/05 12:33

複数のイベントで行なわれた会社のつながりをnetworkxで可視化しました。
作成するたびにノードがランダムに配置されてしまうのですが、変遷をみたいのでノードの位置を固定したいです。
ノードを指定した位置に配置する方法はありますでしょうか?
どなたかご教授よろしくお願いいたしますm(__)m

python

1g = Graph() 2g = nx.read_edgelist('company.txt', nodetype=str) 3pos = nx.spring_layout(g, k=0.7) 4 5plt.figure(figsize=(15,15)) 6pr = nx.pagerank(g) 7nx.draw_networkx_edges(g, pos, edge_color='goldenrod', alpha=0.5) 8#node_sizeにPageRankの値を組み込む 9nx.draw_networkx_nodes(g, pos, node_color=list(pr.values()), cmap=plt.cm.Oranges,alpha=1, node_size=[10000*v for v in pr.values()], font_family='IPAexGothic') 10nx.draw_networkx_labels(g, pos, font_size=30, font_family='IPAexGothic', dpi=2000) 11plt.axis('off') 12plt.title('関連会社', fontsize=20) 13plt.savefig("company.png")

イメージ説明

イメージ説明

イメージ説明

イメージ説明

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

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

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

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

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

guest

回答2

0

networkx.drawing.layout.spring_layouseedに固定値を指定すればよいようです。

Python

1import networkx as nx 2from networkx import Graph 3import matplotlib.pyplot as plt 4 5g = Graph() 6g = nx.read_edgelist('company.txt', nodetype=str) 7pos = nx.spring_layout(g, k=0.7, seed=110) # seedを指定 8 9plt.figure(figsize=(15,15)) 10pr = nx.pagerank(g) 11nx.draw_networkx_edges(g, pos, edge_color='goldenrod', alpha=0.5) 12#node_sizeにPageRankの値を組み込む 13nx.draw_networkx_nodes(g, pos, node_color=list(pr.values()), cmap=plt.cm.Oranges,alpha=1, node_size=[10000*v for v in pr.values()], font_family='IPAexGothic') 14nx.draw_networkx_labels(g, pos, font_size=30, font_family='IPAexGothic', dpi=2000) 15plt.axis('off') 16plt.title('関連会社', fontsize=20) 17plt.savefig("company.png") 18plt.show()

イメージ説明

投稿2020/02/04 13:36

can110

総合スコア38233

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

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

退会済みユーザー

退会済みユーザー

2020/02/05 02:13

ご回答ありがとうございます!
guest

0

ベストアンサー

https://github.com/cytoscape/cytoscape-jupyter-widget

上記のようなウィジェットがあるので、これを入れればjupyter上でグラフの操作が可能ですが、(私自身のブログにもちょこっと載せてますが)色々導入の際にエラーやら障壁があったりします。
ですので、素直に可視化するだけならばnetworkxを使って作成したグラフを

python

1nx.write_gml(G, "pagerank.gml")

と保存してしまって、cytoscapeのソフト自体をインストールして起動して、.gmlを読み込んで可視化するのが一番だと思います。cytoscapeだと基本的なネットワーク指標も出てきますし、可視化方法もたくさんあるので便利です。

参考資料:
cytoscapeのURL
http://www.cytoscape.org/
実際の活用例
https://qiita.com/a-lilas/items/d7654def2fa831c0dfdf

投稿2020/02/04 13:34

bamboo-nova

総合スコア1408

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

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

退会済みユーザー

退会済みユーザー

2020/02/05 02:11

ご回答ありがとうございます! cytoscape試してみましたが、上手くいきません。。 Desktop上の .gmlをcytoscapeの左側にドロップすればいいのでしょうか?
退会済みユーザー

退会済みユーザー

2020/02/05 02:12

スクリーンショットを追加しました。
bamboo-nova

2020/02/05 04:58

最初に起動した時のポップアップ画面をcloseボタンを押して、ツールバーのFile->Import->Network->Fileで保存したネットワークモデルを開きます。 あとは、上のツールバーのLayout->yFiles LayoutでOrganicとかいろんなレイアウトがあるので初めはそれで形を整えて、自分の好きな形にノードをドラッグして移動させると良いと思います。
退会済みユーザー

退会済みユーザー

2020/02/05 05:52

ありがとうございます! importしようとすると追加した画像のエラーが出ます。。 これは保存の仕方に問題があるのでしょうか?
bamboo-nova

2020/02/05 07:51

実例URLにも掲載されているのですが、nx.set_node_attributesでノードに属性を設定する必要があります。詳しくは、前に送ったURLを参考にしてみてください。 あくまで一例ですが、 company = dict([(i, str(i)) for i in range(nx.number_of_nodes(G))]) nx.set_node_attributes(G, company,"company") nx.write_gml(G, "pagerank.gml") 参考資料: https://qiita.com/kzm4269/items/081ff2fdb8a6b0a6112f
退会済みユーザー

退会済みユーザー

2020/02/05 12:32

何度ももうしわけありません。。 上記のコードのおかげでimportはできるようになったのですが、追加画像のようになってしまって。。 やはり保存の仕方に問題があるのでしょうか..?
bamboo-nova

2020/02/05 14:46

nx.write_graphml(G, "another.graphml", encoding='utf-8') 日本語で表示したいときはこれでいけます。
bamboo-nova

2020/02/05 14:46

原因は日本語による文字化けです。
退会済みユーザー

退会済みユーザー

2020/02/05 15:33

おおお! ありがとうございます! とても助かりましたm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問