pandasデータフレームを使用して作成された2部ネットワークグラフを視覚化する

ラリットジャイン

私はcsvファイルにデータを持っています、そして私は以下のようにパンダを通してそれを読んでいます

import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt

sub_data = pd.read_csv('sample.csv')

出力:

   user_id   item_id    rating

0    772          36     3
1    471         228     5
2    641         401     4
3    312          98     4
4     58         504     5

このデータを使用してネットワークグラフを作成する:

 edges = [tuple(x) for x in sub_data[['user_id','item_id']].values.tolist()]
 B = nx.Graph()
 B.add_nodes_from(sub_data['user_id'].unique(), bipartite=0, label='user')
 B.add_nodes_from(sub_data['item_id'].unique(), bipartite=1, label='item')
 B.add_edges_from(edges, label='rating')    

以下のコードを使用してグラフをプロットします。

pos=nx.spring_layout(B)
nx.draw(B,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1,
     edge_cmap=plt.cm.Blues,with_labels=True) 

私はこのようなプロットを得ています: ここに画像の説明を入力してください

ノードを取得しているだけです。ここで、ノードを接続し、その接続のラベルとして評価する必要があります

モハメッド・カシフ

あなたが書いたコードを実行しようとしましたが、2部グラフを取得することができました。あなたの場合、NetworkXは私のような二部グラフをレンダリングできると思いますが、グラフにはより多くのノードがあるため、エッジが正しく表示されません。このようなもの

元のグラフ

エッジがほとんど見えないことがわかります。ノードの数も10に制限すると、エッジも表示される場合があります。例の複製に興味がある場合は、サンプルのcsvデータを次に示します(質問で提供されたデータにさらにいくつかのポイントを追加しました)。

,user_id,item_id,rating
0,772,36,3
1,471,228,5
2,641,401,4
3,312,98,4
4,58,504,5
5,67,98,4
6,471,229,3

これで、両側に2セットのノードがある2部レイアウトでグラフを表示する必要があることを理解しました。これを実現する代わりに、bipartite_layoutを使用する必要がありますspring_layout

完全なコードは次のとおりです。

import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt

sub_data = pd.read_csv('sample.csv')

edges = [tuple(x) for x in sub_data[['user_id','item_id']].values.tolist()]
B = nx.Graph()
B.add_nodes_from(sub_data['user_id'].unique(), bipartite=0, label='user')
B.add_nodes_from(sub_data['item_id'].unique(), bipartite=1, label='item')
B.add_edges_from(edges, label='rating')

# Now instead of spring_layout, use bipartite_layout

# First specify the nodes you want on left or top
left_or_top = sub_data['user_id'].unique()

# Then create a bipartite layout
pos = nx.bipartite_layout(B, left_or_top)

# Pass that layout to nx.draw
nx.draw(B,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1,
     edge_cmap=plt.cm.Blues,with_labels=True)

二部グラフ

また、ここで説明したようにbipartite_setsbipartite_layoutを使用する代わりに、ノードの1つのセットを明示的に渡したことに注意してください。グラフが切断され、AmbiguousSolutionErrorが発生する可能性があるためです。詳細については、ここここのドキュメントをお読みください

このGoogleColabNotebookで完全なコードを表示することもできます

更新:エッジを表示する場合は、次のように割り当てる必要があります(評価を追加するためのコードが正しくありませんでした)

# Extract the ratings while extracting the edges from DF
edges = [tuple(x) for x in sub_data[['user_id','item_id', 'rating']].values.tolist()]

B = nx.Graph()

B.add_nodes_from(sub_data['user_id'].unique(), bipartite=0, label='user')
B.add_nodes_from(sub_data['item_id'].unique(), bipartite=1, label='item')

# Now assign the ratings correctly to edges
for row in edges:
    B.add_edge(row[0], row[1], rating=row[2])

次に、draw_netwokrx_edge_labelsを使用してエッジラベルを描画します。

left_or_top = sub_data['user_id'].unique()
pos = nx.bipartite_layout(B, left_or_top)

# Draw the graph
nx.draw(B,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1,
     edge_cmap=plt.cm.Blues,with_labels=True)

# Get the edge labels for ratings
edge_labels = nx.get_edge_attributes(B,'rating')

# Draw the edge labels
nx.draw_networkx_edge_labels(B, pos, edge_labels=edge_labels)

エッジラベル付きの2部グラフ

参照:

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonを使用してデータフレームからグループ化されたデータを視覚化する方法

分類Dev

Tensorflow-事前にトレーニングされたネットワークの学習済みフィルターを視覚化する

分類Dev

ネットワークグラフの視覚化を改善するには?

分類Dev

GraphXを使用して2部ネットワークから1部グラフを作成する

分類Dev

TensorFlowで事前トレーニングされたネットワークの機能を視覚化する

分類Dev

networkxを使用して視覚化するパンダデータフレーム内のエッジリスト

分類Dev

Pandasデータフレームからグループ化されたスタック配列を作成する

分類Dev

ggplot2で要約されたデータフレームのスケーリングされファセット化されたクラスター化されたバーグラフを作成するにはどうすればよいですか?

