NetworkX - 阻止节点聚集 - 尝试 Scale/K 参数

2023-12-04

我有大约 28 个节点,其中大多数节点之间都有边,有些是孤立的(没有边)。孤立的节点分布得很好,但连接的节点却堆积得很厉害,我看不到任何东西。我尝试了各种 node_sizes、scale 和 k 参数,它总是给我(大致)相同的结果。有什么办法可以强制看到更好的景色吗?

nx.draw_spring(candidateGraph, node_size = 1000, with_labels=True, scale=100, weight=weightVal, k=100)

plt.show( )

enter image description here


做这件事有很多种方法。

首先评论一下networkx如何绘制东西。这是文档。它创建一个字典pos其中有每个节点的坐标。使用draw_networkx您可以发送可选参数pos=my_position_dict to it.

Networkx 还具有可以为您定义位置的命令。这样你就可以更好地控制事情。

您有多种选择可以做您想做的事。

最简单的方法是仅绘制连接的组件并省略孤立的节点。

nodes_of_largest_component  = max(nx.connected_components(G), key = len)
largest_component = G.subgraph(nodes_of_largest_component)
nx.draw_spring(largest_component)

另一种方法是尝试其他(非弹簧)布局之一。例如:

nx.draw_spectral(G)

或者,您可以开始操纵位置。一种方法是将几个位置设置为固定,然后让 spring_layout 处理其余的位置。

pre_pos = {Huck: (0,0), Christie:(0,1), Graham:(1,1), Bush: (1,2)}
my_pos = nx.spring_layout(G, pos=pre_pos, fixed = pre_pos.keys())
nx.draw_networkx(G,pos=my_pos)

然后它将固定您在中指定的节点fixed.

或者,仅定义最大组件的所有位置。然后保持这些固定并添加其他节点。最大的组件将“填充”大部分可用空间,然后我thinkspring_layout 将尝试保持添加的节点距离太远(或者,一旦您看到布局,您可以手动指定这些节点)。

nodes_of_largest_component  = max(nx.connected_components(G), key = len)
largest_component = G.subgraph(nodes_of_largest_component)
pos = nx.spring_layout(largest_component)
pos = nx.spring_layout(G,pos=pos,fixed=nodes_of_largest_component)
nx.draw_networkx(G,pos=pos)

另一件需要注意的事情是,每次调用spring_layout将导致不同的布局。这是因为它从一些随机位置开始。这就是为什么保存位置字典很有用的部分原因,特别是如果您打算对图形做任何花哨的事情。

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

NetworkX - 阻止节点聚集 - 尝试 Scale/K 参数 的相关文章

