I'm a little stuck with graph drawing part of my research — I can't use the Graph
function for plotting my graphs, because my graph is a multi-graph. Graph
is convenient because it colors edges quite easily.
Since I have a 3-regular (or even 4-regular) graph, where there are 3 (or 4) perfect matching, I want each of the matching to be colored differently.
What's the best way to color a group of edges (each perfect matching with it's own color) in the given adjacency list in GraphPlot
? To simplify it, we can assume, that groups goes one by one (e.g. we have 6 edges: 3 groups of two edges, following each other
{1<->2, 3<->4, 1<->3, 2<->4, 1<->2, 3<->4}
In Graph
, I've constructed a nice lambda function, that wraps all elements of a list in a Style
function, that colors the edge. But in a GraphPlot
I can't wrap edges in a Style
function.
There's an EdgeRenderingFunction
, wich draws all the edges. How do I put three different EdgeRenderingFunctions
for the one edge-set? Or is that the wrong way to go?
Any ideas, how to do that?
Answer:
The labeled answer is absolutely correct. Little generalization of what I needed and how to implement it:
GraphPlot[{{1 ->2> 2, 1}, {3 ->4> 4, 1}, {1 ->3> 3, 2}, {2 ->4> 4, 2}, {1 ->2,> 3},{2->4, 3}},
{3 -> 4, 3}}, MultiedgeStyle -> .2,
ImagePadding -> 10,
EdgeRenderingFunction -> (Switch[#3, 1, {Red, Line[#1]},
2, {Blue, Line[#1]}, 3, {Green, Line[#1]},
4, {Dashed, Line[#1]}] &), VertexLabeling -> True,
Method -> "CircularEmbedding"]