Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中使用networkx绘制有向图?

如何在python中使用networkx绘制有向图?

提问于 2018-03-18 15:41:44
回答 2关注 0查看 16.8K

我有一些节点来自我想要映射到一个图上的脚本。在下面,我想用箭头从A到D,可能边缘也有颜色(红色或其他什么)。这基本上就像一个从A到D的路径,当所有其他节点都出现时,你可以想象每个节点都是城市,从A到D的旅行需要方向(箭头)。下面的代码构建了图

代码语言:txt
AI代码解释
复制
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_edges_from(
    [('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'),
     ('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')])

val_map = {'A': 1.0,
           'D': 0.5714285714285714,
           'H': 0.0}

values = [val_map.get(node, 0.25) for node in G.nodes()]

nx.draw(G, cmap = plt.get_cmap('jet'), node_color = values)
plt.show()

但我想要像图像中所显示的那样。

第一个图像的箭头头和红色的边缘在第二个图像上。谢谢

回答 2

月挽云岫

回答已采纳

发布于 2018-03-18 23:53:59

用箭头充分充实示例,只用于红色边缘:

代码语言:txt
AI代码解释
复制
import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()
G.add_edges_from(
    [('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'),
     ('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')])

val_map = {'A': 1.0,
           'D': 0.5714285714285714,
           'H': 0.0}

values = [val_map.get(node, 0.25) for node in G.nodes()]

# Specify the edges you want here
red_edges = [('A', 'C'), ('E', 'C')]
edge_colours = ['black' if not edge in red_edges else 'red'
                for edge in G.edges()]
black_edges = [edge for edge in G.edges() if edge not in red_edges]

# Need to create a layout when doing
# separate calls to draw nodes and edges
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, cmap=plt.get_cmap('jet'), 
                       node_color = values, node_size = 500)
nx.draw_networkx_labels(G, pos)
nx.draw_networkx_edges(G, pos, edgelist=red_edges, edge_color='r', arrows=True)
nx.draw_networkx_edges(G, pos, edgelist=black_edges, arrows=False)
plt.show()

如此逝水流年

发布于 2018-03-19 01:14:34

代码语言:txt
AI代码解释
复制
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import pylab

G = nx.DiGraph()

G.add_edges_from([('A', 'B'),('C','D'),('G','D')], weight=1)
G.add_edges_from([('D','A'),('D','E'),('B','D'),('D','E')], weight=2)
G.add_edges_from([('B','C'),('E','F')], weight=3)
G.add_edges_from([('C','F')], weight=4)


val_map = {'A': 1.0,
                   'D': 0.5714285714285714,
                              'H': 0.0}

values = [val_map.get(node, 0.45) for node in G.nodes()]
edge_labels=dict([((u,v,),d['weight'])
                 for u,v,d in G.edges(data=True)])
red_edges = [('C','D'),('D','A')]
edge_colors = ['black' if not edge in red_edges else 'red' for edge in G.edges()]

pos=nx.spring_layout(G)
nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels)
nx.draw(G,pos, node_color = values, node_size=1500,edge_color=edge_colors,edge_cmap=plt.cm.Reds)
pylab.show()

