TransWikia.com

how to depict a network with a legend

Mathematica Asked by oldlab on December 18, 2020

Because my network nodes have real world names more than a few characters long, I’d like to label them with a shortcut, e.g., n1, n2, n3, …, and put a legend on the side something like this: n1 – fooLongName, n2 – barLongName, n3 – bazLongName.

Any ideas for how to do this?

One Answer

labels = Table[i -> Style[Subscript[v, i], 20], {i, 3}]
names = Table[i -> "longname_" <> "v_" <> ToString@i, {i, 3}];
colors = {1 -> Blue, 2 -> Red, 3 -> Green}; 

legend = SwatchLegend[Last /@ colors, 
      Row[{#[[1]], ": ", #[[2]]}] & /@ Transpose[{labels, names}][[All, All, -1]],
      LegendMarkers -> "Bubble"];

You can use Legended, Epilog or Row to add legends to a Graph:

Legended[Graph[{1 <-> 2, 2 <-> 3,  3 <-> 1},  VertexSize -> 0.1,
                VertexStyle -> colors, VertexLabels -> labels, ImagePadding -> 20], 
         legend]

enter image description here

Graph[{1 <-> 2, 2 <-> 3, 3 <-> 1},
    VertexStyle -> colors, VertexSize -> 0.1, VertexLabels -> labels, 
    ImagePadding -> 20, 
 Epilog -> Inset[legend, {.75, .75}]]

enter image description here

Row[{Graph[{1 <-> 2, 2 <-> 3, 3 <-> 1}, VertexStyle -> colors, VertexSize -> 0.1, 
            VertexLabels -> labels, ImagePadding -> 20, ImageSize -> 300], 
    legend}]

enter image description here

Answered by kglr on December 18, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP