Horizontal Legend Creation

Is this what you are after? (I’m not sure what “automatic fixed legend size” means)

digraph LL {
  graph [labelloc=t, label=<
        <TABLE BORDER="0"  CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"  VALIGN="TOP" HEIGHT="2.0">
         <TR>
          <TD COLSPAN="99"><B>Device Gen Info</B></TD>
         </TR>

         <TR>
          <TD> <FONT POINT-SIZE="10.0">Gen5</FONT> </TD>
          <TD>Gen4</TD>
          <TD>Gen3</TD>
          <TD>Gen2</TD>
          <TD>Default</TD>
          <TD>Timed Out</TD>
          <TD>Access Point</TD>
          <TD>Relay</TD>
          <TD>Bridge</TD>
          <TD>High Priority Access Point</TD>
          <TD>High Priority End Point</TD>
          <TD>High Priority Relay</TD>
          <TD>NIC</TD>
          <TD>LCS</TD>	  
          <TD>STL</TD>
          <TD>IOTR</TD>
          <TD>Default</TD>
          <TD>Timed Out</TD>

         </TR>
         <TR>
          <TD BGCOLOR="ORANGE">  </TD>
          <TD BGCOLOR="GREEN"></TD>
          <TD BGCOLOR="YELLOW"></TD>
          <TD BGCOLOR="BROWN"></TD>
          <TD BGCOLOR="VIOLET"></TD>
          <TD BGCOLOR="RED"></TD>
          <TD>Triangle</TD>
          <TD>Parallelogram</TD>
          <TD>Diamond</TD>
          <TD>DoubleCircle</TD>
          <TD>Trippleoctagon</TD>
          <TD>House</TD>
          <TD>Pentagon</TD>
          <TD>Trapezium</TD>
          <TD>Star</TD>
          <TD>Circle</TD>
          <TD>Rectangle</TD>


          <TD>Septagon</TD>
         </TR>
        </TABLE>>]

  // add a cluster to create margin between legend & actual graph
  subgraph clusterAll{
    graph[label="" peripheries=0]  // do not duplicate graph legend
    a ->b ->c
  }
}

Giving:

p.s. more on Legends: Adding key or legend?
p.p.s. You can replace your textual descriptions (e.g. House) with images
<TD><IMG SCALE="TRUE" SRC="image_dir/noLeft.png"/></TD>