如何修改networkx中节点的轮廓颜色?

2023-12-25

我对 networkx 和使用 matplotlib.pyplot 绘图相对较新,并且想知道如何修改节点轮廓的颜色(或其他属性,例如权重)。我所说的“轮廓”并不是指两个节点之间的弧线或边缘;而是指两个节点之间的弧线或边缘。我的意思是圆圈周围的细黑线,默认情况下用于在绘制网络时表示节点。

例如,当我制作一个只有一个节点的图表并显示它时:

from networkx import *
import matplotlib.pyplot as plt
plt.ion()
G = Graph()
G.add_node(1)
draw(G)

我看到一个带有细黑色轮廓的红色节点(内部有一个黑色“1”,这是节点的标签)。如何将该轮廓的颜色从黑色更改为红色(“#FF0000”)或其他颜色?或者,我可以完全抑制轮廓的显示吗?

我想一定有一个属性,类似于 edge_color 或 node_color,我可以设置。但是,我无法通过网络搜索、networkx 文档或查看图库示例找到这样的属性。如果有人能给我指出适当的属性,我将不胜感激。谢谢!


更新(3/2019): 从networkx 2.1开始,kwargs被转发 https://networkx.github.io/documentation/networkx-2.1/_modules/networkx/drawing/nx_pylab.html#draw_networkx from draw(),所以你应该能够简单地调用draw()edge_color kwarg.

好吧,这有点hacky,但它确实有效。这就是我的想法。

问题

networkx.draw() calls networkx.draw_networkx_nodes(),然后调用pyplot.scatter()绘制节点。问题是关键字 args 接受draw_networkx_nodes()没有被传递给scatter(). (来源在这里 http://networkx.github.io/documentation/latest/_modules/networkx/drawing/nx_pylab.html#draw_networkx_nodes)


为了解决这个问题,我基本上分手了networkx.draw()进入其组件:draw_networkx_nodes, draw_networkx_edges, and draw_networkx_labels.

解决方案

我们可以取返回值draw_networkx_nodes() -- a PathCollection-- 并对其进行操作:您可以使用PathCollection.set_edgecolor() or PathCollection.set_edgecolors()分别带有颜色或列表。

示例代码:

from networkx import *
import matplotlib.pyplot as plt
G = Graph()
G.add_node(1)
# Need to specify a layout when calling the draw functions below
# spring_layout is the default layout used within networkx (e.g. by `draw`)
pos = spring_layout(G)
nodes = draw_networkx_nodes(G, pos)
# Set edge color to red
nodes.set_edgecolor('r')
draw_networkx_edges(G, pos)
# Uncomment this if you want your labels
## draw_networkx_labels(G, pos)
plt.show()

如果您要经常使用它,那么重新定义可能更有意义(IMO)draw_networkx_nodes实际上将 kwargs 传递给scatter。但以上will work.

要完全删除标记边缘,只需将颜色设置为None代替'r'.

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

如何修改networkx中节点的轮廓颜色? 的相关文章

  • 此 TypeError 消息中提到的“代码对象”是什么?

    在尝试使用Python时exec声明 我收到以下错误 TypeError exec arg 1 must be a string file or code object 我不想传递字符串或文件 但什么是代码对象 如何创建一个 创建代码对象的
  • 在python中将数据库表写入文件的最快方法

    我正在尝试从数据库中提取大量数据并将其写入 csv 文件 我正在尝试找出最快的方法来做到这一点 我发现在 fetchall 的结果上运行 writerows 比下面的代码慢 40 with open filename a as f writ
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 如何过滤 Pandas GroupBy 对象并获取 GroupBy 对象?

    当对 Pandas groupby 操作的结果执行过滤时 它返回一个数据帧 但假设我想执行进一步的分组计算 我必须再次调用 groupby 这似乎有点绕 有更惯用的方法吗 EDIT 为了说明我在说什么 我们无耻地从 Pandas 文档中窃取
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • 协程从未被等待

    我正在使用一个简单的上下文管理器 其中包含一个异步循环 class Runner def init self self loop asyncio get event loop def enter self return self def e
  • 如何确保 re.findall() 停止在正确的位置?

    这是我的代码 a import re re findall r lt title gt lt title gt a 结果是 title aaa
  • 类型错误:需要二进制或 unicode 字符串,得到 618.0

    I ve been trying to implement this ML Linear Model into my dataset https www tensorflow org tutorials estimator linear L
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • Paste.httpserver 并通过 HTTP/1.1 Keep-alive 减慢速度;使用 httperf 和 ab 进行测试

    我有一个基于paste httpserver 的Web 服务器作为HTTP 和WSGI 之间的适配器 当我使用 httperf 进行性能测量时 如果每次使用 num conn 启动一个新请求 我每秒可以执行超过 1 000 个请求 如果我使
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • 两个不同长度的数据帧的列之间的余弦相似度?

    我在 df1 中有文本列 在 df2 中有文本列 df2 的长度将与 df1 的长度不同 我想计算 df1 text 中每个条目与 df2 text 中每个条目的余弦相似度 并为每场比赛给出分数 输入样本 df1 mahesh suresh
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • Python 中维基百科 API 中的 DisambiguationError 和 GuessedAtParserWarning

    我想获得维基百科与搜索词相关的可能且可接受的名称列表 在这种情况下是 电晕 当输入以下内容时 print wikipedia summary Corona 这给出了以下输出 home virej local lib python3 8 si
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • ODP.NET是否需要安装Oracle客户端

    我必须从 NET 代码连接 Oracle 11g DB 为此 我安装了 ODP NET 但在阅读了一些论坛帖子后 我意识到我也需要安装 Oracle 客户端 真的吗 我看到 Oracle 客户端的大小为 ca 2GB 我真的需要安装这么大的
  • ConcurrentMap.remove() 是否在 get() 返回 null 之前提供happens-before 边?

    调用之前线程中是否有操作ConcurrentMap remove 保证发生在之前看到从另一个线程删除后的操作 文档 https docs oracle com javase 8 docs api java util concurrent p
  • 谷歌地图API只返回城市?

    我正在尝试使用 Google 地图 API 仅从 json 请求返回城市 https maps googleapis com maps api place autocomplete json input green 20lanes type
  • Spyder - UMD 已删除:模块

    我已经用 python 闲逛了大约一个月了 有些事情困扰着我 我使用 python x y 工具包 它附带了简洁的 Spyder IDE 我的问题涉及 Spyder 的 UMD 用户模块删除器 I found this http mcsp
  • ZonedDateTime.parse 不适用于解析 am 或 pm 时间

    我正在学习java 试图构建一个工具 根据用户输入 时间 时区A和时区B的输入 将特定时间从时区A转换为时区B 这是关于该工具以特定格式收集时间并将其转换为 ZonedDateTime 对象的部分 import java time Zone
  • 仅当总计数小于阈值时才将行插入 SQL Server 表中

    我正在使用 SQL Server 2012 我有一个存储用户的表 允许的最大用户数为 100 万 我有一个正在注册用户的存储过程 当我插入时 我想确保 users 表中的总行数不会超过 100 万 我更愿意使用允许最大并发性的方法 我相信我
  • 创建适用于 Windows 的用户和访问规则 Github

    我刚刚使用安装了 Githttp windows github com http windows github com 它似乎安装正确 但我无法创建新用户和访问控制设置来访问存储库 我试图查看文档 但不包含类似的内容 我不确定 Window
  • 在 EJS 中循环 JSON

    我在下面的 EJS 中有代码 tr td td tr 行的输出是正确的 是一个由 3 个对象组成的数组 每个对象都有属性 id 名称等 我可以操作该行来填充 JS 中的表 但是 我想知道是否有办法可以按照上述方式完成它 当我运行上面的代码时
  • 以编程方式停止并重新启动 Express 服务器(以更改端口)

    我希望能够基本上更改我的 Express 应用程序正在运行的端口 我试过了 server on close function server listen 3000 server listen 8080 server close 这会返回一个
  • 当推送到github时,为什么git不要求我输入用户名和密码?

    这可能是个愚蠢的问题 但我通过搜索找不到任何关于此的信息 也许 这是一个愚蠢的问题 我已将我的代码存储在 github 中 2小时前 我想更新存储库中的代码 但我的本地没有该代码 所以我克隆了它 修改了代码 然后推送了它 这时候git提示我
  • 如何以编程方式设置 ASP.NET ReportViewer 控件的数据源?

    如何以编程方式设置 ASP NET ReportViewer 控件的数据源 我有一个 VS 2008 ReportViewer 控件 想要在几个不同的报告之间切换 我可以通过设置报表源和刷新控件来切换报表 但我看不到在哪里设置数据源 每个报
  • 如何在 Android 布局中创建覆盖按钮

    我想创建一个将在两个布局之间叠加的按钮 我正在使用线性布局并为其添加适当的权重 附上屏幕截图以供参考 这是我的 XML 标签 xml
  • ZeroMQ 中的 N 到 N 异步模式?

    尽管我阅读了该指南 但我找不到执行以下操作的方法 我们有n个出版商 我们有 m 个订户 每个订阅者订阅某种类型的消息 一个发布者可以发送多种消息 多个发布者可以发出相同类型的消息 如何在 0MQ 中创建 N 到 N 或 N 到 1 到 N
  • GOF 和 GRASP 设计模式有什么区别

    我真的很困惑 GOF 和 GRASP 模式之间的区别 甚至两者都有助于改进面向对象的实践 简答 GoF被提到设计模式 And GRASP are 设计原则 设计原则比设计模式更抽象 长答案 软件工程的主要目的是开发合适的软件 SDLC ht
  • 如何将每个方面的总样本量添加到geom_histogram?

    I want to add total sample size of each facet to geom histogram Expect output as below After read this post https stacko
  • `mut a: &T` 和 `a: &mut T` 有什么区别? [复制]

    这个问题在这里已经有答案了 有人可以解释一下这两者之间有什么区别以及什么时候mut a T最常用 Rust 中的函数参数和 let 绑定是正确的模式 就像左边的那些 gt 匹配 除了 let 和参数模式必须是无可辩驳的 即它们必须始终匹配
  • 如何在不仅使用标准 Rust 库同时运行相同函数的情况下定期运行一组函数?

    我想使用 Rust 创建一个简单的调度程序 以便在定义的时间运行多个并发函数 但如果它们尚未完成 则不要启动更多函数 例如 如果定义的间隔为一秒 则调度程序应运行这些函数 并且如果先前的函数尚未返回 则不再启动更多函数 目标是防止多次运行相
  • ArrayList:查找第 n 次出现的整数

    查找 ArrayList 中第 n 次出现的数字的最佳方法是什么 我已经知道什么了 To find 最后一个索引 https docs oracle com javase 8 docs api java util ArrayList htm
  • 检查位于页面底部附近/底部

    我需要检查某个元素距离页面底部是否为 x 像素 以动态加载新内容 目前 即使栏位于底部 scrollTop 和高度也不匹配 允许使用 jquery 尽管基本的 javascript 会更有帮助 您可能想尝试以下操作 仅在 Firefox 3
  • 如何修改networkx中节点的轮廓颜色?

    我对 networkx 和使用 matplotlib pyplot 绘图相对较新 并且想知道如何修改节点轮廓的颜色 或其他属性 例如权重 我所说的 轮廓 并不是指两个节点之间的弧线或边缘 而是指两个节点之间的弧线或边缘 我的意思是圆圈周围的