用于将ascii艺术制作成网络图的python库。
asciigraf的Python项目详细描述
asciigraf是一个python库,它将网络的ascii图转换为 网络对象。它返回一个networkx 输入文本中每个字母数字元素的节点图;节点 在图中连接以匹配图中表示的边 通过-、/、\和|。
安装
可以使用pip从pypi安装ascigraf:
~/$ pip install asciigraf
用法
asciigraf需要一个包含二维ascii图的字符串。节点可以是 由A-Z,a-z,0-9中的字符组成的字母数字字符串, 和_, {, }。边可以由-、/、\和|组成。
importasciigrafnetwork=asciigraf.graph_from_ascii(""" NodeA----- | |---NodeB """)print(network)>>><networkx.classes.graph.Graphat0x7f24c3a8b470>print(network.edges())>>>[('NodeA','NodeB')]print(network.nodes())>>>['NodeA','NodeB']
networkx提供了将数据附加到节点和边以及ascigraf的工具 以多种方式利用它们;在下面的示例中,您可以看到 asciigraf使用这个将x, yposition元组附加到每个节点 指示每个节点在(x,y)平面上的位置 开始(0,0在左上角)。它还附加了一个length属性 到与该边中的字符数匹配的每个边,以及 作为每个字符的位置列表,边
print(network.nodes(data=True))>>>[('NodeA',{'position':(10,1)}),('NodeB',{'position':(23,3)})]print(network.edges(data=True))>>>[('NodeA','NodeB',OrderedDict([('length',10),'points',[...]))]print(network.edge['NodeA']['NodeB']['points'])>>>[(15,1),(16,1),(17,1),(18,1),(19,1),(19,2),(19,3),(20,3),(21,3),(22,3)]
asciigraf还允许您使用内嵌标签注释图形的边- 用括号表示。标签的内容将贴在边缘上 用属性名label绘制它。
network=asciigraf.graph_from_ascii(""" A---(nuts)----B----(string)---C | | | D---(string)----E """)print(network.get_edge_data("A","B")["label"])>>>nutsprint(network.get_edge_data("B","C")["label"])>>>stringprint(network.get_edge_data("D","E")["label"])>>>stringprint(hasattr(network.get_edge_data("B","D"),"label"))>>>False
玩得开心!
importasciigrafnetwork=asciigraf.graph_from_ascii(""" s---p----1---nx / | | / | 0---f 6l-a c-- / | \--k / ua | 9e q \ | / \-r7z jud \ | m y \ | v-ow """)