gpt4 book ai didi

wolfram-mathematica - 如何使用Mathematica绘制经典的状态图?

转载 作者:行者123 更新时间:2023-12-03 01:40:20 28 4
gpt4 key购买 nike

Mathematica 绘制这样的东西是否可能且实用(由 Graphviz 创建):

enter image description here

这是我能得到的最好的了(但形状和风格都不满意):

enter image description here

代码:

GraphPlot[{{A -> C, "go"}, {C -> B, "gone"}, {C -> D, 
"went"}, {C -> C, "loop"}}, VertexLabeling -> True,
DirectedEdges -> True]

最佳答案

您可以使用VertexRenderingFunction执行类似的操作。

GraphPlot[{{A -> C, "go"}, {C -> B, "gone"}, {C -> D, "went"}, {C -> C, "loop"}}, 
DirectedEdges -> True,
VertexRenderingFunction -> ({{White, Disk[#, 0.15]},
AbsoluteThickness[2], Circle[#, 0.15],
If[MatchQ[#2, A | B], Circle[#, 0.12], {}], Text[#2, #]} &)]

enter image description here

<小时/>

方法于 2015 年 2 月更新

为了保留使用绘图工具(双击)以交互方式重新排列图形的能力,必须将顶点图形保留在 GraphicsComplex 中,并使用索引而不是坐标。我相信人们可以使用递增变量从 VertexRenderingFunction 来做到这一点,但通过后处理来做到这一点似乎更容易,也可能更稳健。这适用于 Mathematica 版本 7 和 10,大概也适用于 8 和 9:

GraphPlot[
{{A -> C, "go"}, {C -> B, "gone"}, {C -> D, "went"}, {C -> C, "loop"}},
DirectedEdges -> True
] /.
Tooltip[Point[n_Integer], label_] :>
{{White, Disk[n, 0.15]},
Black, AbsoluteThickness[2], Circle[n, 0.15],
If[MatchQ[label, A | B], Circle[n, 0.12], {}], Text[label, n]}

enter image description here

关于wolfram-mathematica - 如何使用Mathematica绘制经典的状态图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8109374/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com