Ideas for colorfully and clearly highlighting graph edges according to weightsStandardForm on Graph edgesColoring edges of a graph according to their weight?Styling the edges of a graph according to the multiplicities of the edgesChanging edge weights in a graph using PropertyValueCannot get Mathematica to recognise Vertex Weights of GraphOther Ideas for Clickable Graph BuildupHow to style a graph according to the direction of the edges and the centrality of the vertices?FindShortestPath in a Random Geometric Graph: Quick Version?How to filter-out edges in a HighlightGraph[] visualization based on VertexCoordinates[]?Finding the dangling free part of a percolating cluster

How did the USSR manage to innovate in an environment characterized by government censorship and high bureaucracy?

How to manage monthly salary

Eliminate empty elements from a list with a specific pattern

Is this homebrew feat, Beast of Burden, balanced?

Travelling to Edinburgh from India

What kind of transistor turns on with 0.2 volts?

Extreme, but not acceptable situation and I can't start the work tomorrow morning

LM317 - Calculate dissipation due to voltage drop

Ideas for colorfully and clearly highlighting graph edges according to weights

Why is my log file so massive? 22gb. I am running log backups

Some basic questions on halt and move in Turing machines

Prime joint compound before latex paint?

What is the offset in a seaplane's hull?

Why airport relocation isn't done gradually?

Why doesn't a const reference extend the life of a temporary object passed via a function?

Why did the Germans forbid the possession of pet pigeons in Rostov-on-Don in 1941?

"listening to me about as much as you're listening to this pole here"

Lied on resume at previous job

How to create a consistant feel for character names in a fantasy setting?

Email Account under attack (really) - anything I can do?

Is there a way to make member function NOT callable from constructor?

Need help identifying/translating a plaque in Tangier, Morocco

Is repealing the EU Withdrawal Act a precondition of revoking Article 50?

Why do UK politicians seemingly ignore opinion polls on Brexit?



Ideas for colorfully and clearly highlighting graph edges according to weights


StandardForm on Graph edgesColoring edges of a graph according to their weight?Styling the edges of a graph according to the multiplicities of the edgesChanging edge weights in a graph using PropertyValueCannot get Mathematica to recognise Vertex Weights of GraphOther Ideas for Clickable Graph BuildupHow to style a graph according to the direction of the edges and the centrality of the vertices?FindShortestPath in a Random Geometric Graph: Quick Version?How to filter-out edges in a HighlightGraph[] visualization based on VertexCoordinates[]?Finding the dangling free part of a percolating cluster













3












$begingroup$


I am trying to figure out a way to include edgeweights in the visualisation of a graph in Mathematica, to find an idea for the drawing such that even for relatively large node numbers the graphs remain visually clear. But the basic built-in feature leads to rather messy layouts as soon as there are large number of nodes/edges. Here's an example below:



SeedRandom[100]
n = 500;
m = 1000;
edgeweights = 1./RandomReal[0.1, 1, m];
G = RandomGraph[n, m, EdgeWeight -> edgeweights]


Produces:
enter image description here



Including GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True into the definition of G produces:



enter image description here



It seems to simply draw the nodes whose connecting edge weight is larger closer to one another, which leads to a very dense embedded layout.



Would it be possible to:



  • Modulate the edge thickness and color [*] according to their weights? The weights do not necessarily have to be given in the graph definition (G), they could also simply be called for the purpose of the visualisation.

[*]: That is, the greater the weight, the thicker and the more brightly colored the edge. For normalization, we can use the maximal weight in the vector of edgeweights.










share|improve this question









