NetworkX:分层绘制图形

2023-12-02

我有一个按级别划分的图表,即 f.e. :

ids : 0 - 100 are lowest level
ids : 101 - 500 are level 2
ids : 501 - 1500 are level 3
and so on ...

有没有某种方法可以强制图形在分层组织的级别中绘制节点,一个在另一个之上。

我想将它们堆叠起来而不溢出:)

在我的例子中,节点位于哪一层取决于节点 ID,但如果您有一些想法,它可能是其他一些组织原则。


到目前为止这似乎是可能的解决方案:

def plot(self):
    plt.figure()
    pos = nx.graphviz_layout(self.g,prog='dot')
    nx.draw(self.g, pos, node_size=650, node_color='#ffaaaa')

五层示例...

enter image description here


布局函数,例如nx.spring_layout,返回一个字典,其键是节点,其值是二元组(坐标)。这是一个例子pos字典可能看起来像:

In [101]: pos
Out[101]: 
{(0, 0): array([ 0.70821816,  0.03766149]),
 (0, 1): array([ 0.97041253,  0.30382541]),
 (0, 2): array([ 0.99647583,  0.63049339]),
 (0, 3): array([ 0.86691957,  0.86393669]),
 (1, 0): array([ 0.79471631,  0.08748146]),
 (1, 1): array([ 0.71731384,  0.35520076]),
 (1, 2): array([ 0.69295087,  0.71089292]),
 (1, 3): array([ 0.63927851,  1.        ]),
 (2, 0): array([ 0.42228877,  0.        ]),
 (2, 1): array([ 0.33250362,  0.3165331 ]),
 (2, 2): array([ 0.31084694,  0.69246818]),
 (2, 3): array([ 0.34141212,  0.9952164 ]),
 (3, 0): array([ 0.16734454,  0.11357547]),
 (3, 1): array([ 0.01560951,  0.33063389]),
 (3, 2): array([ 0.        ,  0.63044189]),
 (3, 3): array([ 0.12242227,  0.85656669])}

然后,您可以按照您喜欢的方式进一步操作这些坐标。例如,自从 这x and y返回的坐标spring_layout介于 0 和 1 之间,你 可以将图层级别值添加 10 倍y-将节点分成层的坐标:

for node in pos:
    level = node // nodes_per_layer
    pos[node] += (0,10*level)

import networkx as nx
import matplotlib.pyplot as plt

layers = 5
nodes_per_layer = 3
n = layers * nodes_per_layer
p = 0.2

G = nx.fast_gnp_random_graph(n, p, seed=2017, directed=True)
pos = nx.spring_layout(G, iterations=100)

for node in pos:
    level = node // nodes_per_layer
    pos[node] += (0,10*level)

nx.draw(G, pos, node_size=650, node_color='#ffaaaa', with_labels=True)
plt.show()

produces enter image description here

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

