gv.3python 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. .TH gv 3python "06 December 2024"
  2. .SH NAME
  3. gv_python - graph manipulation in python
  4. .SH SYNOPSIS
  5. #!/usr/bin/python
  6. .br
  7. import sys
  8. .br
  9. import gv
  10. .SH USAGE
  11. .SH INTRODUCTION
  12. .B gv_python
  13. is a dynamically loaded extension for
  14. .B python
  15. that provides access to the graph facilities of
  16. .B graphviz.
  17. .SH COMMANDS
  18. .TP
  19. \fBNew graphs\fR
  20. .br
  21. .TP
  22. New empty graph
  23. .br
  24. \fIgraph_handle\fR \fBgv.graph\fR \fI(name);\fR
  25. .br
  26. \fIgraph_handle\fR \fBgv.digraph\fR \fI(name);\fR
  27. .br
  28. \fIgraph_handle\fR \fBgv.strictgraph\fR \fI(name);\fR
  29. .br
  30. \fIgraph_handle\fR \fBgv.strictdigraph\fR \fI(name);\fR
  31. .br
  32. .TP
  33. New graph from a dot-syntax string or file
  34. .br
  35. \fIgraph_handle\fR \fBgv.readstring\fR \fI(string);\fR
  36. .br
  37. \fIgraph_handle\fR \fBgv.read\fR \fI(string filename);\fR
  38. .br
  39. \fIgraph_handle\fR \fBgv.read\fR \fI(channel);\fR
  40. .br
  41. .TP
  42. Add new subgraph to existing graph
  43. .br
  44. \fIgraph_handle\fR \fBgv.graph\fR \fI(graph_handle, name);\fR
  45. .br
  46. .TP
  47. \fBNew nodes\fR
  48. .br
  49. .TP
  50. Add new node to existing graph
  51. .br
  52. \fInode_handle\fR \fBgv.node\fR \fI(graph_handle, name);\fR
  53. .br
  54. .TP
  55. \fBNew edges\fR
  56. .br
  57. .TP
  58. Add new edge between existing nodes
  59. .br
  60. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_node_handle, head_node_handle);\fR
  61. .br
  62. .TP
  63. Add a new edge between an existing tail node, and a named head node which will be induced in the graph if it doesn't already exist
  64. .br
  65. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_node_handle, head_name);\fR
  66. .br
  67. .TP
  68. Add a new edge between an existing head node, and a named tail node which will be induced in the graph if it doesn't already exist
  69. .br
  70. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_name, head_node_handle);\fR
  71. .br
  72. .TP
  73. Add a new edge between named tail and head nodes which will be induced in the graph if they don't already exist
  74. .br
  75. \fIedge_handle\fR \fBgv.edge\fR \fI(graph_handle, tail_name, head_name);\fR
  76. .br
  77. .TP
  78. \fBSetting attribute values\fR
  79. .br
  80. .TP
  81. Set value of named attribute of graph/node/edge - creating attribute if necessary
  82. .br
  83. \fIstring\fR \fBgv.setv\fR \fI(graph_handle, attr_name, attr_value);\fR
  84. .br
  85. \fIstring\fR \fBgv.setv\fR \fI(node_handle, attr_name, attr_value);\fR
  86. .br
  87. \fIstring\fR \fBgv.setv\fR \fI(edge_handle, attr_name, attr_value);\fR
  88. .br
  89. .TP
  90. Set value of existing attribute of graph/node/edge (using attribute handle)
  91. .br
  92. \fIstring\fR \fBgv.setv\fR \fI(graph_handle, attr_handle, attr_value);\fR
  93. .br
  94. \fIstring\fR \fBgv.setv\fR \fI(node_handle, attr_handle, attr_value);\fR
  95. .br
  96. \fIstring\fR \fBgv.setv\fR \fI(edge_handle, attr_handle, attr_value);\fR
  97. .br
  98. .TP
  99. \fBGetting attribute values\fR
  100. .br
  101. .TP
  102. Get value of named attribute of graph/node/edge
  103. .br
  104. \fIstring\fR \fBgv.getv\fR \fI(graph_handle, attr_name);\fR
  105. .br
  106. \fIstring\fR \fBgv.getv\fR \fI(node_handle, attr_name);\fR
  107. .br
  108. \fIstring\fR \fBgv.getv\fR \fI(edge_handle, attr_name);\fR
  109. .br
  110. .TP
  111. Get value of attribute of graph/node/edge (using attribute handle)
  112. .br
  113. \fIstring\fR \fBgv.getv\fR \fI(graph_handle, attr_handle);\fR
  114. .br
  115. \fIstring\fR \fBgv.getv\fR \fI(node_handle, attr_handle);\fR
  116. .br
  117. \fIstring\fR \fBgv.getv\fR \fI(edge_handle, attr_handle);\fR
  118. .br
  119. .TP
  120. \fBObtain names from handles\fR
  121. .br
  122. \fIstring\fR \fBgv.nameof\fR \fI(graph_handle);\fR
  123. .br
  124. \fIstring\fR \fBgv.nameof\fR \fI(node_handle);\fR
  125. .br
  126. \fIstring\fR \fBgv.nameof\fR \fI(attr_handle);\fR
  127. .br
  128. .TP
  129. \fBFind handles from names\fR
  130. .br
  131. \fIgraph_handle\fR \fBgv.findsubg\fR \fI(graph_handle, name);\fR
  132. .br
  133. \fInode_handle\fR \fBgv.findnode\fR \fI(graph_handle, name);\fR
  134. .br
  135. \fIedge_handle\fR \fBgv.findedge\fR \fI(tail_node_handle, head_node_handle);\fR
  136. .br
  137. \fIattribute_handle\fR \fBgv.findattr\fR \fI(graph_handle, name);\fR
  138. .br
  139. \fIattribute_handle\fR \fBgv.findattr\fR \fI(node_handle, name);\fR
  140. .br
  141. \fIattribute_handle\fR \fBgv.findattr\fR \fI(edge_handle, name);\fR
  142. .br
  143. .TP
  144. \fBMisc graph navigators returning handles\fR
  145. .br
  146. \fInode_handle\fR \fBgv.headof\fR \fI(edge_handle);\fR
  147. .br
  148. \fInode_handle\fR \fBgv.tailof\fR \fI(edge_handle);\fR
  149. .br
  150. \fIgraph_handle\fR \fBgv.graphof\fR \fI(graph_handle);\fR
  151. .br
  152. \fIgraph_handle\fR \fBgv.graphof\fR \fI(edge_handle);\fR
  153. .br
  154. \fIgraph_handle\fR \fBgv.graphof\fR \fI(node_handle);\fR
  155. .br
  156. \fIgraph_handle\fR \fBgv.rootof\fR \fI(graph_handle);\fR
  157. .br
  158. .TP
  159. \fBObtain handles of proto node/edge for setting default attribute values\fR
  160. .br
  161. \fInode_handle\fR \fBgv.protonode\fR \fI(graph_handle);\fR
  162. .br
  163. \fIedge_handle\fR \fBgv.protoedge\fR \fI(graph_handle);\fR
  164. .br
  165. .TP
  166. \fBIterators\fR
  167. .br
  168. .TP
  169. Iteration termination tests
  170. .br
  171. \fIbool\fR \fBgv.ok\fR \fI(graph_handle);\fR
  172. .br
  173. \fIbool\fR \fBgv.ok\fR \fI(node_handle);\fR
  174. .br
  175. \fIbool\fR \fBgv.ok\fR \fI(edge_handle);\fR
  176. .br
  177. \fIbool\fR \fBgv.ok\fR \fI(attr_handle);\fR
  178. .br
  179. .TP
  180. Iterate over subgraphs of a graph
  181. .br
  182. \fIgraph_handle\fR \fBgv.firstsubg\fR \fI(graph_handle);\fR
  183. .br
  184. \fIgraph_handle\fR \fBgv.nextsubg\fR \fI(graph_handle, subgraph_handle);\fR
  185. .br
  186. .TP
  187. Iterate over supergraphs of a graph (obscure and rarely useful)
  188. .br
  189. \fIgraph_handle\fR \fBgv.firstsupg\fR \fI(graph_handle);\fR
  190. .br
  191. \fIgraph_handle\fR \fBgv.nextsupg\fR \fI(graph_handle, subgraph_handle);\fR
  192. .br
  193. .TP
  194. Iterate over edges of a graph
  195. .br
  196. \fIedge_handle\fR \fBgv.firstedge\fR \fI(graph_handle);\fR
  197. .br
  198. \fIedge_handle\fR \fBgv.nextedge\fR \fI(graph_handle, edge_handle);\fR
  199. .br
  200. .TP
  201. Iterate over outedges of a graph
  202. .br
  203. \fIedge_handle\fR \fBgv.firstout\fR \fI(graph_handle);\fR
  204. .br
  205. \fIedge_handle\fR \fBgv.nextout\fR \fI(graph_handle, edge_handle);\fR
  206. .br
  207. .TP
  208. Iterate over edges of a node
  209. .br
  210. \fIedge_handle\fR \fBgv.firstedge\fR \fI(node_handle);\fR
  211. .br
  212. \fIedge_handle\fR \fBgv.nextedge\fR \fI(node_handle, edge_handle);\fR
  213. .br
  214. .TP
  215. Iterate over out-edges of a node
  216. .br
  217. \fIedge_handle\fR \fBgv.firstout\fR \fI(node_handle);\fR
  218. .br
  219. \fIedge_handle\fR \fBgv.nextout\fR \fI(node_handle, edge_handle);\fR
  220. .br
  221. .TP
  222. Iterate over head nodes reachable from out-edges of a node
  223. .br
  224. \fInode_handle\fR \fBgv.firsthead\fR \fI(node_handle);\fR
  225. .br
  226. \fInode_handle\fR \fBgv.nexthead\fR \fI(node_handle, head_node_handle);\fR
  227. .br
  228. .TP
  229. Iterate over in-edges of a graph
  230. .br
  231. \fIedge_handle\fR \fBgv.firstin\fR \fI(graph_handle);\fR
  232. .br
  233. \fIedge_handle\fR \fBgv.nextin\fR \fI(node_handle, edge_handle);\fR
  234. .br
  235. .TP
  236. Iterate over in-edges of a node
  237. .br
  238. \fIedge_handle\fR \fBgv.firstin\fR \fI(node_handle);\fR
  239. .br
  240. \fIedge_handle\fR \fBgv.nextin\fR \fI(graph_handle, edge_handle);\fR
  241. .br
  242. .TP
  243. Iterate over tail nodes reachable from in-edges of a node
  244. .br
  245. \fInode_handle\fR \fBgv.firsttail\fR \fI(node_handle);\fR
  246. .br
  247. \fInode_handle\fR \fBgv.nexttail\fR \fI(node_handle, tail_node_handle);\fR
  248. .br
  249. .TP
  250. Iterate over nodes of a graph
  251. .br
  252. \fInode_handle\fR \fBgv.firstnode\fR \fI(graph_handle);\fR
  253. .br
  254. \fInode_handle\fR \fBgv.nextnode\fR \fI(graph_handle, node_handle);\fR
  255. .br
  256. .TP
  257. Iterate over nodes of an edge
  258. .br
  259. \fInode_handle\fR \fBgv.firstnode\fR \fI(edge_handle);\fR
  260. .br
  261. \fInode_handle\fR \fBgv.nextnode\fR \fI(edge_handle, node_handle);\fR
  262. .br
  263. .TP
  264. Iterate over attributes of a graph
  265. .br
  266. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(graph_handle);\fR
  267. .br
  268. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(graph_handle, attr_handle);\fR
  269. .br
  270. .TP
  271. Iterate over attributes of an edge
  272. .br
  273. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(edge_handle);\fR
  274. .br
  275. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(edge_handle, attr_handle);\fR
  276. .br
  277. .TP
  278. Iterate over attributes of a node
  279. .br
  280. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(node_handle);\fR
  281. .br
  282. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(node_handle, attr_handle);\fR
  283. .br
  284. .TP
  285. \fBRemove graph objects\fR
  286. .br
  287. \fIbool\fR \fBgv.rm\fR \fI(graph_handle);\fR
  288. .br
  289. \fIbool\fR \fBgv.rm\fR \fI(node_handle);\fR
  290. .br
  291. \fIbool\fR \fBgv.rm\fR \fI(edge_handle);\fR
  292. .br
  293. .TP
  294. \fBLayout\fR
  295. .br
  296. .TP
  297. Annotate a graph with layout attributes and values using a specific layout engine
  298. .br
  299. \fIbool\fR \fBgv.layout\fR \fI(graph_handle, string engine);\fR
  300. .br
  301. .TP
  302. \fBRender\fR
  303. .br
  304. .TP
  305. Render a layout into attributes of the graph
  306. .br
  307. \fIbool\fR \fBgv.render\fR \fI(graph_handle);\fR
  308. .br
  309. .TP
  310. Render a layout to stdout
  311. .br
  312. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format);\fR
  313. .br
  314. .TP
  315. Render to an open file
  316. .br
  317. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format, channel fout);\fR
  318. .br
  319. .TP
  320. Render a layout to an unopened file by name
  321. .br
  322. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format, string filename);\fR
  323. .br
  324. .TP
  325. Render to a string result
  326. .br
  327. \fIstring\fR \fBgv.renderresult\fR \fI(graph_handle ing, string format);\fR
  328. .br
  329. \fBgv.renderresult\fR \fI(graph_handle, string format, string outdata);\fR
  330. .br
  331. .TP
  332. Render to an open channel
  333. .br
  334. \fIbool\fR \fBgv.renderchannel\fR \fI(graph_handle, string format, string channelname);\fR
  335. .br
  336. .TP
  337. Render a layout to a malloc'ed string, to be free'd by the caller
  338. .br
  339. .TP
  340. (deprecated - too easy to leak memory)
  341. .br
  342. .TP
  343. (still needed for "eval [gv::renderdata $G tk]" )
  344. .br
  345. \fIstring\fR \fBgv.renderdata\fR \fI(graph_handle, string format);\fR
  346. .br
  347. .TP
  348. Writing graph back to file
  349. .br
  350. \fIbool\fR \fBgv.write\fR \fI(graph_handle, string filename);\fR
  351. .br
  352. \fIbool\fR \fBgv.write\fR \fI(graph_handle, channel);\fR
  353. .br
  354. .TP
  355. Graph transformation tools
  356. .br
  357. \fIbool\fR \fBgv.tred\fR \fI(graph_handle);\fR
  358. .br
  359. .SH KEYWORDS
  360. graph, dot, neato, fdp, circo, twopi, python.