geekdoc-python-zh/docs/askpython/creating-weighted-graph-dat...

3.1 KiB

从熊猫数据框架创建加权图

原文:https://www.askpython.com/python/examples/creating-weighted-graph-dataframe

嘿伙计们!在本教程中,我们将了解如何从熊猫数据框构建我们自己的加权图。


从熊猫数据帧中创建一个加权图

任何 python 程序的第一项任务都是将必要的模块/库导入代码。

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

下一个任务是创建一个数据框,在后面的部分中需要为其绘制图表。同样可以在熊猫numpy 模块的帮助下获得。

首先,我们创建一个随机种子,它将有助于在一个特定的范围内生成一些随机整数,这些整数将在后面的部分中作为边的权重。接下来,使用DataFrame函数创建数据框,并将图表数据传递给该函数。

r = np.random.RandomState(seed=5)
weights = r.random_integers(1, 5, size=(5,))
df = pd.DataFrame({'from':['A','B','C','D','E'],'to':['D','E','A','D','C'],'weight':weights})
df.head()

Dataframe 2 Graph Data

Dataframe 2 Graph Data

接下来,我们将分别借助于draw_networkx_nodesdraw_networkx_edgesdraw_networkx_labels函数,通过分别绘制节点、边和标签来尝试可视化权重增加图。

可视化节点

fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title("Plotting Nodes")
nx.draw_networkx_nodes(G, pos, ax = ax)

Dataframe 2 Graph Only Nodes

Dataframe 2 Graph Only Nodes

可视化边缘

fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title("Plotting Edges")
nx.draw_networkx_edges(G, pos, width=durations, ax=ax)

Dataframe 2 Graph Only Edges

Dataframe 2 Graph Only Edges

可视化完整的图表

fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title("Plotting Complete Graph")
nx.draw_networkx_nodes(G, pos, ax = ax)
nx.draw_networkx_edges(G, pos, width=durations, ax=ax)
_ = nx.draw_networkx_labels(G, pos, labels, ax=ax)

Dataframe 2 Graph Complete Graph

Dataframe 2 Graph Complete Graph


结论

恭喜你!您刚刚学习了如何在 NetworkX 库中使用 pandas 数据框构建图表。希望你喜欢它!😇

喜欢这个教程吗?我建议你看看下面提到的教程:

  1. NetworkX 包——Python 图形库
  2. 计算未加权图中节点间的距离
  3. Python 中的图形操作【附简单例子】
  4. 用 Python 实现图形

感谢您抽出时间!希望你学到了新的东西!!😄