Group Abstract Group Abstract

Message Boards Message Boards

0
|
8.5K Views
|
5 Replies
|
0 Total Likes
View groups...
Share
Share this post:

Label duplicate edges differently?

Posted 7 years ago
POSTED BY: Werner Geiger
5 Replies

Thank you, Rohit. Yes, that does address my issue. For the benefit of any future readers of this discussion, I will give a basic example:

Graph[{Labeled[1 -> 1, left], Style[1 -> 2, Blue], 
  Style[2 -> 2, Gray], Labeled[1 -> 1, right], Style[1 -> 2, Green]}]

yields a self-inconsistent diagram: for the purposes of drawing the lines, the repeated edges are treated as distinct, while for the purposes of style and labeling they are treated as identical.

EdgeTaggedGraph[{Labeled[1 -> 1, left], Style[1 -> 2, Blue], 
  Style[2 -> 2, Gray], Labeled[1 -> 1, right], Style[1 -> 2, Green]}]

treats the repeated edges consistently as being distinct entities.

I am thankful that the EdgeTaggedGraph workaround is already present, but I remain troubled that Graph is internally inconsistent about whether the object is treated as a multigraph or not. It would have been more consistent to not introduce a new function (EdgeTaggedGraph) but rather to have an option to Graph, e.g. Multigraph->True or Multigraph->False or Multigraph->Automatic that would treat repeated edges in a consist way. But that's water under the bridge.

POSTED BY: Erik Winfree
Posted 6 years ago

Hi Erik,

V12.1 added EdgeTaggedGraph. Does it address your use case? If not, can you please provide examples of what you are trying to achieve.

POSTED BY: Rohit Namjoshi

This is a real problem. Still not fixed in Mathematica 12.2. Renders Graph[ ] nearly useless for my application. I hope they fix it soon!

POSTED BY: Erik Winfree
Posted 7 years ago

I will try to insert additional artificial vertices into each of those multiple edges. This will of course change some properties of the graph, but I need it for visualization and some path calculations only. So this might be a workaround.

LayeredGraphPlot[{
  Labeled[1 \[DirectedEdge] 21, "First 1\[DirectedEdge]2"], 
  21 \[DirectedEdge] 2,
  1 \[DirectedEdge] 3,
  Labeled[1 \[DirectedEdge] 22, "Second 1\[DirectedEdge]2"], 
  22 \[DirectedEdge] 2,
  3 \[DirectedEdge] 2, 3 \[DirectedEdge] 1}
 , VertexLabels -> {1 -> "#1", 2 -> "#2", 3 -> "#3"}
 , EdgeLabels -> "Name", ImageSize -> Medium]

enter image description here

POSTED BY: Werner Geiger

This is actively being developed and will show up in version 12.1. At the moment the same edges can not be distinguished unfortunately. @Szabolcs Horvát might know a workaround…

Note: Not a Wolfram employee but I only know from what I've seen in the live streams…

POSTED BY: Sander Huisman
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard