The closest question to the following I could find was Preserving labels when using graph functions, but it doesn't seem to cover this.
Consider a graph g
where every edge is associated with an EdgeStyle
.
g = CompleteGraph[3, VertexLabels -> "Name", ImagePadding -> 10];
PropertyValue[{g, 1 \[UndirectedEdge] 2}, EdgeStyle] = Red;
PropertyValue[{g, 1 \[UndirectedEdge] 3}, EdgeStyle] = Green;
PropertyValue[{g, 2 \[UndirectedEdge] 3}, EdgeStyle] = Blue;
I have a method that returns interesting subgraphs of g
. Suppose $\{ (1,2),(2,3) \}$ is one such subgraph. How can I create a subgraph that preserves the colors associated with the edges?
I can do
Graph[EdgeList[g], Options[g]]
which gives me the original graph, with the colors preserved. I can also simply do
Graph[EdgeList[g], Options[g, {EdgeStyle}]]
which also works as expected. However, this seems to be so because there's an EdgeStyle
for precisely every edge in the options. If there is even one edge in options that is not included in the graph, this won't work. (By not working, I mean something like "the command is not recognized". I don't exactly know how to describe what happens since I'm new to Mathematica.) An example of this unwanted behaviour is
Is there a way I can tell Mathematica "give me the options of the original graph, but only include a setting for each edge that is present in the new graph"? I really only care about EdgeStyle
.