Skip to content
{{ message }}

Instantly share code, notes, and snippets.

# rodw/figure2.gv

Created Jan 3, 2014
somewhat brute force solution to the question raised in this tweet: https://twitter.com/silentbicycle/status/418760644066676736 output from `dot -Tpng figure2.gv` at http://ow.ly/i/4bZ8B
 digraph fig2 { splines=line # makes edges straight rather than curved ranksep=0.2 # controls distance between rows # create a record-type node representing the row of numbers # (the `` bit declares a port we can point edges to) n [shape=record label="{58}|{82}|{16}|{85}|{65}|{5}|{67}|{26}"] # create some dummy rows, each with one false node per element in n node [shape=point height=0 style=invis]; { rank=same; fa1;fb1;fc1;fd1;fe1;ff1;fg1;fh1; } { rank=same; fa2;fb2;fc2;fd2;fe2;ff2;fg2;fh2; } { rank=same; fa3;fb3;fc3;fd3;fe3;ff3;fg3;fh3; } edge [style=invis] n:a -> fa1 -> fa2 -> fa3 n:b -> fb1 -> fb2 -> fb3 n:c -> fc1 -> fc2 -> fc3 n:d -> fd1 -> fd2 -> fd3 n:e -> fe1 -> fe2 -> fe3 n:f -> ff1 -> ff2 -> ff3 n:g -> fg1 -> fg2 -> fg3 n:h -> fh1 -> fh2 -> fh3 # create the subsequence edges edge [dir=none style=bold constraint=false] # no arrows, fat lines, don't change node placement edge [color=black] # first subsequence fa1 -> n:a # vertical lines fd1 -> n:d fg1 -> n:g fa1 -> fd1 -> fg1 # horizontal line edge [color=blue] # second subsequence fb2 -> n:b # vertical lines fe2 -> n:e fh2 -> n:h fb2 -> fe2 -> fh2 # horizontal line edge [color=red] # third subsequence fc3 -> n:c # vertical lines ff3 -> n:f fc3 -> ff3 # horizontal line # create a legend subgraph clusterLegend { pencolor=transparent # hide the line around the cluster # create "head" nodes to contain the label text node [shape=plaintext style="" width=2 fontsize=12 fontname=Helvetica] l1h [label="first subsequence\l" fontcolor=black] l2h [label="second subsequence\l" fontcolor=blue] l3h [label="third subsequence\l" fontcolor=red] # create the corresponding "tail" nodes and edges node [shape="point" width=0 style=invis] edge [dir=none style=bold constraint=false minlen=1] l1t -> l1h [color=black] l2t -> l2h [color=blue] l3t -> l3h [color=red] # ensure that the labels are stacked top-to-bottom edge [style=invis constraint=true minlen=""] l1t -> l2t -> l3t l1h -> l2h -> l3h } # create a dummy edge to ensure the legend is placed below the figure fb3 -> l1t [style=invis constraint=true minlen=2] }
to join this conversation on GitHub. Already have an account? Sign in to comment