随机推荐

  • readthedocs 不从公共 github 存储库创建文档

    我有一个公共 github 存储库 下列的指示在 readthedocs 中 我使用 Sphinx 以我很乐意让其他人看到的形式获取文档 编辑文件并重建 直到您喜欢所看到的内容为止 然后提交更改并推送到公共存储库 一旦您在公共存储库中拥有
  • 我在设置 MvvmCross 6.0 时做错了什么?

    我是 MvvmCross 6 0 和 Xamarin 的新手 我正在尝试遵循这里是 MvvmCrosss 5 5 的教程 我按照解释 创建 App xaml 作为 MvxFormsApplication
  • Google Chrome“后退”和“前进”历史记录

    我正在开发一个名为 的小扩展 标签捆绑器 简而言之 它将窗口中所有打开的选项卡保存到一个捆绑包中 只需单击按钮即可打开该捆绑包 但是 当打开捆绑包时 不会保存用户如何访问该 url 的历史记录 即用户无法点击返回查看他们如何到达该网址 这是
  • 项目级别的 SourceSafe 合并

    我正在运行 SourceSafe 并且我的代码有两个分支 我目前正在使用手动方法运行报告来显示差异 然后手动将每个文件一一合并 不过 我正在尝试找到一种简化的方法来在项目级别上做到这一点 如果该过程一次显示每个文件一个就可以了 我只是担心如
  • 将逗号分隔值拆分到具有固定列数的目标表中

    我在 Postgres 13 1 数据库中有一个包含单列的表 它由许多带有逗号分隔值的行组成 最多大约 20 个元素 我想将数据分成多列 但我的列数有限 例如单行中有 5 个和 5 个以上的 CSV 值 因此多余的值必须转移到新的 下一行
  • React Native:firestore/firebase 预期 collection() 的第一个参数是 CollectionReference...怎么样?

    因此 我有一个简单的 React Native 应用程序 它是我使用 Expo 创建的 并在我的个人 Android 设备上进行调试 我已将 firebase firestore 包含到我的应用程序中 现在尝试在单击按钮时将对象添加到 fi
  • 将 web.config 文件转换为 .htaccess

    我正在寻找一种将 IIS 重写规则转换为 htaccess 文件的方法 我找不到任何工具来自动执行此操作 我所能得到的只是 500 个内部服务器错误 web config 文件如下所示
  • 添加“Authorization”标头会导致 Spring Security 保护允许的端点

    所以 我的里面有这个WebSecurityConfigurerAdapter public class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdap
  • 如果 C# 中的相同位置已存在文件,则始终创建新文件

    我使用下面的代码创建了一个新文件 但如果该文件已经存在 那么我需要使用另一个文件名创建一个新文件 这可能吗 FileStream fs new FileStream filePath FileMode Append FileAccess W
  • 带等高线的 Gnuplot 、 pm3d

    我正在用一些值绘制一个矩阵 3D 并且我需要向图中添加等高线 是否有一个简单的 gnuplot 命令可以做到这一点 我尝试了命令 设置轮廓基础 但只出现了 1 行 我认为应该有很多行 看matlab图片 当我在 gnuplot 中绘制它时
  • R flextable - 如何在合并单元格下添加表宽水平边框

    当合并单元格时 是否有一种聪明的方法可以使水平边框表格变宽 在下面的示例中 它还不是表宽 或者我应该编写一个函数来计算正确的索引 library flextable library officer library dplyr myft lt
  • MySQL 查询查找订购了两种特定产品的客户

    我无法提出一个查询来查找同时购买了 PROD1 和 PROD2 的所有客户 这是一个伪查询 看起来像我想要做的 显然这是行不通的 SELECT COUNT DISTINCT userid FROM TRANSACTIONS WHERE pr
  • javascript - 如何让对象返回一个不是对象本身的值

    当创建一个x new Date 对象 如果你把它放入console log x 将输出一个字符串 有没有办法制作一个自定义对象 该对象将返回一个不是对象本身的不同值 有一个函数可以做到这一点 toString 但是如果你这样做console
  • 为 CakePHP 发送正确的 JSON 内容类型

    在我的 CakePHP 应用程序中 我返回 JSON 并针对某些请求退出 例如 尝试通过 GET 请求访问 API 进行登录 header Content Type application json echo json encode arr
  • Intellij Idea 13 有代码片段编辑器吗?

    Visual Studio 有片段设计师扩展可用于创建和管理自定义代码片段 是否有类似 Intellij Idea 13 的扩展 或者简单添加自定义代码片段的方法 据我所知 没有扩展 而且我不熟悉 Snippet Designer 但 In
  • 将 Guid 表示为一组整数

    如果我想将 guid 表示为一组整数 我将如何处理转换 我正在考虑获取 guid 的字节数组表示形式并将其分解为可以转换回原始 guid 的尽可能少的 32 位整数 首选代码示例 另外 生成的整数数组的长度是多少 由于 GUID 只有 16
  • 安装Python geopandas失败

    我正在尝试安装 geopandas 进行以下设置 Windows 64 Anaconda2 64 位 Python 2 7 尝试过两件事 1 pip install geopandas 这给了我以下错误 WindowsError Error
  • 在Python中使用win32com.client如何查找和替换多个文本

    我正在尝试使用查找和替换来将多个字符串值添加到 Word 文档中win32com客户端Python 库 我可以查找并替换一个值 但我不知道如何对多个值执行此操作 这是我到目前为止所拥有的 import win32com client wor
  • 使用 UITextField + UIPickerview 时禁用键盘输入

    这个项目也是点击textfield pickerview打开 但是上面显示的数据可以在该部分中输入 我怎样才能将其关闭 所以请看下面我的选择 如果单击文本字段 我将打开选择器视图 import UIKit import NVActivity
  • NetworkX - 阻止节点聚集 - 尝试 Scale/K 参数

    我有大约 28 个节点 其中大多数节点之间都有边 有些是孤立的 没有边 孤立的节点分布得很好 但连接的节点却堆积得很厉害 我看不到任何东西 我尝试了各种 node sizes scale 和 k 参数 它总是给我 大致 相同的结果 有什么办