$endgroup$
















    3












    $begingroup$


    I am trying to figure out a way to include edgeweights in the visualisation of a graph in Mathematica, to find an idea for the drawing such that even for relatively large node numbers the graphs remain visually clear. But the basic built-in feature leads to rather messy layouts as soon as there are large number of nodes/edges. Here's an example below:



    SeedRandom[100]
    n = 500;
    m = 1000;
    edgeweights = 1./RandomReal[0.1, 1, m];
    G = RandomGraph[n, m, EdgeWeight -> edgeweights]


    Produces:
    enter image description here



    Including GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True into the definition of G produces:



    enter image description here



    It seems to simply draw the nodes whose connecting edge weight is larger closer to one another, which leads to a very dense embedded layout.



    Would it be possible to:



    • Modulate the edge thickness and color [*] according to their weights? The weights do not necessarily have to be given in the graph definition (G), they could also simply be called for the purpose of the visualisation.

    [*]: That is, the greater the weight, the thicker and the more brightly colored the edge. For normalization, we can use the maximal weight in the vector of edgeweights.










    share|improve this question









    $endgroup$














      3












      3








      3





      $begingroup$


      I am trying to figure out a way to include edgeweights in the visualisation of a graph in Mathematica, to find an idea for the drawing such that even for relatively large node numbers the graphs remain visually clear. But the basic built-in feature leads to rather messy layouts as soon as there are large number of nodes/edges. Here's an example below:



      SeedRandom[100]
      n = 500;
      m = 1000;
      edgeweights = 1./RandomReal[0.1, 1, m];
      G = RandomGraph[n, m, EdgeWeight -> edgeweights]


      Produces:
      enter image description here



      Including GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True into the definition of G produces:



      enter image description here



      It seems to simply draw the nodes whose connecting edge weight is larger closer to one another, which leads to a very dense embedded layout.



      Would it be possible to:



      • Modulate the edge thickness and color [*] according to their weights? The weights do not necessarily have to be given in the graph definition (G), they could also simply be called for the purpose of the visualisation.

      [*]: That is, the greater the weight, the thicker and the more brightly colored the edge. For normalization, we can use the maximal weight in the vector of edgeweights.










      share|improve this question









      $endgroup$




      I am trying to figure out a way to include edgeweights in the visualisation of a graph in Mathematica, to find an idea for the drawing such that even for relatively large node numbers the graphs remain visually clear. But the basic built-in feature leads to rather messy layouts as soon as there are large number of nodes/edges. Here's an example below:



      SeedRandom[100]
      n = 500;
      m = 1000;
      edgeweights = 1./RandomReal[0.1, 1, m];
      G = RandomGraph[n, m, EdgeWeight -> edgeweights]


      Produces:
      enter image description here



      Including GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True into the definition of G produces:



      enter image description here



      It seems to simply draw the nodes whose connecting edge weight is larger closer to one another, which leads to a very dense embedded layout.



      Would it be possible to:



      • Modulate the edge thickness and color [*] according to their weights? The weights do not necessarily have to be given in the graph definition (G), they could also simply be called for the purpose of the visualisation.

      [*]: That is, the greater the weight, the thicker and the more brightly colored the edge. For normalization, we can use the maximal weight in the vector of edgeweights.







      graphics graphs-and-networks visualization






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 6 hours ago









      user929304user929304

      29629




      29629




















          2 Answers
          2






          active

          oldest

          votes


















          2












          $begingroup$

          edgeStyle[weights_, thickbounds_:0.0001,0.01, colorf_:ColorData["SolarColors"]]:=
          Block[minmax, thickness, color,
          minmax = MinMax[weights];
          thickness = Thickness /@ Rescale[weights, minmax, thickbounds];
          color = colorf /@ Rescale[weights, minmax, 0, 1];
          Thread[Directive[Opacity[.7], CapForm["Round"], thickness, color]]
          ]


          Here's the example:



          Graph[G, EdgeStyle -> Thread[EdgeList[G] -> edgeStyle[edgeweights]], 
          VertexSize -> 1, VertexStyle -> Blue]


          enter image description here



          With different thickness and color:



          Graph[G, EdgeStyle -> 
          Thread[EdgeList[G] ->
          edgeStyle[edgeweights, 0.0001, 0.02,
          ColorData["BrightBands"]]], VertexSize -> 1, VertexStyle -> Blue]


          enter image description here






          share|improve this answer









          $endgroup$




















            2












            $begingroup$

            I do not think that any good way exists. Once a graph is large enough, it will always look like a hairball unless it has a clear structure that might be made visible. For example, this is a similarity graph of musicians. The musicians cluster into groups, and it is possible to make this structure visible. Your example graph, on the other hand, is completely random, with random edge weights. Since there are lots of nodes and edges, but no real information is contained within them, I do not think that it can be visualized in a meaningful way.



            Assuming that there is something to show, things you can try are:




            • Take edge weights into consideration when computing the layout. Look up individual graph layouts on the GraphLayout doc page, and see if they support weights. You have already found GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True, but it's still useful to mention this for other readers.



              The example I linked above was created by one of the authors of the igraph library. IGraph/M is a Mathematica interface to igraph (and much more), and exposes multiple layout algorithms that support weights. The above example was created using the DrL layout (IGLayoutDrL function in IGraph/M)




            • Visualize weights as not edge lengths, but edge weights or edge colours. You can do this with EdgeStyle. IGraph/M provides a very convenient way to do it:



              SeedRandom[137]
              g = RandomGraph[10, 20, EdgeWeight -> RandomReal[.1, 1, 20]]

              Graph[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/3]]] //
              IGEdgeMap[AbsoluteThickness[10 #] &, EdgeStyle -> IGEdgeProp[EdgeWeight]]


              enter image description here




            • Use colours in the same way.



              Graph[g, EdgeStyle -> Directive[CapForm["Round"], AbsoluteThickness[4]]] //
              IGEdgeMap[ColorData["RustTones"], EdgeStyle -> Rescale@*IGEdgeProp[EdgeWeight]]


              enter image description here




            • Use all of the above: edge length, edge thickness and edge colour.



              IGLayoutFruchtermanReingold[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/2]]] // 
              IGEdgeMap[
              Directive[ColorData["RustTones"][#], AbsoluteThickness[10 #]] &,
              EdgeStyle -> (#/Max[#] &)@*IGEdgeProp[EdgeWeight]]


              enter image description here




            • Cluster the graph vertices before visualizing them. The clustering can take weights into account.



              CommunityGraphPlot[g]


              enter image description here



              This related to what I said above. First, try to identify the structure, then explicitly make it visible.







            share|improve this answer









            $endgroup$













              Your Answer





              StackExchange.ifUsing("editor", function ()
              return StackExchange.using("mathjaxEditing", function ()
              StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
              StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
              );
              );
              , "mathjax-editing");

              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "387"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194811%2fideas-for-colorfully-and-clearly-highlighting-graph-edges-according-to-weights%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              2












              $begingroup$

              edgeStyle[weights_, thickbounds_:0.0001,0.01, colorf_:ColorData["SolarColors"]]:=
              Block[minmax, thickness, color,
              minmax = MinMax[weights];
              thickness = Thickness /@ Rescale[weights, minmax, thickbounds];
              color = colorf /@ Rescale[weights, minmax, 0, 1];
              Thread[Directive[Opacity[.7], CapForm["Round"], thickness, color]]
              ]


              Here's the example:



              Graph[G, EdgeStyle -> Thread[EdgeList[G] -> edgeStyle[edgeweights]], 
              VertexSize -> 1, VertexStyle -> Blue]


              enter image description here



              With different thickness and color:



              Graph[G, EdgeStyle -> 
              Thread[EdgeList[G] ->
              edgeStyle[edgeweights, 0.0001, 0.02,
              ColorData["BrightBands"]]], VertexSize -> 1, VertexStyle -> Blue]


              enter image description here






              share|improve this answer









              $endgroup$

















                2












                $begingroup$

                edgeStyle[weights_, thickbounds_:0.0001,0.01, colorf_:ColorData["SolarColors"]]:=
                Block[minmax, thickness, color,
                minmax = MinMax[weights];
                thickness = Thickness /@ Rescale[weights, minmax, thickbounds];
                color = colorf /@ Rescale[weights, minmax, 0, 1];
                Thread[Directive[Opacity[.7], CapForm["Round"], thickness, color]]
                ]


                Here's the example:



                Graph[G, EdgeStyle -> Thread[EdgeList[G] -> edgeStyle[edgeweights]], 
                VertexSize -> 1, VertexStyle -> Blue]


                enter image description here



                With different thickness and color:



                Graph[G, EdgeStyle -> 
                Thread[EdgeList[G] ->
                edgeStyle[edgeweights, 0.0001, 0.02,
                ColorData["BrightBands"]]], VertexSize -> 1, VertexStyle -> Blue]


                enter image description here






                share|improve this answer









                $endgroup$















                  2












                  2








                  2





                  $begingroup$

                  edgeStyle[weights_, thickbounds_:0.0001,0.01, colorf_:ColorData["SolarColors"]]:=
                  Block[minmax, thickness, color,
                  minmax = MinMax[weights];
                  thickness = Thickness /@ Rescale[weights, minmax, thickbounds];
                  color = colorf /@ Rescale[weights, minmax, 0, 1];
                  Thread[Directive[Opacity[.7], CapForm["Round"], thickness, color]]
                  ]


                  Here's the example:



                  Graph[G, EdgeStyle -> Thread[EdgeList[G] -> edgeStyle[edgeweights]], 
                  VertexSize -> 1, VertexStyle -> Blue]


                  enter image description here



                  With different thickness and color:



                  Graph[G, EdgeStyle -> 
                  Thread[EdgeList[G] ->
                  edgeStyle[edgeweights, 0.0001, 0.02,
                  ColorData["BrightBands"]]], VertexSize -> 1, VertexStyle -> Blue]


                  enter image description here






                  share|improve this answer









                  $endgroup$



                  edgeStyle[weights_, thickbounds_:0.0001,0.01, colorf_:ColorData["SolarColors"]]:=
                  Block[minmax, thickness, color,
                  minmax = MinMax[weights];
                  thickness = Thickness /@ Rescale[weights, minmax, thickbounds];
                  color = colorf /@ Rescale[weights, minmax, 0, 1];
                  Thread[Directive[Opacity[.7], CapForm["Round"], thickness, color]]
                  ]


                  Here's the example:



                  Graph[G, EdgeStyle -> Thread[EdgeList[G] -> edgeStyle[edgeweights]], 
                  VertexSize -> 1, VertexStyle -> Blue]


                  enter image description here



                  With different thickness and color:



                  Graph[G, EdgeStyle -> 
                  Thread[EdgeList[G] ->
                  edgeStyle[edgeweights, 0.0001, 0.02,
                  ColorData["BrightBands"]]], VertexSize -> 1, VertexStyle -> Blue]


                  enter image description here







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 5 hours ago









                  halmirhalmir

                  10.6k2544




                  10.6k2544





















                      2












                      $begingroup$

                      I do not think that any good way exists. Once a graph is large enough, it will always look like a hairball unless it has a clear structure that might be made visible. For example, this is a similarity graph of musicians. The musicians cluster into groups, and it is possible to make this structure visible. Your example graph, on the other hand, is completely random, with random edge weights. Since there are lots of nodes and edges, but no real information is contained within them, I do not think that it can be visualized in a meaningful way.



                      Assuming that there is something to show, things you can try are:




                      • Take edge weights into consideration when computing the layout. Look up individual graph layouts on the GraphLayout doc page, and see if they support weights. You have already found GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True, but it's still useful to mention this for other readers.



                        The example I linked above was created by one of the authors of the igraph library. IGraph/M is a Mathematica interface to igraph (and much more), and exposes multiple layout algorithms that support weights. The above example was created using the DrL layout (IGLayoutDrL function in IGraph/M)




                      • Visualize weights as not edge lengths, but edge weights or edge colours. You can do this with EdgeStyle. IGraph/M provides a very convenient way to do it:



                        SeedRandom[137]
                        g = RandomGraph[10, 20, EdgeWeight -> RandomReal[.1, 1, 20]]

                        Graph[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/3]]] //
                        IGEdgeMap[AbsoluteThickness[10 #] &, EdgeStyle -> IGEdgeProp[EdgeWeight]]


                        enter image description here




                      • Use colours in the same way.



                        Graph[g, EdgeStyle -> Directive[CapForm["Round"], AbsoluteThickness[4]]] //
                        IGEdgeMap[ColorData["RustTones"], EdgeStyle -> Rescale@*IGEdgeProp[EdgeWeight]]


                        enter image description here




                      • Use all of the above: edge length, edge thickness and edge colour.



                        IGLayoutFruchtermanReingold[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/2]]] // 
                        IGEdgeMap[
                        Directive[ColorData["RustTones"][#], AbsoluteThickness[10 #]] &,
                        EdgeStyle -> (#/Max[#] &)@*IGEdgeProp[EdgeWeight]]


                        enter image description here




                      • Cluster the graph vertices before visualizing them. The clustering can take weights into account.



                        CommunityGraphPlot[g]


                        enter image description here



                        This related to what I said above. First, try to identify the structure, then explicitly make it visible.







                      share|improve this answer









                      $endgroup$

















                        2












                        $begingroup$

                        I do not think that any good way exists. Once a graph is large enough, it will always look like a hairball unless it has a clear structure that might be made visible. For example, this is a similarity graph of musicians. The musicians cluster into groups, and it is possible to make this structure visible. Your example graph, on the other hand, is completely random, with random edge weights. Since there are lots of nodes and edges, but no real information is contained within them, I do not think that it can be visualized in a meaningful way.



                        Assuming that there is something to show, things you can try are:




                        • Take edge weights into consideration when computing the layout. Look up individual graph layouts on the GraphLayout doc page, and see if they support weights. You have already found GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True, but it's still useful to mention this for other readers.



                          The example I linked above was created by one of the authors of the igraph library. IGraph/M is a Mathematica interface to igraph (and much more), and exposes multiple layout algorithms that support weights. The above example was created using the DrL layout (IGLayoutDrL function in IGraph/M)




                        • Visualize weights as not edge lengths, but edge weights or edge colours. You can do this with EdgeStyle. IGraph/M provides a very convenient way to do it:



                          SeedRandom[137]
                          g = RandomGraph[10, 20, EdgeWeight -> RandomReal[.1, 1, 20]]

                          Graph[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/3]]] //
                          IGEdgeMap[AbsoluteThickness[10 #] &, EdgeStyle -> IGEdgeProp[EdgeWeight]]


                          enter image description here




                        • Use colours in the same way.



                          Graph[g, EdgeStyle -> Directive[CapForm["Round"], AbsoluteThickness[4]]] //
                          IGEdgeMap[ColorData["RustTones"], EdgeStyle -> Rescale@*IGEdgeProp[EdgeWeight]]


                          enter image description here




                        • Use all of the above: edge length, edge thickness and edge colour.



                          IGLayoutFruchtermanReingold[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/2]]] // 
                          IGEdgeMap[
                          Directive[ColorData["RustTones"][#], AbsoluteThickness[10 #]] &,
                          EdgeStyle -> (#/Max[#] &)@*IGEdgeProp[EdgeWeight]]


                          enter image description here




                        • Cluster the graph vertices before visualizing them. The clustering can take weights into account.



                          CommunityGraphPlot[g]


                          enter image description here



                          This related to what I said above. First, try to identify the structure, then explicitly make it visible.







                        share|improve this answer









                        $endgroup$















                          2












                          2








                          2





                          $begingroup$

                          I do not think that any good way exists. Once a graph is large enough, it will always look like a hairball unless it has a clear structure that might be made visible. For example, this is a similarity graph of musicians. The musicians cluster into groups, and it is possible to make this structure visible. Your example graph, on the other hand, is completely random, with random edge weights. Since there are lots of nodes and edges, but no real information is contained within them, I do not think that it can be visualized in a meaningful way.



                          Assuming that there is something to show, things you can try are:




                          • Take edge weights into consideration when computing the layout. Look up individual graph layouts on the GraphLayout doc page, and see if they support weights. You have already found GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True, but it's still useful to mention this for other readers.



                            The example I linked above was created by one of the authors of the igraph library. IGraph/M is a Mathematica interface to igraph (and much more), and exposes multiple layout algorithms that support weights. The above example was created using the DrL layout (IGLayoutDrL function in IGraph/M)




                          • Visualize weights as not edge lengths, but edge weights or edge colours. You can do this with EdgeStyle. IGraph/M provides a very convenient way to do it:



                            SeedRandom[137]
                            g = RandomGraph[10, 20, EdgeWeight -> RandomReal[.1, 1, 20]]

                            Graph[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/3]]] //
                            IGEdgeMap[AbsoluteThickness[10 #] &, EdgeStyle -> IGEdgeProp[EdgeWeight]]


                            enter image description here




                          • Use colours in the same way.



                            Graph[g, EdgeStyle -> Directive[CapForm["Round"], AbsoluteThickness[4]]] //
                            IGEdgeMap[ColorData["RustTones"], EdgeStyle -> Rescale@*IGEdgeProp[EdgeWeight]]


                            enter image description here




                          • Use all of the above: edge length, edge thickness and edge colour.



                            IGLayoutFruchtermanReingold[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/2]]] // 
                            IGEdgeMap[
                            Directive[ColorData["RustTones"][#], AbsoluteThickness[10 #]] &,
                            EdgeStyle -> (#/Max[#] &)@*IGEdgeProp[EdgeWeight]]


                            enter image description here




                          • Cluster the graph vertices before visualizing them. The clustering can take weights into account.



                            CommunityGraphPlot[g]


                            enter image description here



                            This related to what I said above. First, try to identify the structure, then explicitly make it visible.







                          share|improve this answer









                          $endgroup$



                          I do not think that any good way exists. Once a graph is large enough, it will always look like a hairball unless it has a clear structure that might be made visible. For example, this is a similarity graph of musicians. The musicians cluster into groups, and it is possible to make this structure visible. Your example graph, on the other hand, is completely random, with random edge weights. Since there are lots of nodes and edges, but no real information is contained within them, I do not think that it can be visualized in a meaningful way.



                          Assuming that there is something to show, things you can try are:




                          • Take edge weights into consideration when computing the layout. Look up individual graph layouts on the GraphLayout doc page, and see if they support weights. You have already found GraphLayout -> "SpringElectricalEmbedding", "EdgeWeighted" -> True, but it's still useful to mention this for other readers.



                            The example I linked above was created by one of the authors of the igraph library. IGraph/M is a Mathematica interface to igraph (and much more), and exposes multiple layout algorithms that support weights. The above example was created using the DrL layout (IGLayoutDrL function in IGraph/M)




                          • Visualize weights as not edge lengths, but edge weights or edge colours. You can do this with EdgeStyle. IGraph/M provides a very convenient way to do it:



                            SeedRandom[137]
                            g = RandomGraph[10, 20, EdgeWeight -> RandomReal[.1, 1, 20]]

                            Graph[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/3]]] //
                            IGEdgeMap[AbsoluteThickness[10 #] &, EdgeStyle -> IGEdgeProp[EdgeWeight]]


                            enter image description here




                          • Use colours in the same way.



                            Graph[g, EdgeStyle -> Directive[CapForm["Round"], AbsoluteThickness[4]]] //
                            IGEdgeMap[ColorData["RustTones"], EdgeStyle -> Rescale@*IGEdgeProp[EdgeWeight]]


                            enter image description here




                          • Use all of the above: edge length, edge thickness and edge colour.



                            IGLayoutFruchtermanReingold[g, EdgeStyle -> Directive[CapForm["Round"], Opacity[1/2]]] // 
                            IGEdgeMap[
                            Directive[ColorData["RustTones"][#], AbsoluteThickness[10 #]] &,
                            EdgeStyle -> (#/Max[#] &)@*IGEdgeProp[EdgeWeight]]


                            enter image description here




                          • Cluster the graph vertices before visualizing them. The clustering can take weights into account.



                            CommunityGraphPlot[g]


                            enter image description here



                            This related to what I said above. First, try to identify the structure, then explicitly make it visible.








                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 5 hours ago









                          SzabolcsSzabolcs

                          163k14448945




                          163k14448945



























                              draft saved

                              draft discarded
















































                              Thanks for contributing an answer to Mathematica Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              Use MathJax to format equations. MathJax reference.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194811%2fideas-for-colorfully-and-clearly-highlighting-graph-edges-according-to-weights%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

                              Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

                              Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar