我想用pydot显示一个简单的图形.
我的问题是,有没有办法显示图形而不将其写入文件,因为目前我使用写入功能首先绘制,然后必须使用图像模块来显示文件.
但有没有什么方法可以直接在屏幕上打印图形而不保存?
另外作为一个更新,我想在同一个问题中问我观察到,当我使用图像模块的show命令时图像得到很快保存时,需要花费大量时间才能看到图像....有时候我得到错误,图像无法打开,因为它被删除或保存在不可用的位置,这是不正确的,因为我将它保存在我的桌面.....有谁知道发生了什么,是否有更快的方式得到图像加载.....
非常感谢....
当我将multigraph numpy邻接矩阵传递给networkx(使用from_numpy_matrix函数),然后尝试使用matplotlib绘制图形时,它会忽略多个边缘.
我怎么能让它画出多个边缘呢?
使用graphviz neato正确绘制以下多图(即平行边不重叠)以生成png(如本答案所示)
import networkx as nx
nx.MultiGraph ([(1,2),(1,2),(1,2),(3,1),(3,2)])
nx.write_dot(Gm,'multi.dot')
!neato -T png multi.dot > multi.png
Run Code Online (Sandbox Code Playgroud)
但是,使用Networkx的绘图功能并不能解决问题
nx.draw_graphviz(Gm,prog='neato')
Run Code Online (Sandbox Code Playgroud)
是否可以使用Networkx的draw方法防止重叠边缘?
谢谢
在多图中,每次调用*add_edge(a,b,weight = 1)*都会在节点a和b之间添加新的边.构建图形时,是否可以在再次找到a和b时修改此权重.现在我检查是否连接(a,b)或(b,a),然后必须删除边缘,并添加一个新边.在我看来,我应该只是能够更新重量.
注意:我确实需要多图,因为我在节点之间使用不同类型的边(使用键区分)
使用 Networkx,我有几个需要以不同方式显示的边。为此,我使用了连接样式,有些边是直线,有些是 Arc3。问题是每条边都有一个标签,并且标签不跟随这些样式中的边。
我借了一张图作为例子:
#!/usr/bin/env python3
import networkx as nx
import matplotlib.pyplot as plt
# Graph data
names = ['A', 'B', 'C', 'D', 'E']
positions = [(0, 0), (0, 1), (1, 0), (0.5, 0.5), (1, 1)]
edges = [('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('D', 'A')]
# Matplotlib figure
plt.figure('My graph problem')
# Create graph
G = nx.MultiDiGraph(format='png', directed=True)
for index, name in enumerate(names):
G.add_node(name, pos=positions[index])
labels = {}
for edge in edges:
G.add_edge(edge[0], edge[1])
labels[(edge[0], edge[1])] = …Run Code Online (Sandbox Code Playgroud) 我正在使用R中的图形.我目前正在使用igraph,我希望能够绘制图形的双向边缘"倒数边缘".到目前为止,我已经看到可以绘制"双向"图而不是倒数边,例如:E(1,3)和E(3,1)可能表示为双向边< - >,但是相反,我想绘制两个平行边,一个指向另一个||的相反方向 .在Rgraphviz中存在一个选项,当绘制"情节(rEG,recipEdges ="distinct")"时会产生这种情况,但我更喜欢情节在igraph上的样子.提前致谢.
networkx ×4
python ×4
matplotlib ×2
python-2.7 ×2
graph ×1
graphviz ×1
igraph ×1
nodes ×1
pydot ×1
r ×1