分類Dev

共通の列を使用してデータフレームからネットワークを作成する

分類Dev

Pythonを使用して棒グラフでデータを視覚化する

分類Dev

mongodb集計フレームワークを使用して2つの日付間でグループ化されたデータを比較する方法

分類Dev

pandasデータフレームを使用して、ソートされた順序でランクを出力する

分類Dev

RにNULL値を含むネストされたリストを使用してデータフレームをフラット化する

分類Dev

R-データフレームを使用してネストされたリストを部分的にフラット化する

分類Dev

ネストされた辞書のリストを使用してパンダデータフレームの列をフラット化する方法

分類Dev

パンダを使用してデータフレームから(グループ化された)棒グラフをプロットする方法

分類Dev

Rオフィサー-グループ化されたリストにデータフレームをネストし、グループヘッダーを使用してテーブルをWordにエクスポートする

分類Dev

ジェネレーターを使用してネストされたリストをフラット化する

分類Dev

ネストされたforループを使用して複数のデータフレームを作成する方法

分類Dev

3列のデータフレームを使用したRでのグラフの視覚化

分類Dev

棒グラフを使用したJavaScriptデータの視覚化

分類Dev

Pythonを使用してネストされた辞書からデータフレームを作成する

分類Dev

pandasで2番目のヘッダーを取得する方法-zip()を使用してリストから作成されたデータフレーム

分類Dev

pandasで2番目のヘッダーを取得する方法-zip()を使用してリストから作成されたデータフレーム

分類Dev

データフレームを反復処理し、Pandas GroupBy.nuniqueを使用して列をグループ化し、グループ化されたデータフレーム列を複数の.xlsxファイルにエクスポートします

分類Dev

ネストされたjson文字列をフラット化し、sparkscalaを使用してデータフレームに変換します

分類Dev

ネストされたJSONをフラット化し、パンダを使用してデータフレームに連結します

分類Dev

パンダデータフレームをヒートマップとして視覚化する際のタイプエラー

分類Dev

トークン化されたデータフレームを文字列に変換してワードクラウドを生成する方法

Related 関連記事

  1. 1

    Pythonを使用してデータフレームからグループ化されたデータを視覚化する方法

  2. 2

    Tensorflow-事前にトレーニングされたネットワークの学習済みフィルターを視覚化する

  3. 3

    ネットワークグラフの視覚化を改善するには?

  4. 4

    GraphXを使用して2部ネットワークから1部グラフを作成する

  5. 5

    TensorFlowで事前トレーニングされたネットワークの機能を視覚化する

  6. 6

    networkxを使用して視覚化するパンダデータフレーム内のエッジリスト

  7. 7

    Pandasデータフレームからグループ化されたスタック配列を作成する

  8. 8

    ggplot2で要約されたデータフレームのスケーリングされファセット化されたクラスター化されたバーグラフを作成するにはどうすればよいですか?

  9. 9

    共通の列を使用してデータフレームからネットワークを作成する

  10. 10

    Pythonを使用して棒グラフでデータを視覚化する

  11. 11

    mongodb集計フレームワークを使用して2つの日付間でグループ化されたデータを比較する方法

  12. 12

    pandasデータフレームを使用して、ソートされた順序でランクを出力する

  13. 13

    RにNULL値を含むネストされたリストを使用してデータフレームをフラット化する

  14. 14

    R-データフレームを使用してネストされたリストを部分的にフラット化する

  15. 15

    ネストされた辞書のリストを使用してパンダデータフレームの列をフラット化する方法

  16. 16

    パンダを使用してデータフレームから(グループ化された)棒グラフをプロットする方法

  17. 17

    Rオフィサー-グループ化されたリストにデータフレームをネストし、グループヘッダーを使用してテーブルをWordにエクスポートする

  18. 18

    ジェネレーターを使用してネストされたリストをフラット化する

  19. 19

    ネストされたforループを使用して複数のデータフレームを作成する方法

  20. 20

    3列のデータフレームを使用したRでのグラフの視覚化

  21. 21

    棒グラフを使用したJavaScriptデータの視覚化

  22. 22

    Pythonを使用してネストされた辞書からデータフレームを作成する

  23. 23

    pandasで2番目のヘッダーを取得する方法-zip()を使用してリストから作成されたデータフレーム

  24. 24

    pandasで2番目のヘッダーを取得する方法-zip()を使用してリストから作成されたデータフレーム

  25. 25

    データフレームを反復処理し、Pandas GroupBy.nuniqueを使用して列をグループ化し、グループ化されたデータフレーム列を複数の.xlsxファイルにエクスポートします

  26. 26

    ネストされたjson文字列をフラット化し、sparkscalaを使用してデータフレームに変換します

  27. 27

    ネストされたJSONをフラット化し、パンダを使用してデータフレームに連結します

  28. 28

    パンダデータフレームをヒートマップとして視覚化する際のタイプエラー

  29. 29

    トークン化されたデータフレームを文字列に変換してワードクラウドを生成する方法

ホットタグ

アーカイブ