Created
July 27, 2015 05:01
-
-
Save hedgehog/94506446158864545348 to your computer and use it in GitHub Desktop.
Minimal reproducible example: Parent node labels mssing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
strict digraph structs { | |
graph [bb="0,0,582,464"]; | |
node [label="\N"]; | |
subgraph cluster_h1a_h1c { | |
graph [bb="8,8,252,456", | |
label="Host (h1d):h1a", | |
lheight=0.21, | |
lp="130,444.5", | |
lwidth=1.14 | |
]; | |
subgraph cluster_h1a_h1c_1 { | |
graph [bb="16,16,238,343", | |
label="Type: 4", | |
lheight=0.21, | |
lp="127,331.5", | |
lwidth=0.60 | |
]; | |
h1a_1_a [height=0.5, | |
label=h1a_1_a, | |
pos="108,294", | |
width=1.1152]; | |
h1a_1_b [height=0.5, | |
label=h1a_1_b, | |
pos="180,165", | |
width=1.1243]; | |
h1a_1_a -> h1a_1_b [label="aa to\naa \n(Relation 900)", | |
lp="89.5,229", | |
pos="e,152.02,178.1 80.531,280.85 68.886,274.15 56.52,264.59 50,252 40.6,233.84 37.342,222.05 50,206 71.223,179.08 92.334,198.39 125,\ | |
188 130.71,186.18 136.68,184.05 142.48,181.84"]; | |
h1a_1_b -> h1a_1_a [label="at to\nat \n(Relation 901)", | |
lp="190.5,229", | |
pos="e,116.69,276.3 167.17,182.28 161.86,189.37 155.82,197.89 151,206 139.41,225.48 139.06,231.69 129,252 126.58,256.89 123.96,262.09 \ | |
121.41,267.08"]; | |
h1a_1_c [height=0.5, | |
label=h1a_1_c, | |
pos="107,42", | |
width=1.1152]; | |
h1a_1_b -> h1a_1_c [label="at to\nat \n(Relation 902)", | |
lp="190.5,101", | |
pos="e,117.92,59.5 167.17,147.72 161.86,140.63 155.82,132.11 151,124 139.41,104.52 139.94,97.848 129,78 127.2,74.727 125.22,71.338 123.21,\ | |
68.015"]; | |
h1a_1_c -> h1a_1_a [label="aa to\naa \n(Relation 905)", | |
lp="73.5,165", | |
pos="e,76.67,282.72 72.034,50.981 57.676,56.165 42.461,64.559 34,78 23.108,95.301 33.681,103.56 34,124 34.889,180.91 8.928,203.07 38,\ | |
252 44.755,263.37 55.972,271.91 67.469,278.18"]; | |
h1a_1_c -> h1a_1_b [label="aa to\naa \n(Relation 906)", | |
lp="85.5,101", | |
pos="e,152.04,151.84 75.395,53.432 64.059,58.875 52.486,66.8 46,78 35.754,95.692 33.25,108.02 46,124 68.458,152.15 90.622,131.28 125,\ | |
142 130.72,143.78 136.69,145.9 142.5,148.1"]; | |
} | |
h1a_h1c_1 [height=0.74639, | |
label="1\n[Engine: h1c]", | |
pos="180,398", | |
width=1.7826]; | |
h1a_h1c_1 -> h1a_1_a [pos="e,119.59,311.42 162.39,372.05 151.15,356.12 136.64,335.57 125.43,319.69"]; | |
h1a_h1c_1 -> h1a_1_b [pos="e,205.29,179.15 191.27,371.31 210.26,326.33 245.27,235.32 231,206 227.07,197.93 220.64,191 213.64,185.29"]; | |
h1a_h1c_1 -> h1a_1_c [pos="e,144.63,48.377 202.85,372.84 210.02,364.05 217.28,353.64 222,343 238.65,305.46 234.43,292.91 238,252 242.11,204.89 239.47,84.953 \ | |
234,78 224.02,65.308 186.4,55.968 154.68,50.144"]; | |
} | |
subgraph cluster_h2a_h2c { | |
graph [bb="278,260,422,456", | |
label="Host (h2d):h2a", | |
lheight=0.21, | |
lp="350,444.5", | |
lwidth=1.14 | |
]; | |
subgraph cluster_h2a_h2c_2 { | |
graph [bb="305,268,395,343", | |
label="Type: 2", | |
lheight=0.21, | |
lp="350,331.5", | |
lwidth=0.60 | |
]; | |
h2a_2_d [height=0.5, | |
label="Child d", | |
pos="350,294", | |
width=1.0284]; | |
} | |
h2a_h2c_2 [height=0.74639, | |
label="2\n[Engine: h2c]", | |
pos="350,398", | |
width=1.7826]; | |
h2a_h2c_2 -> h2a_2_d [pos="e,350,312.3 350,371 350,356.18 350,337.62 350,322.55"]; | |
} | |
subgraph cluster_h3a_h3c { | |
graph [bb="430,363,574,456", | |
label="Host (h3d):h3a", | |
lheight=0.21, | |
lp="502,444.5", | |
lwidth=1.14 | |
]; | |
h3a_h3c_3 [height=0.74639, | |
label="3\n[Engine: h3c]", | |
pos="502,398", | |
width=1.7826]; | |
} | |
h1a_1_b -> h2a_2_d [label="at to\nat \n(Relation 907)", | |
lp="303.5,229", | |
pos="e,318.76,284.32 207.79,178.13 220.51,184.83 234.95,194.2 245,206 259.34,222.84 248.78,235.95 264,252 276.25,264.92 293.41,274.23 \ | |
309.18,280.67"]; | |
h2a_2_d -> h1a_1_a [label="l to\nl \n(Relation 904)", | |
lp="230.48,319.5", | |
pos="e,148.23,294 312.85,294 271.48,294 204.36,294 158.3,294"]; | |
h2a_2_d -> h1a_1_b [label="l to\nl \n(Relation 903)", | |
lp="397.5,229", | |
pos="e,219.23,169.96 354.95,275.85 359.38,256.61 362.97,225.54 347,206 332.24,187.94 273.15,177.01 229.42,171.25"]; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
$stdout.sync = true | |
## Adapted from: | |
## http://www.omninerd.com/articles/Automating_Data_Visualization_with_Ruby_and_Graphviz | |
## | |
require 'ruby-graphviz' | |
#require 'graphviz/dsl' | |
require 'awesome_print' # usage #ap .... | |
# Constants defining file names and paths | |
pd = ::Pathname.new(__FILE__).dirname | |
OutputPath = pd | |
# expand_path | |
# load 3 arrays with CSV data | |
tables = [['1.a','1'], | |
['1.b','2'], | |
['1.c','3'], | |
['2.d','4']] | |
hosts = [['h1a','1','h1c','h1d'], | |
['h2a','2','h2c','h2d'], | |
['h3a','3','h3c','h3d']] | |
relations = [ | |
[900,'aa','1.a','aa','1.b'], | |
[901,'at','1.b','at','1.a'], | |
[902,'at','1.b','at','1.c'], | |
[903,'l','2.d','l','1.b'], | |
[904,'l','2.d','l','1.a'], | |
[905,'aa','1.c','aa','1.a'], | |
[906,'aa','1.c','aa','1.b'], | |
[907,'at','1.b','at','2.d'], | |
] | |
# initialize new Graphviz graph | |
# g = ::GraphViz::new( 'structs' ) | |
g = strict('structs') | |
#g[:rankdir] = 'LR' | |
# # set global node options | |
# g.node[:color] = '#ddaa66' | |
# g.node[:style] = 'filled' | |
# g.node[:shape] = 'box' | |
# g.node[:penwidth] = '1' | |
# g.node[:fontname] = 'Trebuchet MS' | |
# g.node[:fontsize] = '8' | |
# g.node[:fillcolor]= '#ffeecc' | |
# g.node[:fontcolor]= '#775500' | |
# g.node[:margin] = '0.0' | |
# | |
# # set global edge options | |
# g.edge[:color] = '#999999' | |
# g.edge[:weight] = '1' | |
# g.edge[:fontsize] = '6' | |
# g.edge[:fontcolor]= '#444444' | |
# g.edge[:fontname] = 'Verdana' | |
# g.edge[:dir] = 'forward' | |
# g.edge[:arrowsize]= '0.5' | |
# | |
# draw our clusters of graphs, i.e. hosts | |
hosts.each do |hosts| | |
host = hosts[0] | |
schema = hosts[1] | |
engine = hosts[2] | |
os = hosts[3] | |
g.add_graph("cluster_#{host}_#{engine}",:label => "Host (#{os}):" + host) do |gg| | |
gg.add_node("#{host}_#{engine}_#{schema}").label = "#{schema}\n[Engine: #{engine}]" | |
end | |
end | |
# brute force, but simple function to find a type record by schema.table | |
def find_type(tables_array, material_number) | |
tables_array.collect{|m| m[1] unless m.index(material_number).nil?}.compact[0] | |
end | |
# brute force, but simple function to find a host record by schema | |
def find_host(hosts_array, schema_name) | |
hosts_array.collect{|m| m[0] unless m.index(schema_name).nil?}.compact[0] | |
end | |
# brute force, but simple function to find a engine record by schema | |
def find_engine(hosts_array, schema_name) | |
hosts_array.collect{|m| m[2] unless m.index(schema_name).nil?}.compact[0] | |
end | |
# connect the nodes with our recipes, add labels from material data | |
relations.each do |relation| | |
#puts relation.inspect | |
ps = relation[2].split('.')[0] # parent schema | |
cs = relation[4].split('.')[0] # child schema | |
pe = relation[2].split('.')[1] # parent entity | |
ce = relation[4].split('.')[1] # child entity | |
pf = relation[1] # parent field | |
cf = relation[3] # child field | |
ct = find_type(tables, relation[2]) # parent type | |
pt = find_type(tables, relation[4]) # child type | |
ph = find_host( hosts, ps ) | |
ch = find_host( hosts, cs ) | |
peg = find_engine( hosts, ps ) | |
ceg = find_engine( hosts, cs ) | |
ptn_id = "#{ph}_#{ps}_#{pe}" # parent entity (table, etc.) node ID | |
ctn_id = "#{ch}_#{cs}_#{ce}" # child entity (table, etc.) node ID | |
psn_id = "#{ph}_#{peg}_#{ps}" | |
csn_id = "#{ch}_#{ceg}_#{cs}" | |
pc = g.get_graph( "cluster_#{ph}_#{peg}" ) # parent host cluster | |
cc = g.get_graph( "cluster_#{ch}_#{ceg}" ) # child host cluster | |
psn = pc.get_node(psn_id) # Node representing parent schema | |
csn = cc.get_node(csn_id) # Node representing child schema | |
pcs = pc.add_graph("cluster_#{ph}_#{peg}_#{ps}", :label => "Type: #{pt}") | |
ccs = cc.add_graph("cluster_#{ch}_#{ceg}_#{cs}", :label => "Type: #{ct}") | |
ccs.add_node( ctn_id, :label=> "Child #{ce}" ) | |
pcs.add_node( ptn_id, :label=> "Parent #{pe}" ) | |
g.add_edge(psn_id,ptn_id) | |
g.add_edge(csn_id,ctn_id) | |
# This works | |
g.add_edge(ptn_id, ctn_id).label= "#{pf} to\n#{cf} \n(Relation #{relation[0]})" | |
end | |
output = g.output( :dot => OutputPath + 'mre.dot' ) | |
g.output( :svg => OutputPath + 'mre.svg' ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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 2.36.0 (20140111.2315) | |
--> | |
<!-- Title: structs Pages: 1 --> | |
<svg width="590pt" height="472pt" | |
viewBox="0.00 0.00 590.00 472.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 468)"> | |
<title>structs</title> | |
<polygon fill="white" stroke="none" points="-4,4 -4,-468 586,-468 586,4 -4,4"/> | |
<g id="clust1" class="cluster"><title>cluster_h1a_h1c</title> | |
<polygon fill="none" stroke="black" points="8,-8 8,-456 252,-456 252,-8 8,-8"/> | |
<text text-anchor="middle" x="130" y="-440.8" font-family="Times,serif" font-size="14.00">Host (h1d):h1a</text> | |
</g> | |
<g id="clust2" class="cluster"><title>cluster_h1a_h1c_1</title> | |
<polygon fill="none" stroke="black" points="16,-16 16,-343 238,-343 238,-16 16,-16"/> | |
<text text-anchor="middle" x="127" y="-327.8" font-family="Times,serif" font-size="14.00">Type: 4</text> | |
</g> | |
<g id="clust3" class="cluster"><title>cluster_h2a_h2c</title> | |
<polygon fill="none" stroke="black" points="278,-260 278,-456 422,-456 422,-260 278,-260"/> | |
<text text-anchor="middle" x="350" y="-440.8" font-family="Times,serif" font-size="14.00">Host (h2d):h2a</text> | |
</g> | |
<g id="clust4" class="cluster"><title>cluster_h2a_h2c_2</title> | |
<polygon fill="none" stroke="black" points="305,-268 305,-343 395,-343 395,-268 305,-268"/> | |
<text text-anchor="middle" x="350" y="-327.8" font-family="Times,serif" font-size="14.00">Type: 2</text> | |
</g> | |
<g id="clust5" class="cluster"><title>cluster_h3a_h3c</title> | |
<polygon fill="none" stroke="black" points="430,-363 430,-456 574,-456 574,-363 430,-363"/> | |
<text text-anchor="middle" x="502" y="-440.8" font-family="Times,serif" font-size="14.00">Host (h3d):h3a</text> | |
</g> | |
<!-- h1a_h1c_1 --> | |
<g id="node1" class="node"><title>h1a_h1c_1</title> | |
<ellipse fill="none" stroke="black" cx="180" cy="-398" rx="64.0209" ry="26.7407"/> | |
<text text-anchor="middle" x="180" y="-401.8" font-family="Times,serif" font-size="14.00">1</text> | |
<text text-anchor="middle" x="180" y="-386.8" font-family="Times,serif" font-size="14.00">[Engine: h1c]</text> | |
</g> | |
<!-- h1a_1_a --> | |
<g id="node2" class="node"><title>h1a_1_a</title> | |
<ellipse fill="none" stroke="black" cx="108" cy="-294" rx="39.9464" ry="18"/> | |
<text text-anchor="middle" x="108" y="-290.3" font-family="Times,serif" font-size="14.00">h1a_1_a</text> | |
</g> | |
<!-- h1a_h1c_1->h1a_1_a --> | |
<g id="edge1" class="edge"><title>h1a_h1c_1->h1a_1_a</title> | |
<path fill="none" stroke="black" d="M162.387,-372.048C151.146,-356.124 136.636,-335.568 125.431,-319.694"/> | |
<polygon fill="black" stroke="black" points="128.214,-317.568 119.588,-311.416 122.496,-321.604 128.214,-317.568"/> | |
</g> | |
<!-- h1a_1_b --> | |
<g id="node3" class="node"><title>h1a_1_b</title> | |
<ellipse fill="none" stroke="black" cx="180" cy="-165" rx="40.4202" ry="18"/> | |
<text text-anchor="middle" x="180" y="-161.3" font-family="Times,serif" font-size="14.00">h1a_1_b</text> | |
</g> | |
<!-- h1a_h1c_1->h1a_1_b --> | |
<g id="edge2" class="edge"><title>h1a_h1c_1->h1a_1_b</title> | |
<path fill="none" stroke="black" d="M191.266,-371.306C210.263,-326.328 245.266,-235.319 231,-206 227.072,-197.927 220.639,-191.001 213.644,-185.292"/> | |
<polygon fill="black" stroke="black" points="215.421,-182.254 205.291,-179.151 211.275,-187.894 215.421,-182.254"/> | |
</g> | |
<!-- h1a_1_c --> | |
<g id="node4" class="node"><title>h1a_1_c</title> | |
<ellipse fill="none" stroke="black" cx="107" cy="-42" rx="39.9464" ry="18"/> | |
<text text-anchor="middle" x="107" y="-38.3" font-family="Times,serif" font-size="14.00">h1a_1_c</text> | |
</g> | |
<!-- h1a_h1c_1->h1a_1_c --> | |
<g id="edge5" class="edge"><title>h1a_h1c_1->h1a_1_c</title> | |
<path fill="none" stroke="black" d="M202.854,-372.84C210.019,-364.046 217.28,-353.639 222,-343 238.652,-305.463 234.431,-292.909 238,-252 242.11,-204.891 239.47,-84.9533 234,-78 224.016,-65.308 186.401,-55.9682 154.678,-50.1445"/> | |
<polygon fill="black" stroke="black" points="155.083,-46.662 144.628,-48.3774 153.871,-53.5563 155.083,-46.662"/> | |
</g> | |
<!-- h1a_1_a->h1a_1_b --> | |
<g id="edge3" class="edge"><title>h1a_1_a->h1a_1_b</title> | |
<path fill="none" stroke="black" d="M80.5308,-280.849C68.8863,-274.146 56.5199,-264.593 50,-252 40.6004,-233.844 37.3424,-222.055 50,-206 71.2235,-179.08 92.3335,-198.393 125,-188 130.713,-186.182 136.676,-184.052 142.48,-181.845"/> | |
<polygon fill="black" stroke="black" points="143.992,-185.011 152.023,-178.101 141.435,-178.495 143.992,-185.011"/> | |
<text text-anchor="middle" x="89.5" y="-240.3" font-family="Times,serif" font-size="14.00">aa to</text> | |
<text text-anchor="middle" x="89.5" y="-225.3" font-family="Times,serif" font-size="14.00">aa </text> | |
<text text-anchor="middle" x="89.5" y="-210.3" font-family="Times,serif" font-size="14.00">(Relation 900)</text> | |
</g> | |
<!-- h1a_1_b->h1a_1_a --> | |
<g id="edge4" class="edge"><title>h1a_1_b->h1a_1_a</title> | |
<path fill="none" stroke="black" d="M167.169,-182.279C161.857,-189.366 155.824,-197.891 151,-206 139.413,-225.476 139.055,-231.691 129,-252 126.578,-256.892 123.955,-262.089 121.41,-267.082"/> | |
<polygon fill="black" stroke="black" points="118.134,-265.8 116.686,-276.296 124.363,-268.994 118.134,-265.8"/> | |
<text text-anchor="middle" x="190.5" y="-240.3" font-family="Times,serif" font-size="14.00">at to</text> | |
<text text-anchor="middle" x="190.5" y="-225.3" font-family="Times,serif" font-size="14.00">at </text> | |
<text text-anchor="middle" x="190.5" y="-210.3" font-family="Times,serif" font-size="14.00">(Relation 901)</text> | |
</g> | |
<!-- h1a_1_b->h1a_1_c --> | |
<g id="edge6" class="edge"><title>h1a_1_b->h1a_1_c</title> | |
<path fill="none" stroke="black" d="M167.169,-147.721C161.857,-140.634 155.824,-132.109 151,-124 139.413,-104.524 139.937,-97.8484 129,-78 127.197,-74.7274 125.217,-71.3383 123.207,-68.0155"/> | |
<polygon fill="black" stroke="black" points="126.167,-66.1476 117.917,-59.5 120.221,-69.8414 126.167,-66.1476"/> | |
<text text-anchor="middle" x="190.5" y="-112.3" font-family="Times,serif" font-size="14.00">at to</text> | |
<text text-anchor="middle" x="190.5" y="-97.3" font-family="Times,serif" font-size="14.00">at </text> | |
<text text-anchor="middle" x="190.5" y="-82.3" font-family="Times,serif" font-size="14.00">(Relation 902)</text> | |
</g> | |
<!-- h2a_2_d --> | |
<g id="node6" class="node"><title>h2a_2_d</title> | |
<ellipse fill="none" stroke="black" cx="350" cy="-294" rx="37.0701" ry="18"/> | |
<text text-anchor="middle" x="350" y="-290.3" font-family="Times,serif" font-size="14.00">Child d</text> | |
</g> | |
<!-- h1a_1_b->h2a_2_d --> | |
<g id="edge12" class="edge"><title>h1a_1_b->h2a_2_d</title> | |
<path fill="none" stroke="black" d="M207.789,-178.133C220.508,-184.828 234.949,-194.197 245,-206 259.341,-222.841 248.78,-235.949 264,-252 276.252,-264.922 293.408,-274.226 309.177,-280.67"/> | |
<polygon fill="black" stroke="black" points="308.169,-284.032 318.76,-284.32 310.661,-277.49 308.169,-284.032"/> | |
<text text-anchor="middle" x="303.5" y="-240.3" font-family="Times,serif" font-size="14.00">at to</text> | |
<text text-anchor="middle" x="303.5" y="-225.3" font-family="Times,serif" font-size="14.00">at </text> | |
<text text-anchor="middle" x="303.5" y="-210.3" font-family="Times,serif" font-size="14.00">(Relation 907)</text> | |
</g> | |
<!-- h1a_1_c->h1a_1_a --> | |
<g id="edge10" class="edge"><title>h1a_1_c->h1a_1_a</title> | |
<path fill="none" stroke="black" d="M72.0339,-50.9807C57.6763,-56.1651 42.4614,-64.5595 34,-78 23.108,-95.3014 33.6807,-103.558 34,-124 34.889,-180.91 8.92802,-203.068 38,-252 44.7549,-263.369 55.972,-271.914 67.4691,-278.177"/> | |
<polygon fill="black" stroke="black" points="66.1537,-281.431 76.6698,-282.721 69.2534,-275.155 66.1537,-281.431"/> | |
<text text-anchor="middle" x="73.5" y="-176.3" font-family="Times,serif" font-size="14.00">aa to</text> | |
<text text-anchor="middle" x="73.5" y="-161.3" font-family="Times,serif" font-size="14.00">aa </text> | |
<text text-anchor="middle" x="73.5" y="-146.3" font-family="Times,serif" font-size="14.00">(Relation 905)</text> | |
</g> | |
<!-- h1a_1_c->h1a_1_b --> | |
<g id="edge11" class="edge"><title>h1a_1_c->h1a_1_b</title> | |
<path fill="none" stroke="black" d="M75.3947,-53.432C64.0593,-58.8748 52.4862,-66.8004 46,-78 35.754,-95.6916 33.2501,-108.018 46,-124 68.4578,-152.15 90.6216,-131.28 125,-142 130.724,-143.785 136.692,-145.897 142.498,-148.096"/> | |
<polygon fill="black" stroke="black" points="141.455,-151.447 152.043,-151.835 144.008,-144.929 141.455,-151.447"/> | |
<text text-anchor="middle" x="85.5" y="-112.3" font-family="Times,serif" font-size="14.00">aa to</text> | |
<text text-anchor="middle" x="85.5" y="-97.3" font-family="Times,serif" font-size="14.00">aa </text> | |
<text text-anchor="middle" x="85.5" y="-82.3" font-family="Times,serif" font-size="14.00">(Relation 906)</text> | |
</g> | |
<!-- h2a_h2c_2 --> | |
<g id="node5" class="node"><title>h2a_h2c_2</title> | |
<ellipse fill="none" stroke="black" cx="350" cy="-398" rx="64.0209" ry="26.7407"/> | |
<text text-anchor="middle" x="350" y="-401.8" font-family="Times,serif" font-size="14.00">2</text> | |
<text text-anchor="middle" x="350" y="-386.8" font-family="Times,serif" font-size="14.00">[Engine: h2c]</text> | |
</g> | |
<!-- h2a_h2c_2->h2a_2_d --> | |
<g id="edge7" class="edge"><title>h2a_h2c_2->h2a_2_d</title> | |
<path fill="none" stroke="black" d="M350,-370.997C350,-356.179 350,-337.619 350,-322.551"/> | |
<polygon fill="black" stroke="black" points="353.5,-322.299 350,-312.299 346.5,-322.299 353.5,-322.299"/> | |
</g> | |
<!-- h2a_2_d->h1a_1_a --> | |
<g id="edge9" class="edge"><title>h2a_2_d->h1a_1_a</title> | |
<path fill="none" stroke="black" d="M312.852,-294C271.475,-294 204.363,-294 158.302,-294"/> | |
<polygon fill="black" stroke="black" points="158.233,-290.5 148.233,-294 158.233,-297.5 158.233,-290.5"/> | |
<text text-anchor="middle" x="230.477" y="-330.8" font-family="Times,serif" font-size="14.00">l to</text> | |
<text text-anchor="middle" x="230.477" y="-315.8" font-family="Times,serif" font-size="14.00">l </text> | |
<text text-anchor="middle" x="230.477" y="-300.8" font-family="Times,serif" font-size="14.00">(Relation 904)</text> | |
</g> | |
<!-- h2a_2_d->h1a_1_b --> | |
<g id="edge8" class="edge"><title>h2a_2_d->h1a_1_b</title> | |
<path fill="none" stroke="black" d="M354.955,-275.852C359.381,-256.612 362.97,-225.544 347,-206 332.243,-187.94 273.146,-177.014 229.42,-171.248"/> | |
<polygon fill="black" stroke="black" points="229.59,-167.742 219.23,-169.96 228.712,-174.687 229.59,-167.742"/> | |
<text text-anchor="middle" x="397.5" y="-240.3" font-family="Times,serif" font-size="14.00">l to</text> | |
<text text-anchor="middle" x="397.5" y="-225.3" font-family="Times,serif" font-size="14.00">l </text> | |
<text text-anchor="middle" x="397.5" y="-210.3" font-family="Times,serif" font-size="14.00">(Relation 903)</text> | |
</g> | |
<!-- h3a_h3c_3 --> | |
<g id="node7" class="node"><title>h3a_h3c_3</title> | |
<ellipse fill="none" stroke="black" cx="502" cy="-398" rx="64.0209" ry="26.7407"/> | |
<text text-anchor="middle" x="502" y="-401.8" font-family="Times,serif" font-size="14.00">3</text> | |
<text text-anchor="middle" x="502" y="-386.8" font-family="Times,serif" font-size="14.00">[Engine: h3c]</text> | |
</g> | |
</g> | |
</svg> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment