我有以下生成的数据:
graph test123 {"{}" -- "--plus"
"{}" -- "{.}"
"{}" -- "{/}"
"{}" -- "{//}"
"{}" -- "{/.}"
"{}" -- "{#}"
"{}" -- "{%}"
"{}" -- "{n}"
"{}" -- "{=perl expression=}"
"{n}" -- "{n.}"
"{n}" -- "{n/}"
"{n}" -- "{n//}"
"{n}" -- "{n/.}"
"{n.}" -- "{.}"
"{n/}" -- "{/}"
"{n//}" -- "{//}"
"{n/.}" -- "{/.}"
"{=perl expression=}" -- "--rpl"
"{=perl expression=}" -- "--parens"
"{=perl expression=}" -- "{=n perl expression=}"
"{=n perl expression=}" -- "{n}"
":::" -- "--arg-sep"
":::" -- "-a"
":::" -- "::::"
":::" -- ":::+"
":::" -- "::::+"
":::" -- "--link"
":::+" -- "::::+"
":::+" -- "--link"
"::::" -- "-a"
"::::" -- "::::+"
"::::" -- "--link"
"::::+" -- "-a"
"::::+" -- "--link"
"--null" -- "--delimiter"
"--arg-file" -- "--link"
"--arg-file" -- "{n}"
"--arg-file" -- "::::"
"--arg-file" -- "::::+"
"--arg-file" -- ":::"
"--arg-file-sep" -- "::::"
"--basefile" -- "--sshlogin"
"--basefile" -- "--transfer"
"--basefile" -- "--return"
"--basefile" -- "--cleanup"
"--basefile" -- "--workdir"
"--basenamereplace" -- "{/}"
"--basenameextensionreplace" -- "{/.}"
"--bin" -- "--group-by"
"--bin" -- "--round-robin"
"--bin" -- "--shard"
"--bg" -- "--fg"
"--bg" -- "man sem"
"--block" -- "-N"
"--block" -- "--pipe"
"--block" -- "--pipe-part"
"--block" -- "--round-robin"
"--blocktimeout" -- "--pipe"
"--cat" -- "--pipe"
"--cat" -- "--pipe-part"
"--cat" -- "--fifo"
"--cleanup" -- "--transfer"
"--cleanup" -- "--transferfile"
"--cleanup" -- "--sshlogin"
"--cleanup" -- "--return"
"--colsep" -- "--csv"
"--colsep" -- "{n}"
"--colsep" -- "--trim"
"--colsep" -- "--link"
"--compress" -- "--compress-program"
"--csv" -- "--pipe"
"--csv" -- "--link"
"--csv" -- "{n}"
"--ctag" -- "--tag"
"--ctagstring" -- "--ctag"
"--ctagstring" -- "--tagstring"
"--delay" -- "--retries"
"--delimiter" -- "--colsep"
"--dirnamereplace" -- "{//}"
"--dry-run" -- "-v"
"--env" -- "--record-env"
"--env" -- "--session"
"--env" -- "--sshlogin"
"--env" -- "command"
"--env" -- "env_parallel"
"--eta" -- "--bar"
"--eta" -- "--progress"
"--fg" -- "man sem"
"--fifo" -- "--pipe"
"--fifo" -- "--pipe-part"
"--filter-hosts" -- "--sshloginfile"
"--filter-hosts" -- "--sshlogin"
"--filter-hosts" -- "--retries"
"--group" -- "--line-buffer"
"--group" -- "--ungroup"
"--group-by" -- "--pipe"
"--group-by" -- "--pipe-part"
"--group-by" -- "--shard"
"--group-by" -- "--round-robin"
"--header" -- "--colsep"
"--header" -- "--pipe"
"--header" -- "--pipe-part"
"--hostgroups" -- "--sshlogin"
"--hostgroups" -- "$PARALLEL_HOSTGROUPS"
"--hostgroups" -- "$PARALLEL_ARGHOSTGROUPS"
"--joblog" -- "--resume"
"--joblog" -- "--resume-failed"
"--jobs" -- "--use-cores-instead-of-threads"
"--jobs" -- "--use-sockets-instead-of-threads"
"--keep-order" -- "--group"
"--keep-order" -- "--line-buffer"
"-L" -- "-N"
"-L" -- "-l"
"-L" -- "--block"
"-L" -- "-X"
"-L" -- "-m"
"-L" -- "--xargs"
"-L" -- "--pipe"
"--limit" -- "--memfree"
"--limit" -- "--load"
"--line-buffer" -- "--ungroup"
"--xapply" -- "--header"
"--xapply" -- ":::+"
"--xapply" -- "::::+"
"--load" -- "--jobs"
"--controlmaster" -- "--ssh"
"--controlmaster" -- "--sshlogin"
"-m" -- "-X"
"-m" -- "--xargs"
"--memfree" -- "--termseq"
"--memfree" -- "--retries"
"--memfree" -- "--memsuspend"
"--max-replace-args" -- "--pipe"
"--max-replace-args" -- "--block"
"--max-replace-args" -- "-m"
"--max-replace-args" -- "-X"
"--nonall" -- "--onall"
"--nonall" -- "--sshlogin"
"--onall" -- "--sshlogin"
"--output-as-files" -- "--results"
"--pipe" -- "--recstart"
"--pipe" -- "--recend"
"--pipe" -- "--pipe-part"
"--pipe" -- "-N"
"--plus" -- "--rpl"
"--progress" -- "--bar"
"--parens" -- "--rpl"
"--noswap" -- "--memfree"
"--noswap" -- "--memsuspend"
"--record-env" -- "--session"
"--recstart" -- "--regexp"
"--recstart" -- "--remove-rec-sep"
"--results" -- "--files"
"--results" -- "--tag"
"--results" -- "--header"
"--results" -- "--joblog"
"--resume" -- "--results"
"--resume" -- "--resume-failed"
"--resume" -- "--retries"
"--resume-failed" -- "--retry-failed"
"--resume-failed" -- "--retries"
"--retry-failed" -- "--joblog"
"--retry-failed" -- "--resume"
"--retry-failed" -- "--retries"
"--retries" -- "--termseq"
"--retries" -- "--sshlogin"
"--return" -- "--transfer"
"--return" -- "--transferfile"
"--return" -- "--sshlogin"
"--return" -- "--workdir"
"--round-robin" -- "--shard"
"--max-chars" -- "-X"
"--max-chars" -- "-m"
"--max-chars" -- "--xargs"
"--max-chars" -- "--max-line-length-allowed"
"--max-chars" -- "--show-limits"
"--show-limits" -- "--max-line-length-allowed"
"--semaphore" -- "man sem"
"--semaphore" -- "--bg"
"--semaphore" -- "--fg"
"--semaphore" -- "--semaphorename"
"--semaphore" -- "--semaphoretimeout"
"--semaphore" -- "--wait"
"--semaphorename" -- "man sem"
"--semaphoretimeout" -- "man sem"
"--ssh" -- "--sshlogin"
"--sshlogin" -- "--transferfile"
"--sshlogin" -- "--trc"
"--sshlogin" -- "--sshloginfile"
"--sshlogin" -- "--workdir"
"--tag" -- "--tagstring"
"--tmpdir" -- "--compress"
"--timeout" -- "--termseq"
"--verbose" -- "-v"
"--verbose" -- "-p"
"--transferfile" -- "--workdir"
"--transferfile" -- "--basefile"
"--trc" -- "--transfer"
"--trc" -- "--return"
"--trc" -- "--cleanup"
"--extensionreplace" -- "{.}"
"-v" -- "-t"
"--wait" -- "man sem"
"--xargs" -- "-X"
}
它生成的图形在技术上是正确的,但是视觉上不太悦目。
我尝试过使用dot
、neato
、fdp
和sfdp
,其中每种方法都失败了:
最不糟糕的解决方案来自dot
:它完美地实现了前两个目标,如果我能够禁用它的分层模式并让它更自由地放置节点,那么目标3+4似乎可以得到很大的改进。
neato
做的更好的不是浪费纸张,而是垃圾工作的前两个目标。
这个例子手动打开边。但是由于我的图形是生成的,我希望这样的事情自动发生。
我如何告诉布局引擎为4个目标进行优化-可能通过为4个目标中的每个目标分配一个成本?
发布于 2022-02-19 10:38:58
使用neato
并添加以下内容:
graph test123 {
overlap=false;
splines=true;
sep=.1;
帮助很大:目标1+2已经完成。仍然有许多不需要的边缘交叉口是可以解决的(例如,交换两个节点,让一个边从一个节点的左边而不是右边),但数量较少。
https://stackoverflow.com/questions/71181485
复制相似问题