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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ネットワーク

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

3179閲覧

行列をグラフ化してネットワーク図を作成したい

eve

総合スコア19

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ネットワーク

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/08/09 15:20

編集2020/10/23 16:28

前提・実現したいこと

Python初心者です。
Pythonでresponseを用いてjson形式で情報を取得し、pandasを利用してそれをcsvファイルに変換した後、
csvファイルを読み込んで隣接行列を作成し、出力するプログラムを作成しました。

そこで、行列をグラフ化してネットワーク図?(可視化)を出力したいと考えていますが、方法が思い浮かばない状況です。
networkxというライブラリを使うとよさそうなのですが、使い方が分かりません。

どなたか、教えて頂けないでしょうか。参考にさせて頂きたいです。
以下に行列を出力するまでのソースコードを提示しておきます。
宜しくお願い致します。

補足情報

Ubuntu 20.04 LTS/python3

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

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

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

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

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

guest

回答1

0

ベストアンサー

元データのカタチが不明ですが、以下のような感じで描画できます。
networkx.convert_matrix.from_pandas_edgelistを使うと、隣接行列を作らずに直接ノードリストからグラフを生成できます。

Python

1import pandas as pd 2from io import StringIO 3import matplotlib.pyplot as plt 4import networkx as nx 5 6# テストデータ 7s = """node1,node2 8a,b 9a,c 10b,c""" 11 12df = pd.read_csv(StringIO(s)) 13G = nx.from_pandas_edgelist(df, 'node1', 'node2') 14nx.draw(G, with_labels = True) 15plt.show() 16 17# 参考:隣接行列から生成 18df = pd.read_csv(StringIO(s)) 19df = df.drop_duplicates() 20df = pd.crosstab(df.node1, df.node2) 21idx = df.columns.union(df.index) 22df = df.reindex(index = idx, columns=idx, fill_value=0) 23a = df.values 24G = nx.from_numpy_matrix(a) 25nx.draw(G) 26plt.show()

イメージ説明

投稿2020/08/10 01:28

編集2020/08/10 02:45
can110

総合スコア38341

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

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

eve

2020/08/10 16:49

ありがとうございます。想定していた図を出力できました。 参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問