Skip to content

Instantly share code, notes, and snippets.

@owulveryck
Last active October 12, 2022 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save owulveryck/754cb5e7cbcc6a289fc7d70d448f6279 to your computer and use it in GitHub Desktop.
Save owulveryck/754cb5e7cbcc6a289fc7d70d448f6279 to your computer and use it in GitHub Desktop.
Wardley Map with Graphviz

Generate the map

gvpack -u board.gv map.gv annotations.gv | neato -n -Tsvg > map.svg

Generate the gvmap

echo "digraph {$( cat board.gv annotations.gv <(gvmap -e map.gv) | egrep -v "digraph|^}$")}" | neato -n -Tsvg > withgvmap.svg

digraph {
graph [
rankdir = "LR"
bgcolor = "white:lightgrey"
style="filled"
gradientangle = 180];
node [shape=point, label="\n", width="0.001", height="0.001", margin="0.001"];
edge [arrowhead=none]
note1_1 [label="1", shape=circle, fontsize=16, pos="539,344"]
note1_2 [label="1", shape=circle, fontsize=16, pos="869,64"]
Annotations [shape=plaintext, label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD><U>annotations</U></TD></TR>
<TR><TD>1. Standardising power allows Kettles to evolve faster</TD></TR>
</TABLE>>, pos="160,480" ]
}
digraph {
graph [
rankdir = "LR"
bgcolor = "white:lightgrey"
style="filled"
gradientangle = 180];
node [shape=point, label="\n", width="0.001", height="0.001", margin="0.001"];
edge [arrowhead=none]
0 [label="", fontsize=7, pos="0,0"];
1 [label="", fontsize=7, pos="1100,0"];
2 [label="", fontsize=7, pos="0,800"];
vc [shape=none, label="V\na\nl\nu\ne\n \nC\nh\na\ni\nn", pos="-10,400"]
genesis [shape=none, label="genesis", pos="0,-10"]
custom [shape=none, label="custom", pos="187,-10"]
customX [shape=none, label="", pos="187,800"]
custom -> customX [style=dotted, arrowhead=none, color=grey]
product [shape=none, label="product", pos="440,-10"]
productX [shape=none, label="", pos="440,800"]
product -> productX [style=dotted, arrowhead=none, color=grey]
commodity [shape=none, label="commodity", pos="770,-10"]
commodityX [shape=none, label="", pos="770,800"]
commodity -> commodityX [style=dotted, arrowhead=none, color=grey]
0 -> 1 [arrowhead=normal]
0 -> 2 [arrowhead=normal]
}
digraph {
graph [
rankdir = "LR"
bgcolor = "white:lightgrey"
style="filled"
gradientangle = 180];
node [shape=point, label="\n", width="0.001", height="0.001", margin="0.001"];
edge [arrowhead=none]
zero [label="", pos="0,0"]
business [label="business", shape=none, width="0.22222", height="0.15278", fontsize=14, pos="693,760"];
public [label="public", shape=none, width="0.22222", height="0.15278", fontsize=14, pos="858,760"];
business -> cupOfTea
public -> cupOfTea
cupOfTea [xlabel="cup of tea", width="0.22222", height="0.15278", fontsize=9, pos="671,632"];
cup [xlabel="cup", width="0.22222", height="0.15278", fontsize=9, pos="858,584"];
tea [xlabel="tea", width="0.22222", height="0.15278", fontsize=9, pos="891,504"];
hotWater [xlabel="hot water", width="0.22222", height="0.15278", fontsize=9, pos="880,416"];
cupOfTea -> cup
cupOfTea -> tea
cupOfTea -> hotWater
water [xlabel="water", width="0.22222", height="0.15278", fontsize=9, pos="902,304"];
hotWater -> water
kettle [xlabel="kettle", width="0.22222", height="0.15278", fontsize=9, pos="385,344"];
kettleEvolve [xlabel="kettle", width="0.22222", height="0.15278", fontsize=9, color=red, pos="682,344"];
kettle -> kettleEvolve [style=dotted, color=red, arrowhead=normal]
hotWater -> kettle
power [xlabel="power", width="0.22222", height="0.15278", fontsize=9, pos="770,80"];
kettle -> power
powerEvolve [xlabel="power", width="0.22222", height="0.15278", fontsize=9, color=red, pos="979,80"];
power -> powerEvolve [style=dotted, color=red, arrowhead=normal]
}
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 5.0.0 (20220707.1540)
-->
<!-- Title: root Pages: 1 -->
<svg width="1128pt" height="826pt"
viewBox="0.00 0.00 1128.04 826.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 822)">
<title>root</title>
<defs>
<linearGradient id="l_0" gradientUnits="userSpaceOnUse" x1="1124.04" y1="-409" x2="-4" y2="-409" >
<stop offset="0" style="stop-color:white;stop-opacity:1.;"/>
<stop offset="1" style="stop-color:lightgrey;stop-opacity:1.;"/>
</linearGradient>
</defs>
<polygon fill="url(#l_0)" stroke="transparent" points="-4,4 -4,-822 1124.04,-822 1124.04,4 -4,4"/>
<!-- 0 -->
<g id="node1" class="node">
<title>0</title>
<ellipse fill="black" stroke="black" cx="20" cy="-17.5" rx="0.04" ry="0.04"/>
</g>
<!-- 1 -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="black" stroke="black" cx="1120" cy="-17.5" rx="0.04" ry="0.04"/>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M20.05,-17.5C28.09,-17.5 998.26,-17.5 1109.62,-17.5"/>
<polygon fill="black" stroke="black" points="1109.95,-21 1119.95,-17.5 1109.95,-14 1109.95,-21"/>
</g>
<!-- 2 -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="black" stroke="black" cx="20" cy="-817.5" rx="0.04" ry="0.04"/>
</g>
<!-- 0&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>0&#45;&gt;2</title>
<path fill="none" stroke="black" d="M20,-17.65C20,-29.12 20,-714.15 20,-807.1"/>
<polygon fill="black" stroke="black" points="16.5,-807.36 20,-817.36 23.5,-807.36 16.5,-807.36"/>
</g>
<!-- vc -->
<g id="node4" class="node">
<title>vc</title>
<text text-anchor="middle" x="10" y="-488.8" font-family="Times,serif" font-size="14.00">V</text>
<text text-anchor="middle" x="10" y="-473.8" font-family="Times,serif" font-size="14.00">a</text>
<text text-anchor="middle" x="10" y="-458.8" font-family="Times,serif" font-size="14.00">l</text>
<text text-anchor="middle" x="10" y="-443.8" font-family="Times,serif" font-size="14.00">u</text>
<text text-anchor="middle" x="10" y="-428.8" font-family="Times,serif" font-size="14.00">e</text>
<text text-anchor="middle" x="10" y="-413.8" font-family="Times,serif" font-size="14.00"> </text>
<text text-anchor="middle" x="10" y="-398.8" font-family="Times,serif" font-size="14.00">C</text>
<text text-anchor="middle" x="10" y="-383.8" font-family="Times,serif" font-size="14.00">h</text>
<text text-anchor="middle" x="10" y="-368.8" font-family="Times,serif" font-size="14.00">a</text>
<text text-anchor="middle" x="10" y="-353.8" font-family="Times,serif" font-size="14.00">i</text>
<text text-anchor="middle" x="10" y="-338.8" font-family="Times,serif" font-size="14.00">n</text>
</g>
<!-- genesis -->
<g id="node5" class="node">
<title>genesis</title>
<text text-anchor="middle" x="20" y="-3.8" font-family="Times,serif" font-size="14.00">genesis</text>
</g>
<!-- custom -->
<g id="node6" class="node">
<title>custom</title>
<text text-anchor="middle" x="207" y="-3.8" font-family="Times,serif" font-size="14.00">custom</text>
</g>
<!-- customX -->
<g id="node7" class="node">
<title>customX</title>
</g>
<!-- custom&#45;&gt;customX -->
<g id="edge3" class="edge">
<title>custom&#45;&gt;customX</title>
<path fill="none" stroke="grey" stroke-dasharray="1,5" d="M207,-15C207,-95.38 207,-795.13 207,-816.98"/>
</g>
<!-- product -->
<g id="node8" class="node">
<title>product</title>
<text text-anchor="middle" x="460" y="-3.8" font-family="Times,serif" font-size="14.00">product</text>
</g>
<!-- productX -->
<g id="node9" class="node">
<title>productX</title>
</g>
<!-- product&#45;&gt;productX -->
<g id="edge4" class="edge">
<title>product&#45;&gt;productX</title>
<path fill="none" stroke="grey" stroke-dasharray="1,5" d="M460,-15C460,-95.38 460,-795.13 460,-816.98"/>
</g>
<!-- commodity -->
<g id="node10" class="node">
<title>commodity</title>
<text text-anchor="middle" x="790" y="-3.8" font-family="Times,serif" font-size="14.00">commodity</text>
</g>
<!-- commodityX -->
<g id="node11" class="node">
<title>commodityX</title>
</g>
<!-- commodity&#45;&gt;commodityX -->
<g id="edge5" class="edge">
<title>commodity&#45;&gt;commodityX</title>
<path fill="none" stroke="grey" stroke-dasharray="1,5" d="M790,-15C790,-95.38 790,-795.13 790,-816.98"/>
</g>
<!-- business -->
<g id="node12" class="node">
<title>business</title>
<text text-anchor="middle" x="713" y="-773.8" font-family="Times,serif" font-size="14.00">business</text>
</g>
<!-- cupOfTea -->
<g id="node13" class="node">
<title>cupOfTea</title>
<ellipse fill="black" stroke="black" cx="691" cy="-649.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="668" y="-657.8" font-family="Times,serif" font-size="9.00">cup of tea</text>
</g>
<!-- business&#45;&gt;cupOfTea -->
<g id="edge6" class="edge">
<title>business&#45;&gt;cupOfTea</title>
<path fill="none" stroke="black" d="M711.69,-769.88C707.66,-746.41 695.49,-675.62 691.97,-655.12"/>
</g>
<!-- cup -->
<g id="node15" class="node">
<title>cup</title>
<ellipse fill="black" stroke="black" cx="878" cy="-601.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="866" y="-609.8" font-family="Times,serif" font-size="9.00">cup</text>
</g>
<!-- cupOfTea&#45;&gt;cup -->
<g id="edge8" class="edge">
<title>cupOfTea&#45;&gt;cup</title>
<path fill="none" stroke="black" d="M696.39,-648.12C723.58,-641.14 845.35,-609.88 872.58,-602.89"/>
</g>
<!-- tea -->
<g id="node16" class="node">
<title>tea</title>
<ellipse fill="black" stroke="black" cx="911" cy="-521.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="900.5" y="-529.8" font-family="Times,serif" font-size="9.00">tea</text>
</g>
<!-- cupOfTea&#45;&gt;tea -->
<g id="edge9" class="edge">
<title>cupOfTea&#45;&gt;tea</title>
<path fill="none" stroke="black" d="M696.01,-646.59C725.56,-629.39 876.83,-541.38 906.09,-524.35"/>
</g>
<!-- hotWater -->
<g id="node17" class="node">
<title>hotWater</title>
<ellipse fill="black" stroke="black" cx="900" cy="-433.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="877.5" y="-441.8" font-family="Times,serif" font-size="9.00">hot water</text>
</g>
<!-- cupOfTea&#45;&gt;hotWater -->
<g id="edge10" class="edge">
<title>cupOfTea&#45;&gt;hotWater</title>
<path fill="none" stroke="black" d="M694.99,-645.38C721.29,-618.2 869.54,-464.98 895.97,-437.67"/>
</g>
<!-- public -->
<g id="node14" class="node">
<title>public</title>
<text text-anchor="middle" x="878" y="-773.8" font-family="Times,serif" font-size="14.00">public</text>
</g>
<!-- public&#45;&gt;cupOfTea -->
<g id="edge7" class="edge">
<title>public&#45;&gt;cupOfTea</title>
<path fill="none" stroke="black" d="M866.86,-769.88C831.01,-745.33 719.52,-669.02 695.56,-652.62"/>
</g>
<!-- water -->
<g id="node18" class="node">
<title>water</title>
<ellipse fill="black" stroke="black" cx="922" cy="-321.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="906.5" y="-329.8" font-family="Times,serif" font-size="9.00">water</text>
</g>
<!-- hotWater&#45;&gt;water -->
<g id="edge11" class="edge">
<title>hotWater&#45;&gt;water</title>
<path fill="none" stroke="black" d="M901.06,-428.1C904.77,-409.22 917.13,-346.31 920.9,-327.11"/>
</g>
<!-- kettle -->
<g id="node19" class="node">
<title>kettle</title>
<ellipse fill="black" stroke="black" cx="405" cy="-361.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="390" y="-369.8" font-family="Times,serif" font-size="9.00">kettle</text>
</g>
<!-- hotWater&#45;&gt;kettle -->
<g id="edge12" class="edge">
<title>hotWater&#45;&gt;kettle</title>
<path fill="none" stroke="black" d="M894.44,-432.69C843.67,-425.31 461.1,-369.66 410.52,-362.3"/>
</g>
<!-- kettleEvolve -->
<g id="node20" class="node">
<title>kettleEvolve</title>
<ellipse fill="red" stroke="red" cx="702" cy="-361.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="687" y="-369.8" font-family="Times,serif" font-size="9.00">kettle</text>
</g>
<!-- kettle&#45;&gt;kettleEvolve -->
<g id="edge13" class="edge">
<title>kettle&#45;&gt;kettleEvolve</title>
<path fill="none" stroke="red" stroke-dasharray="1,5" d="M410.67,-361.5C445.48,-361.5 630.72,-361.5 686.25,-361.5"/>
<polygon fill="red" stroke="red" points="686.27,-365 696.27,-361.5 686.27,-358 686.27,-365"/>
</g>
<!-- power -->
<g id="node21" class="node">
<title>power</title>
<ellipse fill="black" stroke="black" cx="790" cy="-97.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="773" y="-105.8" font-family="Times,serif" font-size="9.00">power</text>
</g>
<!-- kettle&#45;&gt;power -->
<g id="edge14" class="edge">
<title>kettle&#45;&gt;power</title>
<path fill="none" stroke="black" d="M409.59,-358.35C449.98,-330.66 744.06,-129 785.22,-100.78"/>
</g>
<!-- powerEvolve -->
<g id="node22" class="node">
<title>powerEvolve</title>
<ellipse fill="red" stroke="red" cx="999" cy="-97.5" rx="5.5" ry="5.5"/>
<text text-anchor="middle" x="982" y="-105.8" font-family="Times,serif" font-size="9.00">power</text>
</g>
<!-- power&#45;&gt;powerEvolve -->
<g id="edge15" class="edge">
<title>power&#45;&gt;powerEvolve</title>
<path fill="none" stroke="red" stroke-dasharray="1,5" d="M795.59,-97.5C822.59,-97.5 939.96,-97.5 983.05,-97.5"/>
<polygon fill="red" stroke="red" points="983.29,-101 993.29,-97.5 983.29,-94 983.29,-101"/>
</g>
<!-- note1_1 -->
<g id="node23" class="node">
<title>note1_1</title>
<ellipse fill="none" stroke="black" cx="559" cy="-361.5" rx="12.96" ry="12.96"/>
<text text-anchor="middle" x="559" y="-357.7" font-family="Times,serif" font-size="16.00">1</text>
</g>
<!-- note1_2 -->
<g id="node24" class="node">
<title>note1_2</title>
<ellipse fill="none" stroke="black" cx="889" cy="-81.5" rx="12.96" ry="12.96"/>
<text text-anchor="middle" x="889" y="-77.7" font-family="Times,serif" font-size="16.00">1</text>
</g>
<!-- Annotations -->
<g id="node25" class="node">
<title>Annotations</title>
<polygon fill="none" stroke="black" points="30,-497.5 30,-518.5 331,-518.5 331,-497.5 30,-497.5"/>
<text text-anchor="start" x="149" y="-505.3" font-family="Times,serif" text-decoration="underline" font-size="14.00">annotations</text>
<polygon fill="none" stroke="black" points="30,-476.5 30,-497.5 331,-497.5 331,-476.5 30,-476.5"/>
<text text-anchor="start" x="33" y="-483.3" font-family="Times,serif" font-size="14.00">1. Standardising power allows Kettles to evolve faster</text>
</g>
</g>
</svg>
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment