Skip to content

Latest commit

 

History

History
90 lines (64 loc) · 3.51 KB

RulePlotOfWolframModel.md

File metadata and controls

90 lines (64 loc) · 3.51 KB

RulePlot of WolframModel

RulePlot can be used to get a HypergraphPlot-based visual representation of hypergraph substitution rules:

In[] := RulePlot[WolframModel[{{1, 2}, {1, 2}} ->
   {{3, 2}, {3, 2}, {2, 1}, {1, 3}}]]

The shared elements between rule sides (vertices 1 and 2 in the example above) are put at the same positions in the RulePlot and highlighted in a darker shade of blue. Shared edges are highlighted as well:

In[] := RulePlot[WolframModel[{{1, 2, 3}} -> {{1, 2, 3}, {3, 4, 5}}]]

Multiple rules can be plotted:

In[] := RulePlot[WolframModel[{{{1, 1, 2}} ->
    {{2, 2, 1}, {2, 3, 2}, {1, 2, 3}},
   {{1, 2, 1}, {3, 4, 2}} -> {{4, 3, 2}}}]]

Passing a WolframModelEvolutionObject plots its "Rules" property:

Sometimes an incorrectly scaled layout might be produced due to the issue discussed above in VertexCoordinates:

In[] := RulePlot[WolframModel[{{1, 2}, {1, 3}, {1, 4}} ->
   {{2, 2}, {2, 2}, {2, 5}, {3, 2}}]]

VertexCoordinates can be used in that case to specify the layout manually:

In[] := RulePlot[WolframModel[{{1, 2}, {1, 3}, {1, 4}} ->
   {{2, 2}, {2, 2}, {2, 5}, {3, 2}}],
 VertexCoordinates -> {1 -> {0, 0}, 2 -> {1, 0}, 3 -> {0, 1},
   4 -> {-1, 0}, 5 -> {2, 1}}]

Some of the HypergraphPlot options are supported, specifically GraphHighlightStyle , "HyperedgeRendering" , VertexCoordinates, VertexLabels , VertexSize, "ArrowheadLength", and style options. "EdgeType" is supported as an option instead of the second argument like in HypergraphPlot.

There are also two additional RulePlot-specific style options. Spacings controls the amount of empty space between the rule parts and the frame (or the space where the frame would be if it's not shown):

In[] := RulePlot[WolframModel[{{{1, 2}} -> {{1, 3}, {1, 3}, {3, 2}},
   {{1, 2}, {1, 2}} -> {{1, 3}, {3, 2}}}], Spacings -> 0.03]

"RulePartsAspectRatio" is used to control the aspect ratio of rule sides. As an example, it can be used to force rule parts to be square:

In[] := RulePlot[WolframModel[{{1, 2}} -> {{1, 3}, {1, 3}, {3, 2}}],
 "RulePartsAspectRatio" -> 1]