是否可以使用graphviz模块在球拍框架(GUI)中绘制图形? 如果可能的话,是否会有人展示如何使用的教程? 感谢' S
答案 0 :(得分:2)
以下是我要做的事情:
system
在生成png文件的文件上运行grapviz 有关实际代码,请参阅:https://github.com/wangkuiyi/graphviz-server
请注意,Stephen Chang的图表库支持生成点文件:http://pkg-build.racket-lang.org/doc/graph/index.html#%28part._.Graphviz%29
更新
为了制作图形编辑器,您可以将图形数据保存在文件中,然后让Graphviz以点格式输出布局信息:http://www.graphviz.org/doc/info/output.html#d:xdot1.4 解析输出文件,然后在屏幕上重绘图形。
答案 1 :(得分:0)
这是一个例子。您必须安装点程序。
#lang racket
(require graph)
(require racket/gui/base)
(define dot-command "/usr/local/bin/dot -Tpng ~a >~a")
;; Given a graph, use dot to create a png and return the path to the png
(define (make-graphviz-png g)
(let ([dot-string (graphviz g #:colors (coloring/brelaz g))]
[dot-file (make-temporary-file "example~a.dot")]
[png-file (make-temporary-file "example~a.png")])
(display-to-file dot-string dot-file #:exists 'replace)
(system (format dot-command dot-file png-file))
png-file))
;; The graph
(define test-graph (unweighted-graph/directed '((hello world))))
;; Generate the png from the graph
(define bitmap (read-bitmap (make-graphviz-png test-graph)))
;; Display in a frame -- see https://stackoverflow.com/questions/5355251/bitmap-in-dr-racket
(define f (new frame% [label "Your Graph"]))
(new message% [parent f] [label bitmap])
(send f show #t)
答案 2 :(得分:0)
您可以使用graphviz软件包。如果要直接使用点语,则可以使用点->点选功能。另外,您可以使用digraph-> pict,通过允许使用Racket picts作为节点形状来使点更加强大。