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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

4435閲覧

Networkxを使った多重グラフの表示

Kento-foot

総合スコア5

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/08/22 11:47

編集2019/08/22 12:50

ヘディングのテキスト### 前提・実現したいこと

networkxをつかって
ノード間に2つのエッジを表示させたいです。

発生している問題・エラーメッセージ

MultiDiGraphを使ってグラフ作成をしているが、2本のエッジではなくA↔️Bのようなエッジになってしまう。 
エッジが重なり重みなどで太さを変えても、分かりづらいため2本にしたい

###ソースコード
import networkx as nx

G = nx.MultiDiGraph()
G.add_nodes_from([1,2])
G.add_edge(1,2,weight=1)
G.add_edge(2,1,weight=2)
pos = nx.spring_layout(G)
edges_weight = [d["weight"] for (u,v,d) in G.edges(data=True)]
nx.draw_networkx_nodes(G,pos)
nx.draw_networkx_edges(G,pos,width=edges_weight)

イメージ説明
Python3.7.0

ここにより詳細な情報を記載してください。

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

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

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

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

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

can110

2019/08/22 12:03

現状のコードと実行結果の図を提示されると回答が得られやすいかと思います。
Kento-foot

2019/08/22 12:46

アドバイスありがとうございます。 編集させていただきます。
guest

回答1

0

ベストアンサー

graphvizが導入済みの環境が前提として、以下のような手順で描画できます。

Python

1import networkx as nx 2from networkx.drawing.nx_pydot import write_dot 3 4G = nx.MultiDiGraph() 5G.add_nodes_from([1,2]) 6G.add_edge(1,2,weight=1) 7G.add_edge(2,1,weight=2) 8 9write_dot(G,'multi.dot')

端末上で以下を実行。

dot -Tpng multi.dot > output.png

イメージ説明

なおPyGraphvizが導入できた環境であればPythonコードのみで描画できるようになります(当方環境は導入断念しましたが)

投稿2019/08/22 13:38

can110

総合スコア38262

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

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

Kento-foot

2019/08/23 01:31

ご回答ありがとうございます。 pythonコードに関しては、エラーなく実行することができました。 端末上とは、どこで実行すれば良いのでしょうか。 ご回答宜しくお願い致します。
can110

2019/08/23 01:33

端末=ターミナル=コマンドプロンプトです。 場所はパスが通っている場所ならどこでもよいです。
Kento-foot

2019/08/23 02:11

ありがとうございました。 解決する事が出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問