Присвойте граничные веса графу networkx, используя панду - PullRequest
0 голосов
/ 19 сентября 2018

Я строю график networkx в python 3. Я использую pandas dataframe для предоставления ребер и узлов графа.Вот что я сделал:

test = pd.read_csv("/home/Desktop/test_call1", delimiter = ';')

g_test = nx.from_pandas_edgelist(test, 'number', 'contactNumber', edge_attr='callDuration')

Я хочу, чтобы столбец «callDuration» информационного кадра pandas выступал в качестве веса ребер для графа networkx, и толщина ребер также изменялась соответственно.

Я также хочу получить максимально взвешенные ребра 'n'.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Не согласен с тем, что было сказано.При вычислении различных метрик, учитывающих вес каждого ребра, например, PageRank, или центральность между ними, ваш вес не будет учитываться, если он будет сохранен в качестве атрибутов ребра.Используйте график.

Add_edges(source, target, weight, *attrs)

0 голосов
/ 19 сентября 2018

Давайте попробуем:

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

df = pd.DataFrame({'number':['123','234','345'],'contactnumber':['234','345','123'],'callduration':[1,2,4]})

df

G = nx.from_pandas_edgelist(df,'number','contactnumber', edge_attr='callduration')
durations = [i['callduration'] for i in dict(G.edges).values()]
labels = [i for i in dict(G.nodes).keys()]
labels = {i:i for i in dict(G.nodes).keys()}

fig, ax = plt.subplots(figsize=(12,5))
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, ax = ax, labels=True)
nx.draw_networkx_edges(G, pos, width=durations, ax=ax)
_ = nx.draw_networkx_labels(G, pos, labels, ax=ax)

Вывод:

enter image description here

...