Answers.Body: <p>Given various tell-tale signs, that graph was almost certainly generated with <a href="http://www.graphviz.org/" rel="noreferrer">GraphViz</a>.  GraphViz is free, so you can produce similar diagrams yourself by <a href="http://www.graphviz.org/download/" rel="noreferrer">downloading and installing it</a>, or by using <a href="https://dreampuf.github.io/GraphvizOnline/" rel="noreferrer">an online editor</a>.  If you want to mimic the style in the diagram you posted, start with a template that looks like this:</p>
  
  <pre><code>digraph chess_openings {
      {
          node [shape=point];
      }
      {
          node [shape=box];
      }
  }
  </code></pre>
  
  <p>which creates two groups of nodes: one for positions, which will be shown as points, and one for moves, which will be shown as boxes.</p>
  
  <p>For each of white's moves, you'll have to write code that looks something like this in the second group:</p>
  
  <pre><code>p0 -&gt; p0_1e4 [label="Sicilian"]; p0_1e4 [label="1. e4"]; p0_1e4 -&gt; p1;
  </code></pre>
  
  <p>which says that "from Position #0 (<code>p0</code>), white can play the Sicilian by moving "1. e4", which will result in Position #1 (<code>p1</code>)".  Similarly, for black's moves, you'll have to write code that looks like this:</p>
  
  <pre><code>p1 -&gt; p1_1c5 [label="Sicilian"]; p1_1c5 [label="1. … c5", style=filled]; p1_1c5 -&gt; p2;
  </code></pre>
  
  <p>which says that "from Position #1, black can play the Sicilian by moving "1. … c5", which will result in Position #2".  If you have a live preview running, the position numbers will be visible in the diagram as you write the moves.  When you're ready to hide a position, add it to a list in the first group:</p>
  
  <pre><code>p0, p1, p2;
  </code></pre>
  
  <p>Below is a transcription of the graph in your question.  You can play with the code <a href="https://dreampuf.github.io/GraphvizOnline/#digraph%20chess_openings%20%7B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20node%20%5Bshape%3Dpoint%5D%3B%0A%20%20%20%20%20%20%20%20p0%2C%20p1%2C%20p2%2C%20p3%2C%20p4%2C%20p5%2C%20p6%2C%20p7%2C%20p8%2C%20p9%2C%20p10%2C%20p11%2C%20p12%2C%20p13%2C%20p14%2C%20p15%2C%20p16%2C%20p17%2C%20p18%2C%20p19%2C%20p20%2C%20p21%2C%20p22%2C%20p23%2C%20p24%2C%20p25%2C%20p26%2C%20p27%2C%20p28%2C%20p29%2C%20p30%2C%20p31%2C%20p32%2C%20p33%2C%20p34%2C%20p35%2C%20p36%2C%20p37%2C%20p38%2C%20p39%2C%20p40%2C%20p41%2C%20p42%3B%0A%20%20%20%20%7D%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20node%20%5Bshape%3Dbox%5D%3B%0A%20%20%20%20%20%20%20%20p0%20-%3E%20p0_1e4%20%5Blabel%3D%22Sicilian%22%5D%3B%20p0_1e4%20%5Blabel%3D%221.%20e4%22%5D%3B%20p0_1e4%20-%3E%20p1%3B%0A%20%20%20%20%20%20%20%20p1%20-%3E%20p1_1c5%20%5Blabel%3D%22Sicilian%22%5D%3B%20p1_1c5%20%5Blabel%3D%221.%20%E2%80%A6%20c5%22%2C%20style%3Dfilled%5D%3B%20p1_1c5%20-%3E%20p2%3B%0A%20%20%20%20%20%20%20%20p2%20-%3E%20p2_2Nf3%20%5Blabel%3D%22Open%20Sicilian%22%5D%3B%20p2_2Nf3%20%5Blabel%3D%222.%20Nf3%22%5D%3B%20p2_2Nf3%20-%3E%20p3%3B%0A%20%20%20%20%20%20%20%20p3%20-%3E%20p3_2d6%20%5Blabel%3D%22Mainline%22%5D%3B%20p3_2d6%20%5Blabel%3D%222.%20%E2%80%A6%20d6%22%2C%20style%3Dfilled%5D%3B%20p3_2d6%20-%3E%20p4%3B%0A%20%20%20%20%20%20%20%20p4%20-%3E%20p4_3d4%20%5Blabel%3D%22Mainline%22%5D%3B%20p4_3d4%20%5Blabel%3D%223.%20d4%22%5D%3B%20p4_3d4%20-%3E%20p5%3B%0A%20%20%20%20%20%20%20%20p5%20-%3E%20p5_3cxd4%20%5Blabel%3D%22Mainline%22%5D%3B%20p5_3cxd4%20%5Blabel%3D%223.%20%E2%80%A6%20cxd4%22%2C%20style%3Dfilled%5D%3B%20p5_3cxd4%20-%3E%20p6%3B%0A%20%20%20%20%20%20%20%20p6%20-%3E%20p6_4Nxd4%20%5Blabel%3D%22Mainline%22%5D%3B%20p6_4Nxd4%20%5Blabel%3D%224.%20Nxd4%22%5D%3B%20p6_4Nxd4%20-%3E%20p7%3B%0A%20%20%20%20%20%20%20%20p7%20-%3E%20p7_4Nf6%20%5Blabel%3D%22Mainline%22%5D%3B%20p7_4Nf6%20%5Blabel%3D%224.%20%E2%80%A6%20Nf6%22%2C%20style%3Dfilled%5D%3B%20p7_4Nf6%20-%3E%20p8%3B%0A%20%20%20%20%20%20%20%20p8%20-%3E%20p8_5Nc3%20%5Blabel%3D%22Mainline%22%5D%3B%20p8_5Nc3%20%5Blabel%3D%225.%20Nc3%22%5D%3B%20p8_5Nc3%20-%3E%20p9%3B%0A%20%20%20%20%20%20%20%20p9%20-%3E%20p9_5e6%20%5Blabel%3D%22Scheveningen%22%5D%3B%20p9_5e6%20%5Blabel%3D%225.%20%E2%80%A6%20e6%22%2C%20style%3Dfilled%5D%3B%20p9_5e6%20-%3E%20p10%3B%0A%20%20%20%20%20%20%20%20p10%20-%3E%20p10_6Be2%20%5Blabel%3D%22Scheveningen%22%5D%3B%20p10_6Be2%20%5Blabel%3D%226.%20Be2%22%5D%3B%20p10_6Be2%20-%3E%20p11%3B%0A%20%20%20%20%20%20%20%20p11%20-%3E%20p11_6a6%20%5Blabel%3D%22Scheveningen%22%5D%3B%20p11_6a6%20%5Blabel%3D%226.%20%E2%80%A6%20a6%22%2C%20style%3Dfilled%5D%3B%20p11_6a6%20-%3E%20p12%3B%0A%20%20%20%20%20%20%20%20p9%20-%3E%20p9_5a6%20%5Blabel%3D%22Najdorf%22%5D%3B%20p9_5a6%20%5Blabel%3D%225.%20%E2%80%A6%20a6%22%2C%20style%3Dfilled%5D%3B%20p9_5a6%20-%3E%20p13%3B%0A%20%20%20%20%20%20%20%20p13%20-%3E%20p13_6Be2%20%5Blabel%3D%22Najdorf%22%5D%3B%20p13_6Be2%20%5Blabel%3D%226.%20Be2%22%5D%3B%20p13_6Be2%20-%3E%20p14%3B%0A%20%20%20%20%20%20%20%20p14%20-%3E%20p14_6e6%20%5Blabel%3D%22Najdorf%20%E2%86%92%20Scheveningen%22%5D%3B%20p14_6e6%20%5Blabel%3D%226.%20%E2%80%A6%20e6%22%2C%20style%3Dfilled%5D%3B%20p14_6e6%20-%3E%20p12%3B%0A%20%20%20%20%20%20%20%20p9%20-%3E%20p9_5g6%20%5Blabel%3D%22Dragon%22%5D%3B%20p9_5g6%20%5Blabel%3D%225.%20%E2%80%A6%20g6%22%2C%20style%3Dfilled%5D%3B%20p9_5g6%20-%3E%20p15%3B%0A%20%20%20%20%20%20%20%20p15%20-%3E%20p15_6Be3%20%5Blabel%3D%22Yugoslav%22%5D%3B%20p15_6Be3%20%5Blabel%3D%226.%20Be3%22%5D%3B%20p15_6Be3%20-%3E%20p16%3B%0A%20%20%20%20%20%20%20%20p15%20-%3E%20p15_6Be2%20%5Blabel%3D%22Dragon%22%5D%3B%20p15_6Be2%20%5Blabel%3D%226.%20Be2%22%5D%3B%20p15_6Be2%20-%3E%20p17%3B%0A%20%20%20%20%20%20%20%20p9%20-%3E%20p9_5Nc6%20%5Blabel%3D%22Classical%22%5D%3B%20p9_5Nc6%20%5Blabel%3D%225.%20%E2%80%A6%20Nc6%22%2C%20style%3Dfilled%5D%3B%20p9_5Nc6%20-%3E%20p18%3B%0A%20%20%20%20%20%20%20%20p18%20-%3E%20p18_6Be2%20%5Blabel%3D%22Classical%22%5D%3B%20p18_6Be2%20%5Blabel%3D%226.%20Be2%22%5D%3B%20p18_6Be2%20-%3E%20p19%3B%0A%20%20%20%20%20%20%20%20p3%20-%3E%20p3_2Nc6%20%5Blabel%3D%22Kalashnikov%22%5D%3B%20p3_2Nc6%20%5Blabel%3D%222.%20%E2%80%A6%20Nc6%22%2C%20style%3Dfilled%5D%3B%20p3_2Nc6%20-%3E%20p20%3B%0A%20%20%20%20%20%20%20%20p20%20-%3E%20p20_3d4%20%5Blabel%3D%22Kalashnikov%22%5D%3B%20p20_3d4%20%5Blabel%3D%223.%20d4%22%5D%3B%20p20_3d4%20-%3E%20p21%3B%0A%20%20%20%20%20%20%20%20p21%20-%3E%20p21_3cxd4%20%5Blabel%3D%22Kalashnikov%22%5D%3B%20p21_3cxd4%20%5Blabel%3D%223.%20%E2%80%A6%20cxd4%22%2C%20style%3Dfilled%5D%3B%20p21_3cxd4%20-%3E%20p22%3B%0A%20%20%20%20%20%20%20%20p22%20-%3E%20p22_4Nxd4%20%5Blabel%3D%22Kalashnikov%22%5D%3B%20p22_4Nxd4%20%5Blabel%3D%224.%20Nxd4%22%5D%3B%20p22_4Nxd4%20-%3E%20p23%3B%0A%20%20%20%20%20%20%20%20p23%20-%3E%20p23_4g6%20%5Blabel%3D%22Sveshnikov%20%E2%86%92%20Accelerated%20Dragon%22%5D%3B%20p23_4g6%20%5Blabel%3D%224.%20%E2%80%A6%20g6%22%2C%20style%3Dfilled%5D%3B%20p23_4g6%20-%3E%20p24%3B%0A%20%20%20%20%20%20%20%20p24%20-%3E%20p24_5Nc3%20%5Blabel%3D%22Accelerated%20Dragon%22%5D%3B%20p24_5Nc3%20%5Blabel%3D%225.%20Nc3%22%5D%3B%20p24_5Nc3%20-%3E%20p25%3B%0A%20%20%20%20%20%20%20%20p25%20-%3E%20p25_5Bg7%20%5Blabel%3D%22Accelerated%20Dragon%22%5D%3B%20p25_5Bg7%20%5Blabel%3D%225.%20%E2%80%A6%20Bg7%22%2C%20style%3Dfilled%5D%3B%20p25_5Bg7%20-%3E%20p26%3B%0A%20%20%20%20%20%20%20%20p26%20-%3E%20p26_6Be3%20%5Blabel%3D%22Accelerated%20Dragon%22%5D%3B%20p26_6Be3%20%5Blabel%3D%226.%20Be3%22%5D%3B%20p26_6Be3%20-%3E%20p27%3B%0A%20%20%20%20%20%20%20%20p23%20-%3E%20p23_4e5%20%5Blabel%3D%22Kalashnikov%22%5D%3B%20p23_4e5%20%5Blabel%3D%224.%20%E2%80%A6%20e5%22%2C%20style%3Dfilled%5D%3B%20p23_4e5%20-%3E%20p28%3B%0A%20%20%20%20%20%20%20%20p23%20-%3E%20p23_4Nf6%20%5Blabel%3D%22Sveshnikov%22%5D%3B%20p23_4Nf6%20%5Blabel%3D%224.%20%E2%80%A6%20Nf6%22%2C%20style%3Dfilled%5D%3B%20p23_4Nf6%20-%3E%20p29%3B%0A%20%20%20%20%20%20%20%20p29%20-%3E%20p29_5Nc3%20%5Blabel%3D%22Sveshnikov%22%5D%3B%20p29_5Nc3%20%5Blabel%3D%225.%20Nc3%22%5D%3B%20p29_5Nc3%20-%3E%20p30%3B%0A%20%20%20%20%20%20%20%20p30%20-%3E%20p30_5d6%20%5Blabel%3D%22Sveshnikov%20%E2%86%92%20Classic%22%5D%3B%20p30_5d6%20%5Blabel%3D%225.%20%E2%80%A6%20d6%22%2C%20style%3Dfilled%5D%3B%20p30_5d6%20-%3E%20p18%3B%0A%20%20%20%20%20%20%20%20p30%20-%3E%20p30_5e6%20%5Blabel%3D%22Sveshnikov%20%E2%86%92%20Four%20Knights%22%5D%3B%20p30_5e6%20%5Blabel%3D%225.%20%E2%80%A6%20e6%22%2C%20style%3Dfilled%5D%3B%20p30_5e6%20-%3E%20p31%3B%0A%20%20%20%20%20%20%20%20p23%20-%3E%20p23_4e6%20%5Blabel%3D%22Sveshnikov%20%E2%86%92%20Taimanov%22%5D%3B%20p23_4e6%20%5Blabel%3D%224.%20%E2%80%A6%20e6%22%2C%20style%3Dfilled%5D%3B%20p23_4e6%20-%3E%20p32%3B%0A%20%20%20%20%20%20%20%20p32%20-%3E%20p32_5Nc3%20%5Blabel%3D%22Taimanov%22%5D%3B%20p32_5Nc3%20%5Blabel%3D%225.%20Nc3%22%5D%3B%20p32_5Nc3%20-%3E%20p33%3B%0A%20%20%20%20%20%20%20%20p33%20-%3E%20p33_5Nf6%20%5Blabel%3D%22Taimanov%20%E2%86%92%20Four%20Knights%22%5D%3B%20p33_5Nf6%20%5Blabel%3D%225.%20%E2%80%A6%20Nf6%22%2C%20style%3Dfilled%5D%3B%20p33_5Nf6%20-%3E%20p31%3B%0A%20%20%20%20%20%20%20%20p33%20-%3E%20p33_5a6%20%5Blabel%3D%22Taimanov%22%5D%3B%20p33_5a6%20%5Blabel%3D%225.%20%E2%80%A6%20a6%22%2C%20style%3Dfilled%5D%3B%20p33_5a6%20-%3E%20p34%3B%0A%20%20%20%20%20%20%20%20p3%20-%3E%20p3_2e6%20%5Blabel%3D%22Four%20Knights%22%5D%3B%20p3_2e6%20%5Blabel%3D%222.%20%E2%80%A6%20e6%22%2C%20style%3Dfilled%5D%3B%20p3_2e6%20-%3E%20p35%3B%0A%20%20%20%20%20%20%20%20p35%20-%3E%20p35_3d4%20%5Blabel%3D%22Four%20Knights%22%5D%3B%20p35_3d4%20%5Blabel%3D%223.%20d4%22%5D%3B%20p35_3d4%20-%3E%20p36%3B%0A%20%20%20%20%20%20%20%20p36%20-%3E%20p36_3cxd4%20%5Blabel%3D%22Four%20Knights%22%5D%3B%20p36_3cxd4%20%5Blabel%3D%223.%20%E2%80%A6%20cxd4%22%2C%20style%3Dfilled%5D%3B%20p36_3cxd4%20-%3E%20p37%3B%0A%20%20%20%20%20%20%20%20p37%20-%3E%20p37_4Nxd4%20%5Blabel%3D%22Four%20Knights%22%5D%3B%20p37_4Nxd4%20%5Blabel%3D%224.%20Nxd4%22%5D%3B%20p37_4Nxd4%20-%3E%20p38%3B%0A%20%20%20%20%20%20%20%20p38%20-%3E%20p38_4Nf6%20%5Blabel%3D%22Four%20Knights%22%5D%3B%20p38_4Nf6%20%5Blabel%3D%224.%20%E2%80%A6%20Nf6%22%2C%20style%3Dfilled%5D%3B%20p38_4Nf6%20-%3E%20p39%3B%0A%20%20%20%20%20%20%20%20p39%20-%3E%20p39_5Nc3%20%5Blabel%3D%22Four%20Knights%22%5D%3B%20p39_5Nc3%20%5Blabel%3D%225.%20Nc3%22%5D%3B%20p39_5Nc3%20-%3E%20p40%3B%0A%20%20%20%20%20%20%20%20p40%20-%3E%20p40_5Nc6%20%5Blabel%3D%22Four%20Knights%22%5D%3B%20p40_5Nc6%20%5Blabel%3D%225.%20%E2%80%A6%20Nc6%22%2C%20style%3Dfilled%5D%3B%20p40_5Nc6%20-%3E%20p31%3B%0A%20%20%20%20%20%20%20%20p38%20-%3E%20p38_4Nc6%20%5Blabel%3D%22Taimanov%22%5D%3B%20p38_4Nc6%20%5Blabel%3D%224.%20%E2%80%A6%20Nc6%22%2C%20style%3Dfilled%5D%3B%20p38_4Nc6%20-%3E%20p32%3B%0A%20%20%20%20%20%20%20%20p38%20-%3E%20p38_4a6%20%5Blabel%3D%22Kan%22%5D%3B%20p38_4a6%20%5Blabel%3D%224.%20%E2%80%A6%20a6%22%2C%20style%3Dfilled%5D%3B%20p38_4a6%20-%3E%20p41%3B%0A%20%20%20%20%20%20%20%20p41%20-%3E%20p41_5Nc3%20%5Blabel%3D%22Kan%22%5D%3B%20p41_5Nc3%20%5Blabel%3D%225.%20Nc3%22%5D%3B%20p41_5Nc3%20-%3E%20p42%3B%0A%20%20%20%20%20%20%20%20p42%20-%3E%20p42_5Nc6%20%5Blabel%3D%22Kan%20%E2%86%92%20Taimanov%22%5D%3B%20p42_5Nc6%20%5Blabel%3D%225.%20%E2%80%A6%20Nc6%22%2C%20style%3Dfilled%5D%3B%20p42_5Nc6%20-%3E%20p34%3B%0A%20%20%20%20%7D%0A%7D%0A" rel="noreferrer">here</a>.</p>
  
  <pre><code>digraph chess_openings {
      {
          node [shape=point];
          p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42;
      }
      {
          node [shape=box];
          p0 -&gt; p0_1e4 [label="Sicilian"]; p0_1e4 [label="1. e4"]; p0_1e4 -&gt; p1;
          p1 -&gt; p1_1c5 [label="Sicilian"]; p1_1c5 [label="1. … c5", style=filled]; p1_1c5 -&gt; p2;
          p2 -&gt; p2_2Nf3 [label="Open Sicilian"]; p2_2Nf3 [label="2. Nf3"]; p2_2Nf3 -&gt; p3;
          p3 -&gt; p3_2d6 [label="Mainline"]; p3_2d6 [label="2. … d6", style=filled]; p3_2d6 -&gt; p4;
          p4 -&gt; p4_3d4 [label="Mainline"]; p4_3d4 [label="3. d4"]; p4_3d4 -&gt; p5;
          p5 -&gt; p5_3cxd4 [label="Mainline"]; p5_3cxd4 [label="3. … cxd4", style=filled]; p5_3cxd4 -&gt; p6;
          p6 -&gt; p6_4Nxd4 [label="Mainline"]; p6_4Nxd4 [label="4. Nxd4"]; p6_4Nxd4 -&gt; p7;
          p7 -&gt; p7_4Nf6 [label="Mainline"]; p7_4Nf6 [label="4. … Nf6", style=filled]; p7_4Nf6 -&gt; p8;
          p8 -&gt; p8_5Nc3 [label="Mainline"]; p8_5Nc3 [label="5. Nc3"]; p8_5Nc3 -&gt; p9;
          p9 -&gt; p9_5e6 [label="Scheveningen"]; p9_5e6 [label="5. … e6", style=filled]; p9_5e6 -&gt; p10;
          p10 -&gt; p10_6Be2 [label="Scheveningen"]; p10_6Be2 [label="6. Be2"]; p10_6Be2 -&gt; p11;
          p11 -&gt; p11_6a6 [label="Scheveningen"]; p11_6a6 [label="6. … a6", style=filled]; p11_6a6 -&gt; p12;
          p9 -&gt; p9_5a6 [label="Najdorf"]; p9_5a6 [label="5. … a6", style=filled]; p9_5a6 -&gt; p13;
          p13 -&gt; p13_6Be2 [label="Najdorf"]; p13_6Be2 [label="6. Be2"]; p13_6Be2 -&gt; p14;
          p14 -&gt; p14_6e6 [label="Najdorf → Scheveningen"]; p14_6e6 [label="6. … e6", style=filled]; p14_6e6 -&gt; p12;
          p9 -&gt; p9_5g6 [label="Dragon"]; p9_5g6 [label="5. … g6", style=filled]; p9_5g6 -&gt; p15;
          p15 -&gt; p15_6Be3 [label="Yugoslav"]; p15_6Be3 [label="6. Be3"]; p15_6Be3 -&gt; p16;
          p15 -&gt; p15_6Be2 [label="Dragon"]; p15_6Be2 [label="6. Be2"]; p15_6Be2 -&gt; p17;
          p9 -&gt; p9_5Nc6 [label="Classical"]; p9_5Nc6 [label="5. … Nc6", style=filled]; p9_5Nc6 -&gt; p18;
          p18 -&gt; p18_6Be2 [label="Classical"]; p18_6Be2 [label="6. Be2"]; p18_6Be2 -&gt; p19;
          p3 -&gt; p3_2Nc6 [label="Kalashnikov"]; p3_2Nc6 [label="2. … Nc6", style=filled]; p3_2Nc6 -&gt; p20;
          p20 -&gt; p20_3d4 [label="Kalashnikov"]; p20_3d4 [label="3. d4"]; p20_3d4 -&gt; p21;
          p21 -&gt; p21_3cxd4 [label="Kalashnikov"]; p21_3cxd4 [label="3. … cxd4", style=filled]; p21_3cxd4 -&gt; p22;
          p22 -&gt; p22_4Nxd4 [label="Kalashnikov"]; p22_4Nxd4 [label="4. Nxd4"]; p22_4Nxd4 -&gt; p23;
          p23 -&gt; p23_4g6 [label="Sveshnikov → Accelerated Dragon"]; p23_4g6 [label="4. … g6", style=filled]; p23_4g6 -&gt; p24;
          p24 -&gt; p24_5Nc3 [label="Accelerated Dragon"]; p24_5Nc3 [label="5. Nc3"]; p24_5Nc3 -&gt; p25;
          p25 -&gt; p25_5Bg7 [label="Accelerated Dragon"]; p25_5Bg7 [label="5. … Bg7", style=filled]; p25_5Bg7 -&gt; p26;
          p26 -&gt; p26_6Be3 [label="Accelerated Dragon"]; p26_6Be3 [label="6. Be3"]; p26_6Be3 -&gt; p27;
          p23 -&gt; p23_4e5 [label="Kalashnikov"]; p23_4e5 [label="4. … e5", style=filled]; p23_4e5 -&gt; p28;
          p23 -&gt; p23_4Nf6 [label="Sveshnikov"]; p23_4Nf6 [label="4. … Nf6", style=filled]; p23_4Nf6 -&gt; p29;
          p29 -&gt; p29_5Nc3 [label="Sveshnikov"]; p29_5Nc3 [label="5. Nc3"]; p29_5Nc3 -&gt; p30;
          p30 -&gt; p30_5d6 [label="Sveshnikov → Classic"]; p30_5d6 [label="5. … d6", style=filled]; p30_5d6 -&gt; p18;
          p30 -&gt; p30_5e6 [label="Sveshnikov → Four Knights"]; p30_5e6 [label="5. … e6", style=filled]; p30_5e6 -&gt; p31;
          p23 -&gt; p23_4e6 [label="Sveshnikov → Taimanov"]; p23_4e6 [label="4. … e6", style=filled]; p23_4e6 -&gt; p32;
          p32 -&gt; p32_5Nc3 [label="Taimanov"]; p32_5Nc3 [label="5. Nc3"]; p32_5Nc3 -&gt; p33;
          p33 -&gt; p33_5Nf6 [label="Taimanov → Four Knights"]; p33_5Nf6 [label="5. … Nf6", style=filled]; p33_5Nf6 -&gt; p31;
          p33 -&gt; p33_5a6 [label="Taimanov"]; p33_5a6 [label="5. … a6", style=filled]; p33_5a6 -&gt; p34;
          p3 -&gt; p3_2e6 [label="Four Knights"]; p3_2e6 [label="2. … e6", style=filled]; p3_2e6 -&gt; p35;
          p35 -&gt; p35_3d4 [label="Four Knights"]; p35_3d4 [label="3. d4"]; p35_3d4 -&gt; p36;
          p36 -&gt; p36_3cxd4 [label="Four Knights"]; p36_3cxd4 [label="3. … cxd4", style=filled]; p36_3cxd4 -&gt; p37;
          p37 -&gt; p37_4Nxd4 [label="Four Knights"]; p37_4Nxd4 [label="4. Nxd4"]; p37_4Nxd4 -&gt; p38;
          p38 -&gt; p38_4Nf6 [label="Four Knights"]; p38_4Nf6 [label="4. … Nf6", style=filled]; p38_4Nf6 -&gt; p39;
          p39 -&gt; p39_5Nc3 [label="Four Knights"]; p39_5Nc3 [label="5. Nc3"]; p39_5Nc3 -&gt; p40;
          p40 -&gt; p40_5Nc6 [label="Four Knights"]; p40_5Nc6 [label="5. … Nc6", style=filled]; p40_5Nc6 -&gt; p31;
          p38 -&gt; p38_4Nc6 [label="Taimanov"]; p38_4Nc6 [label="4. … Nc6", style=filled]; p38_4Nc6 -&gt; p32;
          p38 -&gt; p38_4a6 [label="Kan"]; p38_4a6 [label="4. … a6", style=filled]; p38_4a6 -&gt; p41;
          p41 -&gt; p41_5Nc3 [label="Kan"]; p41_5Nc3 [label="5. Nc3"]; p41_5Nc3 -&gt; p42;
          p42 -&gt; p42_5Nc6 [label="Kan → Taimanov"]; p42_5Nc6 [label="5. … Nc6", style=filled]; p42_5Nc6 -&gt; p34;
      }
  }
  </code></pre>
  
  <p>This is what the output looks like:</p>
  
  <p><a href="https://i.sstatic.net/5Bg1p.png" rel="noreferrer"><img src="https://i.sstatic.net/5Bg1p.png" alt="enter image description here"></a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-04-20T01:04:54.937Z