和开发者交流更多问题细节吧,去 写回答
相关文章
networkx之图遍历和图绘制
例如在读取football数据时,其labels都是节点的英文名称,这样在处理图数据时不是很方便,往往报错,我们通常习惯处理节点的编号从1开始,可以建立label-id的反向索引,如果处理图数据时只需要编号id,可以将labels属性设置为id,如果之后还需要查询,可返回反向索引字典
全栈程序员站长
2022/08/25
2K0
networkx之图遍历和图绘制
❤️ Python 利用NetworkX绘制精美网络图 ❤️
原文链接:https://yetingyun.blog.csdn.net/article/details/107830112 创作不易,未经作者允许,禁止转载,更勿做其他用途,违者必究。
叶庭云
2022/05/09
2.6K0
❤️ Python 利用NetworkX绘制精美网络图 ❤️
Python数据分析 利用NetworkX绘制网络图
NetworkX 是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。networkx支持创建简单无向图、有向图和多重图;内置许多标准的图论算法,节点可为任意数据;支持任意的边值维度,功能丰富。主要用于创造、操作复杂网络,以及学习复杂网络的结构、动力学及其功能。用于分析网络结构,建立网络模型,设计新的网络算法,绘制网络等等。
叶庭云
2020/09/17
8K0
Python数据分析    利用NetworkX绘制网络图
有向图----有向图的实现
术语定义: 一个顶点的出度为由该顶点指出的边的总数 一个顶点的入度为指向该顶点的边的总数 一条有向边的第一个顶点称为它的头,第二个顶点称为它的尾 数据结构: 使用邻接表来表示有向图,其中v->w表示为顶点v对应的邻接链表中包含一个w顶点。 有向图API: public class Digraph Digraph(int V)        创建一个含有V个顶点但不含有边的有向图 int V()        顶点数 int E()        边数 void addEdge(int v,int
SuperHeroes
2018/05/30
1.6K0
加权有向图----加权有向图的实现
可以对比加权无向图的实现。 加权有向边API: public class DirectedEdge DirectedEdge(int v,int w,double weight)         double weight()        边的权重 int form()        指出这条边的顶点 int to()        这条边指向的顶点 String toString()        对象的字符串表示 实现: public class DirectedEdge { pri
SuperHeroes
2018/05/30
1.7K0
有向图的环和有向无环图
本篇主要分享关于有向图的环和有向无环图(DAG,估计做大数据的同学到处都可以看到),所以相关概念我就不做详细介绍了。
大数据和云计算技术
2018/08/01
1.8K0
有向图的环和有向无环图
如何在R中绘制树图(TreeMap)
本文介绍了如何利用R语言中的Treemap函数绘制树图,并给出了一个实例,包括使用安装包、设定颜色范围、边框颜色、节点大小、填充颜色等参数。同时还介绍了两种方法,一是通过aggregate函数对数据进行分组,二是通过手动设置index和vSize、vColor、type等参数来绘制树图。
Erin
2018/01/09
5.7K0
如何在R中绘制树图(TreeMap)
使用NetworkX绘制深度神经网络结构图(Python)
本文将展示如何利用Python中的NetworkX模块来绘制深度神经网络(DNN)结构图。
不脱发的程序猿
2021/01/20
3.1K0
使用Python绘制雷达图
import numpy as np import matplotlib.pyplot as plt #标签 labels = np.array(['3℃','5℃','6℃','3℃','1℃','3℃','3℃','2℃']) #数据个数 dataLenth = 8 #数据 data = np.array([3,5,6,3,1,3,3,2]) angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False) data = np.concatenate((data, [data[0]]))  angles = np.concatenate((angles, [angles[0]]))  fig = plt.figure() ax = fig.add_subplot(111, polar=True) ax.plot(angles, data, 'ro-', linewidth=2) ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei") ax.set_title("温度变化雷达图", va='bottom', fontproperties="SimHei") ax.grid(True) plt.show()
py3study
2020/01/08
1.4K0
使用Python绘制雷达图
使用Python绘制点击图、热图
via: http://blog.csdn.net/wenyusuran/article pyHeatMap是一个使用Python生成热图的库,基本代码是我一年多之前写的,最近把它从项目中抠出来做成一个独立的库并开源。(https://github.com/oldj/pyheatmap) 可以直接下载源码安装最新的版本,也可以通过pip或easy_install安装稳定的发布版: 1 2 3 4 5pip install pyheatmap # 或者 easy_install pyheatmap p
机器学习AI算法工程
2018/03/14
3.4K0
使用Python绘制点击图、热图
有向图,无向图,网络图,加入权重。
import matplotlib.pyplot as plt import networkx as nx H = nx.path_graph(10) G.add_nodes_from(H) nx.draw(G, with_labels=True) plt.show() G=nx.Graph() G.add_edges_from([(1,2),(1,3),(2,4),(2,5),(3,6),(4,8),(5,8),(3,7)]) nx.draw(G, with_labels=True, edge_co
裴来凡
2022/05/28
1.1K0
有向图,无向图,网络图,加入权重。
networkx中的对象的使用
在开发过程中,nx的节点是我自己定义的字典,由于业务需求,我需要将其抽象成一个对象,下面来讲讲我的具体操作流程。
从不摸鱼的van
2023/10/10
3580
有向图----有向环检测和拓扑排序
上一篇:有向图的深度优先和广度优先遍历 优先级限制下的调度问题:给定一组需要完成的任务,以及一组关于任务完成的先后次序的优先级限制。在满足限制条件的前提下应该如何安排并完成所有任务? 拓扑排序:给定一幅有向图,将所有顶点排序,使得所有的有向边均从排在前面的元素指向排在后面的元素(或者说明无法做到这一点)。 优先级限制下不应该存在有向环,一个优先级限制的问题如果存在有向环,那么这个问题 肯定是无解的。 先来解决有向环检测问题: 采用深度优先遍历来解决这个问题:用一个栈表示“当前”正在遍历的有向路径上的顶点。一
SuperHeroes
2018/05/30
3.5K3
判断有向图是否有圈
1. 拓扑排序 拓扑排序是对有向无圈图的顶点的一种排序:如果存在一条vi到vj的路径,则vj排在vi后面(因为只要满足这个特性就是拓扑序列,所以它不一定是唯一的)。比如在众多的大学课程中,有些课有先修课,我们可以将其抽象为拓扑排序,有向边(v, w)表明课程v必须安排在w之前,否则课程w就无法进行。我们可以想象所有的课程以及课与课之间的关系可以用一个图来表示,而拓扑排序就可以知道课程安排的顺序。然而,如果图存在圈,就没有拓扑序列。比如如果要上课程A必须上课程B,要上课程B必须上课程C,而要上课程C必须上课程
llhthinker
2018/01/24
3.1K0
7.5 有向无环图
1、一个无环的有向图称做有向无环图(directed acycline graph),简称DAG图,DAG图是一类较有向树更一般的特殊有向图。
小林C语言
2020/12/12
1.5K0
7.5 有向无环图
有向无环图检测
本文介绍了有向无环图(DAG)的相关概念和应用,包括弹性分布式数据集(RDD)和DAG图理论。文章还通过一个例子说明了DAG图的应用,并介绍了如何检测有向图是否存在环路。最后,文章展望了DAG图在机器学习领域的应用前景。","label":"技术社区
企鹅号小编
2018/01/04
2.7K0
有向无环图检测
7.5 有向无环图
1、一个无环的有向图称做有向无环图(directed acycline graph),简称DAG图,DAG图是一类较有向树更一般的特殊有向图。
小林C语言
2019/07/12
1.3K0
有向图的拓扑排序
拓扑排序是可以用图模拟的另一种操作方式。 他可用于表示一种情况,即某些项目或事件必须按照某种顺序排列发生。 基本思想: 步骤1、找到一个没有后继的顶点 步骤2、从图中删除这个顶点,在列表的前面插入顶点标记 以下为java源码: /** * @author hasee * @TIME 2017年5月4日 * 有向图的拓补排序 * 步骤1、找到一个没有后继的顶点 * 步骤2、从图中删除这个顶点,在列表的前面插入顶点标记 */ public class TopoApp { //测试
用户1418372
2018/10/10
1.2K0
Python绘制旭日图_python绘制散点图
参考链接:https://blog.csdn.net/m0_67790374/article/details/124137448
全栈程序员站长
2022/11/09
1.5K0
Python绘制旭日图_python绘制散点图
启动优化 - 有向无环图
说到 Android 启动优化,大家第一时间可能会想到异步加载。将耗时任务放到子线程加载,等到所有加载任务加载完成之后,再进入首页。
用户9239674
2021/12/22
1.6K0

相似问题

python绘制气象图问题?

1182

录制中如设置gif动图?

0254

使用R如何在中的同一图中绘制两个图?

2687

networkx如何获取包含某条边的最大权重子图?

0112

分析图是怎么绘制出来的?

0135
相关问答用户
某公司 | 程序员擅长1个领域
腾讯云TDP | 先锋会员擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档