Networkx:绘制平行边

2023-12-13

使用以下代码从数据框中绘制图表:

import pandas as pd
import networkx as nx

df = pd.DataFrame({'id_emp' : [13524791000109, 12053850000137, 4707821000113, 4707821000114, 1],
           'name_emp': ['Cristiano', 'Gaúcho', 'Fenômeno','Angelin', 'Souza'],
           'name_dep': ['Ronaldo','Ronaldo', 'Ronaldo', 'Ronaldo', 'Bruno'],
           'weight_1': [8,9,10,11,12],
           'weight_2':[5,6,7,8,9] })

 G = nx.MultiDiGraph()

 G.add_nodes_from(df['id_emp'], bipartite = 0)
 emp = [v for v in G.nodes if G.nodes[v]['bipartite'] == 0]

 G.add_nodes_from(df['name_dep'], bipartite = 1)
 dep = [v for v in G.nodes if G.nodes[v]['bipartite'] == 1]

 G.add_weighted_edges_from(df[['name_dep', 'id_emp', 'weight_1']].values)
 G.add_weighted_edges_from(df[['id_emp', 'name_dep', 'weight_2']].values)
 edge_width = [a[2]['weight']//2 for a in G.edges(data=True)]

 plt.figure(figsize=(5,5))

 pos = nx.spring_layout(G, k=0.9)
 nx.draw_networkx_nodes(G, pos, nodelist=dep, node_color='#bfbf7f', node_shape="h", node_size=300, with_labels = True)
 nx.draw_networkx_nodes(G, pos, nodelist=emp, node_color='red', node_size=300, with_labels = True)
 nx.draw_networkx_edges(G, pos, width=edge_width, alpha=0.2)

 plt.axis('off')
 plt.show()

output:

enter image description here

在所示的示例中,每个顶点都有一条输入边和一条输出边,这将在两个顶点之间配置平行边。然而,networkx 绘制的图的边相互重叠,给人的印象是两个顶点之间只有一条边。那么,如何配置 networkx 以使输出类似于下图?

enter image description here


Networkx 无法正确绘制平行边。如果你想绘制它们,你需要使用 Graphviz (Agraph) 创建一个 DOT 文件写点函数并稍后将其转换为图像:

nx.nx_agraph.write_dot(G, path_to_store_dot_file)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Networkx:绘制平行边 的相关文章

随机推荐

  • 如何在javascript中比较两个日期时间?

    我尝试通过 C 的 JSON 解析创建标记 我有一个关于 javascript 中的日期时间比较的小问题 var nowDate new Date var LastTenMin new Date nowDate getFullYear no
  • 尝试运行工作表更改事件两次

    我正在尝试为两个不同的列 A 和 I 运行此工作表更改事件 Private Sub Worksheet Change ByVal Target As Range Dim A As Range B As Range Inte As Range
  • 在哪里可以找到 iPhone 系统按钮和图标图形?

    我正在尝试找到一种在网站中使用原始 Apple 系统按钮和图标的方法 有没有办法把这些原始图形变成png格式 当然 获得它们的方法并不太好 我想到的有两个 将他们从这个链接 然后转换为png 在 iPhone 上截取屏幕截图 然后从保存的图
  • 将材料 UI 选项卡与 React 一起使用

    我偶然发现的是了解如何使用 Material UI 选项卡 我发现了很多帖子 但每个帖子都针对不同版本的材料 UI 并且每个帖子都给出了完全不同的实现方式 我创建的 Web 应用程序是一个分析仪表板 我的页面上有 3 个部分 应用栏 主体
  • 在Python中声明静态方法是否需要@staticmethod装饰器?

    我很好奇为什么我们需要 staticmethod装饰器将方法声明为静态 我正在阅读有关 Python 中的静态方法的内容 并且我了解到静态方法可以在不实例化其类的情况下进行调用 所以我尝试了下面的两个示例 但两者的作用相同 class St
  • 尝试使用 Dagger2 了解 Android 上的依赖注入

    我有以下代码工作 某类 public class SomeClass Inject Named special OkHttpClient mOkHttpClient public SomeClass Activity activity My
  • 访问模型中的设备 current_user

    您好 我正在尝试访问模型中的 current user 以便使用 find or create by 动态创建元素 以下是我的模型中的方法 def opponent name name self opponent Opponent find
  • Android JNI:32 位与 64 位设备的兼容性?

    我有一些使用本机组件的库 这些库是使用 NDK 为 32 位 Arm 架构构建的 现在我们在现代设备上拥有 64 位处理器 所以我想知道这些库是否可以工作 在我的情况下 我没有本机库的源代码文件 只有 SO 文件 我无法为 64 位构建它们
  • 如何计算图像中不规则物体的面积(opencv)?

    So I have this image 我需要计算特定部分的面积 所以我编写了以下代码 packages from imutils import perspective from imutils import contours impor
  • 在 MATLAB 中总结 Dice

    我的函数 RollDice 模拟给定数量的六面骰子滚动给定的次数 该函数有两个输入参数 即每次实验中掷骰子的数量 NumDice 和掷骰子的总次数 NumRolls 该函数的输出将是长度为 NumRolls 的向量 SumDice 其中包含
  • ReferentialConstraint 中的依赖属性映射到存储生成的列

    写入数据库时 出现此错误 ReferentialConstraint 中的依赖属性映射到 存储生成的列 列 付款 ID public bool PayForItem int terminalId double paymentAmount e
  • UTF-8 字符集不适用于 javax.mail

    我用过Java 邮件 API 用于发送电子邮件 我正在使用联系人公式发送输入 该输入必须发送到特定的电子邮件 尽管我是丹麦人 但电子邮件发送没有问题 因此我需要在主题和电子邮件文本中使用三个丹麦字符 即 和 因此 我发现我可以使用 UTF
  • 为什么我的日志位于 std 命名空间中?

    在下面的代码中 我定义了一个简单的log功能 在main I try not调用它 我打电话std log 尽管如此 我自己的log叫做 我看到 日志 在屏幕上 有谁知道为什么 我使用 G 4 7 和 clang 3 2 include
  • jsTree 在 IE8 中的显示缺陷

    我一直在使用 jsTree 并在 IE8 中遇到问题 所有数据都在树中正确显示 但是当我尝试折叠树的分支时 它无法正确显示 也就是说 发生了平滑的折叠动画 但随后数据在不应该可见的时候再次可见 相同的代码在 Firefox 3 6 27 和
  • 如何在Google电子表格中记录删除事件[重复]

    这个问题在这里已经有答案了 我需要使用 Google Apps 脚本在 Google 电子表格中记录删除事件 删除单元格或整行 并获取单元格编号和用户名 功能onEdit e 在编辑单元格时触发 而不是在删除单元格时触发 function
  • IntelliJ 中 Github 推送失败

    我使用我的新 github 帐户在我的项目中通过 github MacOS 桌面创建了 2 个存储库 但是当我尝试通过 IntelliJ 推送提交时 出现 403 错误 但我可以在 github Desktop 中成功推送 远程 aui C
  • 使用enable_if选择类构造函数[重复]

    这个问题在这里已经有答案了 考虑以下代码 include
  • 如何制作可折叠丝带?

    我正在寻找一种对可折叠丝带进行编程的方法 所以我这里有这段代码 ribbon position absolute top 20px right 0 padding 15px ribbon content position relative
  • 使用 Selenium 访问 Shadow DOM 树

    是否可以使用 Selenium Chrome webdriver 访问 Shadow DOM 中的元素 正如预期的那样 使用普通的元素搜索方法不起作用 我已经看到了对切换到子树w3c 上的规范 但找不到任何实际的文档 示例等 有人在这方面取
  • Networkx:绘制平行边

    使用以下代码从数据框中绘制图表 import pandas as pd import networkx as nx df pd DataFrame id emp 13524791000109 12053850000137 470782100