Answers.LastActivityDate: 2020-04-20T01:33:23.840Z
Answers.LastEditDate: 2020-04-20T01:33:23.840Z
Answers.UserDisplayName: which-line
Answers.Body: <p><a href="https://tailuge.github.io/chess-o-tron/public/openings/openingtree.html" rel="nofollow noreferrer">https://tailuge.github.io/chess-o-tron/public/openings/openingtree.html</a>
  and
  <a href="https://www.openingtree.com/" rel="nofollow noreferrer">https://www.openingtree.com/</a> 
  both create something similar from your games on lichess.org. I do not believe they take into account opening names or transpositions. </p>
  
  <p>You could draw this on paper, or you could use a online drawing software such as Lucidchart or Google Drawings. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-04-18T09:56:26.167Z
Answers.Text: Thanks but I was searching for something as a tool to create a opening lines guideby manually entering the moves rather than from a database.
Answers.UserDisplayName: AKP2002
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-04-13T02:53:04.783Z
Answers.LastActivityDate: 2020-04-13T02:53:04.783Z
Answers.UserDisplayName: pulsar512b
Answers.Body: <p>I created a (free) tool for visualizing opening repertoires. If anyone stumbling across this is interested it's called <a href="https://www.treevis.org/" rel="nofollow noreferrer">https://www.treevis.org/</a> where you can either input your lines manually or import a pgn (for example from a lichess study). You can hover above the moves and the position will be shown on the chessboard.</p>
  <p>Enjoy!</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-07-09T19:50:47.507Z