NetworkX:分层绘制图形 的相关文章

  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • 使用 psycopg2 在 python 中执行查询时出现“编程错误:语法错误位于或附近”

    我正在运行 Python v 2 7 和 psycopg2 v 2 5 我有一个 postgresql 数据库函数 它将 SQL 查询作为文本字段返回 我使用以下代码来调用该函数并从文本字段中提取查询 cur2 execute SELECT
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 如何为类中的模板定义类型别名[重复]

    这个问题在这里已经有答案了 例如 struct Option 1 template
  • 以编程方式为 RecyclerView Android 中的项目设置重力

    我正在使用 RecyclerView Android 制作带有左 右消息框的聊天线 我想为 RecyclerView 的项目设置重力 通常情况下 我将 itemView 转换为 LinearLayout 然后为其设置 ParamLayout
  • Spring Data Jpa - 类型规范已弃用

    我正在实现链接中的逻辑 Spring Data 多列搜索我想要搜索的地方FirstName 根据链接 https docs spring io spring data jpa docs current api org springframe
  • 在Win7中构建R igraph包

    我对源代码做了一个小改动igraph包因为我想基于以下实现森林防火方法广度优先搜索法 I used Rtools构建包并按照以下步骤操作link 但是 我收到一条错误消息 foreign graphml c 38 29 fatal erro
  • 即使在理解范围之后,列表理解也会重新绑定名称。这是正确的吗?

    推导式显示出与范围界定的不寻常交互 这是预期的行为吗 x original value squares x 2 for x in range 5 print x Prints 4 in Python 2 冒着抱怨的风险 这是一个残酷的错误来
  • 当其中存在 HTML 转义字符串时,使用 python (pandas) 读取 CSV 文件

    我正在尝试使用 pandas read csv 读取 CSV 文件 数据看起来像这样 示例 thing weight price colour apple 1 2 red m amp m s 0 10 several cherry 0 5
  • 如何在 PHP 中使用黑名单去除 HTML 标签?

    PHP strip tags使用白名单来跳过一些您不希望删除的标签 有人知道一些实现但使用黑名单而不是白名单吗 一个简单的复合正则表达式搜索就可以了 如果这仍然是关于您之前的问题 html preg replace gt i html
  • 用于社交共享的默认网站图像

    有什么方法可以设置在 Facebook 上分享我的网站时显示的默认图像吗 我注意到 Facebook 通常会从网站获取第一张图像用作缩略图 您需要设置开放图图像元标记 欲了解更多信息 请查看docs
  • 使一个类型类实例自动成为另一个类型类实例

    我想要实现的是以下类的任何实例 SampleSpace 应该自动成为一个实例Show 因为SampleSpace包含创建字符串表示所需的整个接口 因此该类的所有可能实例实际上都是相同的 LANGUAGE FlexibleInstances
  • C# 属性强制属性

    我创建了类似的属性 AttributeUsage AttributeTargets Class AllowMultiple true Serializable public class TestPropertyAttribute Syste
  • 为什么我的 SVG 文件不使用我的字体文件?

    我在同一目录中有这个 SVG 文件这个字体的TTF 文件
  • Mongo 中不区分大小写的搜索

    我在 Mongo 中使用不区分大小写的搜索 类似于https stackoverflow com q 5500823 1028488 IE 我正在使用带有选项 i 的正则表达式 但我在将正则表达式限制为这个词时遇到了麻烦 它的表现更像是 S
  • 基于用户偏好的动态表列

    Scenario 假设用户是一名推销员 用户模型有许多 log entries 用作销售数据的每日日志 用户还具有允许他们选择在其 log entry 表单中可见的字段的首选项 因此 如果他们选择菠萝 香蕉和葡萄 这些就是表单中的字段 如果
  • 仅从 Spring MVC 3 控制器返回字符串消息

    谁能告诉我如何从控制器返回字符串消息 如果我只是从控制器方法返回一个字符串 那么 spring mvc 将其视为 jsp 视图名称 在控制器中注释你的方法 ResponseBody RequestMapping value controll
  • 如何以编程方式在 C/C++ 中引发核心转储

    我想在我的 C 应用程序中的特定位置强制进行核心转储 我知道我可以通过执行以下操作来做到这一点 int crash NULL crash 1 但我想知道是否有更干净的方法 顺便说一句 我正在使用Linux 发出 6 号信号 SIGABRT在
  • 将 NULL 数组填充到自定义聚合函数的最大长度

    从问题的回答来看如何对 varchar 使用 array agg 我们可以创建一个自定义聚合函数来聚合 Postgres 中的 n 维数组 如下所示 CREATE AGGREGATE array agg mult anyarray SFUN
  • TransactionScope 内的 Membership.GetUser() 抛出 TransactionPromotionException

    下面的代码抛出一个TransactionAbortedException带有消息 交易已中止 和内部TransactionPromotionException消息 尝试促进交易失败 using TransactionScope transa
  • C# 解析日期和时间

    我在应用程序中有一些代码 类似于 DateTime activityDate DateTime Parse tempDate tempTime Where tempDate是一个字符串 其值如 2009 12 01 即 yyyy mm dd
  • 在后台运行脚本?

    简单的问题 有没有办法在后台运行脚本而不运行终端 更多细节和背景 我有一个应用程序 它读取应用程序的 log 文件并从中提取信息 然后从日志中的信息提供信息和统计信息 应用程序的更新改变了 log 文件的写入方式 删除信息并以我无法预测的方
  • NetworkX:分层绘制图形

    我有一个按级别划分的图表 即 f e ids 0 100 are lowest level ids 101 500 are level 2 ids 501 1500 are level 3 and so on 有没有某种方法可以强制图形在分