Ipython NetworkX:如何使用tex符号绘制标签节点/边?
非常简单,我试图绘制一个简单的状态机,如下所示: 我对任何形式的绘图都持开放态度,允许灵活处理此类绘图 这就是我到目前为止所做的:Ipython NetworkX:如何使用tex符号绘制标签节点/边?,ipython,ipython-notebook,graphviz,networkx,Ipython,Ipython Notebook,Graphviz,Networkx,非常简单,我试图绘制一个简单的状态机,如下所示: 我对任何形式的绘图都持开放态度,允许灵活处理此类绘图 这就是我到目前为止所做的: import networkx as nx from nxpd import draw G = nx.MultiDiGraph(with_labels=False,rankdir='LR') G.graph['dpi'] = 120 G.add_node(1,label=r"$\sigma_1$",shape = 'circle') G.add_node(2,la
import networkx as nx
from nxpd import draw
G = nx.MultiDiGraph(with_labels=False,rankdir='LR')
G.graph['dpi'] = 120
G.add_node(1,label=r"$\sigma_1$",shape = 'circle')
G.add_node(2,label=r"$\sigma_2$",shape = 'circle')
G.add_edge(1,1,headport='nw',tailport='sw',label='sp')
G.add_edge(2,2,headport='se',tailport='ne')
G.add_edge(1,2,label='1-sp')
draw(G, show='ipynb')
这显然与我想做的大不相同
有几件事不起作用:
正在做一些奇怪的事情headport='nw',tailport='sw'
- 显然,
没有输出所需的基于tex的符号r“$\sigma\u 2$”
import matplotlib.pyplot as plt
import networkx as nx
%matplotlib inline
G=nx.MultiDiGraph()
pos = {0:(100,100),1:(0,0)}
G.add_node(0)
G.add_node(1)
G.add_edge(0,0)
G.add_edge(0,1)
G.add_edge(1,0)
labels={}
labels[0]=r'$\sigma_1$'
labels[1]=r'$\sigma_2$'
nx.draw_networkx_labels(G,pos,labels)
plt.axis('off')
plt.show() # display
出于某种原因,它会输出一个空白屏幕?我不熟悉
nxpd
(而且import nxpd
对我不起作用,所以我的计算机上没有它),所以我正在使用nx
命令
import networkx as nx
G = nx.MultiDiGraph(with_labels=False,rankdir='LR')
G.graph['dpi'] = 120
G.add_node(1,label=r"$\sigma_1$",shape = 'circle')
G.add_node(2,label=r"$\sigma_2$",shape = 'circle')
G.add_edge(1,1,headport='nw',tailport='sw',label='sp')
G.add_edge(2,2,headport='se',tailport='ne')
G.add_edge(1,2,label='1-sp')
labels = {node:G.node[node]['label'] for node in G.nodes()}
nx.draw(G, with_labels=True, labels=labels)
import pylab
pylab.savefig('tmp.png')
(注意——这里没有出现自我边缘,但我想你知道如何修复。)
我认为您的最后一块代码输出一个空白屏幕的原因是因为这个已知的错误(不是networkx的错误)。如果您保存该图,标签将在那里。Hiyas,谢谢您的输入。我没有将其标记为答案,因为您提供的代码与我试图模仿的数字相差甚远(见上图)。