Answers.Text: Very Nice Site
  Can we truncate moves or half moves after a certain number
  Could it be Horizontal LTR
  and could it display statistics and engines scores at the what depth with what engines and the number  of nodes searched?
Answers.UserDisplayName: Wassim Saeed
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-07-09T19:53:20.820Z
Answers.Text: and there is  no move number
Answers.UserDisplayName: Wassim Saeed
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-07-09T19:55:31.283Z
Answers.Text: what are the ways to make every node as informative as possible
  and printable.
Answers.UserDisplayName: Wassim Saeed
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-07-11T07:18:58.540Z
Answers.Text: Asking the real questions! Thanks for all the input, I'll try to adress your points one by one
  - The main purpose of the tool is to manage and review your variations, so truncating would be possible but I'm not sure where I would put a button for it and how many people would use that. Often you have lines that need to go deeper than others, e.g. to show the continuation of a trap
Answers.UserDisplayName: LehrerB
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-07-11T07:19:23.883Z
Answers.Text: - I've decided to not to show the move number in each node as it would be a lot of redundant Information, but if you click on the analysis tool you'll still be able to see the move order (by de-activating engine/explorer/assistant)
  - left to right and bottom up are planned features with low priority, they will be added eventually
  - you can add comments and could take notes of engine evaluation and other stats but there is no automated way to do that for the whole tree. It could take a long time to calculate evaluations for 500+ moves, so I'm not sure how I would implement a feature like that
Answers.UserDisplayName: LehrerB
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-07-09T15:00:28.500Z
Answers.LastActivityDate: 2024-07-09T15:00:28.500Z
Answers.UserDisplayName: LehrerB
Body: <p>I came across this <a href="https://chess.stackexchange.com/questions/4136/opening-tree-graph">Opening tree graph</a> question where a very elegant Opening tree as displayed.
   <img src="https://2.bp.blogspot.com/-cNVCvQNxkkQ/UNZONkCry7I/AAAAAAAAAZs/p21dAAXLXGE/s1600/sicilian.png" alt="text"></p>
  
  <ol>
  <li>Is there a way I could make a personal opening book in this format? If yes, then which software should (preferentially free) I use? </li>
  <li>If yes, how do you handle transposition?</li>
  <li>If no, is there some there some other efficient way of storing personal opening line ?</li>
  </ol>
  
  <p><strong>Clarification :</strong> Maybe by question was misleading but  I was searching for something as a tool to create a opening lines guide by manually entering the moves rather than from a database.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-11-09T16:15:38.927Z
Comments.Text: lichess analysis board creates a tree automatically yo start making moves on the board the you can download the pgn
Comments.UserDisplayName: Felix Too
Tags: <opening><software><pgn><open-source>
Title: Creating a Opening Lines Book in ' tree-like' format
ThreadText: # Creating a Opening Lines Book in ' tree-like' format
  
  (Asked by: username_0 on 2020-04-12)
  
  I came across this [Opening tree graph](https://chess.stackexchange.com/questions/4136/opening-tree-graph) question where a very elegant Opening tree as displayed.
  ![text](https://2.bp.blogspot.com/-cNVCvQNxkkQ/UNZONkCry7I/AAAAAAAAAZs/p21dAAXLXGE/s1600/sicilian.png)
  
  1. Is there a way I could make a personal opening book in this format? If yes, then which software should (preferentially free) I use?
  2. If yes, how do you handle transposition?
  3. If no, is there some there some other efficient way of storing personal opening line ?
  
  **Clarification :** Maybe by question was misleading but I was searching for something as a tool to create a opening lines guide by manually entering the moves rather than from a database.
  
  **Tags:** opening, software, pgn, open-source
  
  > **Comments:**
  > **username_1**: lichess analysis board creates a tree automatically yo start making moves on the board the you can download the pgn  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_2 on 2020-04-20. Score: 7 | Accepted answer
  
  Given various tell-tale signs, that graph was almost certainly generated with GraphViz.  GraphViz is free, so you can produce similar diagrams yourself by downloading and installing it, or by using an online editor.  If you want to mimic the style in the diagram you posted, start with a template that looks like this:
  digraph chess_openings {
      {
          node [shape=point];
      }
      {
          node [shape=box];
      }
  }
  
  which creates two groups of nodes: one for positions, which will be shown as points, and one for moves, which will be shown as boxes.
  For each of white's moves, you'll have to write code that looks something like this in the second group:
  p0 -> p0_1e4 [label="Sicilian"]; p0_1e4 [label="1. e4"]; p0_1e4 -> p1;
  
  which says that "from Position #0 (p0), white can play the Sicilian by moving "1. e4", which will result in Position #1 (p1)".  Similarly, for black's moves, you'll have to write code that looks like this:
  p1 -> p1_1c5 [label="Sicilian"]; p1_1c5 [label="1. … c5", style=filled]; p1_1c5 -> p2;
  
  which says that "from Position #1, black can play the Sicilian by moving "1. … c5", which will result in Position #2".  If you have a live preview running, the position numbers will be visible in the diagram as you write the moves.  When you're ready to hide a position, add it to a list in the first group:
  p0, p1, p2;
  
  Below is a transcription of the graph in your question.  You can play with the code here.
  digraph chess_openings {
      {
          node [shape=point];
          p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42;
      }
      {
          node [shape=box];
          p0 -> p0_1e4 [label="Sicilian"]; p0_1e4 [label="1. e4"]; p0_1e4 -> p1;
          p1 -> p1_1c5 [label="Sicilian"]; p1_1c5 [label="1. … c5", style=filled]; p1_1c5 -> p2;
          p2 -> p2_2Nf3 [label="Open Sicilian"]; p2_2Nf3 [label="2. Nf3"]; p2_2Nf3 -> p3;
          p3 -> p3_2d6 [label="Mainline"]; p3_2d6 [label="2. … d6", style=filled]; p3_2d6 -> p4;
          p4 -> p4_3d4 [label="Mainline"]; p4_3d4 [label="3. d4"]; p4_3d4 -> p5;
          p5 -> p5_3cxd4 [label="Mainline"]; p5_3cxd4 [label="3. … cxd4", style=filled]; p5_3cxd4 -> p6;
          p6 -> p6_4Nxd4 [label="Mainline"]; p6_4Nxd4 [label="4. Nxd4"]; p6_4Nxd4 -> p7;
          p7 -> p7_4Nf6 [label="Mainline"]; p7_4Nf6 [label="4. … Nf6", style=filled]; p7_4Nf6 -> p8;
          p8 -> p8_5Nc3 [label="Mainline"]; p8_5Nc3 [label="5. Nc3"]; p8_5Nc3 -> p9;
          p9 -> p9_5e6 [label="Scheveningen"]; p9_5e6 [label="5. … e6", style=filled]; p9_5e6 -> p10;
          p10 -> p10_6Be2 [label="Scheveningen"]; p10_6Be2 [label="6. Be2"]; p10_6Be2 -> p11;
          p11 -> p11_6a6 [label="Scheveningen"]; p11_6a6 [label="6. … a6", style=filled]; p11_6a6 -> p12;
          p9 -> p9_5a6 [label="Najdorf"]; p9_5a6 [label="5. … a6", style=filled]; p9_5a6 -> p13;
          p13 -> p13_6Be2 [label="Najdorf"]; p13_6Be2 [label="6. Be2"]; p13_6Be2 -> p14;
          p14 -> p14_6e6 [label="Najdorf → Scheveningen"]; p14_6e6 [label="6. … e6", style=filled]; p14_6e6 -> p12;
          p9 -> p9_5g6 [label="Dragon"]; p9_5g6 [label="5. … g6", style=filled]; p9_5g6 -> p15;
          p15 -> p15_6Be3 [label="Yugoslav"]; p15_6Be3 [label="6. Be3"]; p15_6Be3 -> p16;
          p15 -> p15_6Be2 [label="Dragon"]; p15_6Be2 [label="6. Be2"]; p15_6Be2 -> p17;
          p9 -> p9_5Nc6 [label="Classical"]; p9_5Nc6 [label="5. … Nc6", style=filled]; p9_5Nc6 -> p18;
          p18 -> p18_6Be2 [label="Classical"]; p18_6Be2 [label="6. Be2"]; p18_6Be2 -> p19;
          p3 -> p3_2Nc6 [label="Kalashnikov"]; p3_2Nc6 [label="2. … Nc6", style=filled]; p3_2Nc6 -> p20;
          p20 -> p20_3d4 [label="Kalashnikov"]; p20_3d4 [label="3. d4"]; p20_3d4 -> p21;
          p21 -> p21_3cxd4 [label="Kalashnikov"]; p21_3cxd4 [label="3. … cxd4", style=filled]; p21_3cxd4 -> p22;
          p22 -> p22_4Nxd4 [label="Kalashnikov"]; p22_4Nxd4 [label="4. Nxd4"]; p22_4Nxd4 -> p23;
          p23 -> p23_4g6 [label="Sveshnikov → Accelerated Dragon"]; p23_4g6 [label="4. … g6", style=filled]; p23_4g6 -> p24;
          p24 -> p24_5Nc3 [label="Accelerated Dragon"]; p24_5Nc3 [label="5. Nc3"]; p24_5Nc3 -> p25;
          p25 -> p25_5Bg7 [label="Accelerated Dragon"]; p25_5Bg7 [label="5. … Bg7", style=filled]; p25_5Bg7 -> p26;
          p26 -> p26_6Be3 [label="Accelerated Dragon"]; p26_6Be3 [label="6. Be3"]; p26_6Be3 -> p27;
          p23 -> p23_4e5 [label="Kalashnikov"]; p23_4e5 [label="4. … e5", style=filled]; p23_4e5 -> p28;
          p23 -> p23_4Nf6 [label="Sveshnikov"]; p23_4Nf6 [label="4. … Nf6", style=filled]; p23_4Nf6 -> p29;
          p29 -> p29_5Nc3 [label="Sveshnikov"]; p29_5Nc3 [label="5. Nc3"]; p29_5Nc3 -> p30;
          p30 -> p30_5d6 [label="Sveshnikov → Classic"]; p30_5d6 [label="5. … d6", style=filled]; p30_5d6 -> p18;
          p30 -> p30_5e6 [label="Sveshnikov → Four Knights"]; p30_5e6 [label="5. … e6", style=filled]; p30_5e6 -> p31;
          p23 -> p23_4e6 [label="Sveshnikov → Taimanov"]; p23_4e6 [label="4. … e6", style=filled]; p23_4e6 -> p32;
          p32 -> p32_5Nc3 [label="Taimanov"]; p32_5Nc3 [label="5. Nc3"]; p32_5Nc3 -> p33;
          p33 -> p33_5Nf6 [label="Taimanov → Four Knights"]; p33_5Nf6 [label="5. … Nf6", style=filled]; p33_5Nf6 -> p31;
          p33 -> p33_5a6 [label="Taimanov"]; p33_5a6 [label="5. … a6", style=filled]; p33_5a6 -> p34;
          p3 -> p3_2e6 [label="Four Knights"]; p3_2e6 [label="2. … e6", style=filled]; p3_2e6 -> p35;
          p35 -> p35_3d4 [label="Four Knights"]; p35_3d4 [label="3. d4"]; p35_3d4 -> p36;
          p36 -> p36_3cxd4 [label="Four Knights"]; p36_3cxd4 [label="3. … cxd4", style=filled]; p36_3cxd4 -> p37;
          p37 -> p37_4Nxd4 [label="Four Knights"]; p37_4Nxd4 [label="4. Nxd4"]; p37_4Nxd4 -> p38;
          p38 -> p38_4Nf6 [label="Four Knights"]; p38_4Nf6 [label="4. … Nf6", style=filled]; p38_4Nf6 -> p39;
          p39 -> p39_5Nc3 [label="Four Knights"]; p39_5Nc3 [label="5. Nc3"]; p39_5Nc3 -> p40;
          p40 -> p40_5Nc6 [label="Four Knights"]; p40_5Nc6 [label="5. … Nc6", style=filled]; p40_5Nc6 -> p31;
          p38 -> p38_4Nc6 [label="Taimanov"]; p38_4Nc6 [label="4. … Nc6", style=filled]; p38_4Nc6 -> p32;
          p38 -> p38_4a6 [label="Kan"]; p38_4a6 [label="4. … a6", style=filled]; p38_4a6 -> p41;
          p41 -> p41_5Nc3 [label="Kan"]; p41_5Nc3 [label="5. Nc3"]; p41_5Nc3 -> p42;
          p42 -> p42_5Nc6 [label="Kan → Taimanov"]; p42_5Nc6 [label="5. … Nc6", style=filled]; p42_5Nc6 -> p34;
      }
  }
  
  This is what the output looks like:
  
  
  ---
  
  ### Answer by username_3 on 2020-04-13. Score: 3
  
  <https://tailuge.github.io/chess-o-tron/public/openings/openingtree.html>
  and
  <https://www.openingtree.com/>
  both create something similar from your games on lichess.org. I do not believe they take into account opening names or transpositions.
  
  You could draw this on paper, or you could use a online drawing software such as Lucidchart or Google Drawings.
  
  > **Comments:**
  > **username_0**: Thanks but I was searching for something as a tool to create a opening lines guideby manually entering the moves rather than from a database.  
  
  ---
  
  ### Answer by username_4 on 2024-07-09. Score: 1
  
  I created a (free) tool for visualizing opening repertoires. If anyone stumbling across this is interested it's called <https://www.treevis.org/> where you can either input your lines manually or import a pgn (for example from a lichess study). You can hover above the moves and the position will be shown on the chessboard.
  
  Enjoy!
  
  > **Comments:**
  > **username_5**: Very Nice Site Can we truncate moves or half moves after a certain number Could it be Horizontal LTR and could it display statistics and engines scores at the what depth with what engines and the number  of nodes searched?  
  > **username_5**: and there is  no move number  
  > **username_5**: what are the ways to make every node as informative as possible and printable.  
  > **username_4**: Asking the real questions! Thanks for all the input, I'll try to adress your points one by one - The main purpose of the tool is to manage and review your variations, so truncating would be possible but I'm not sure where I would put a button for it and how many people would use that. Often you have lines that need to go deeper than others, e.g. to show the continuation of a trap  
  > **username_4**: - I've decided to not to show the move number in each node as it would be a lot of redundant Information, but if you click on the analysis tool you'll still be able to see the move order (by de-activating engine/explorer/assistant) - left to right and bottom up are planned features with low priority, they will be added eventually - you can add comments and could take notes of engine evaluation and other stats but there is no automated way to do that for the whole tree. It could take a long time to calculate evaluations for 500+ moves, so I'm not sure how I would implement a feature like that  
  
  ---
  
  