KevinMarquette / PSGraph

A set of utilities for working with Graphviz in Powershell
MIT License
205 stars 49 forks source link

Setting compound=false fails #98

Open DuntlefFer opened 5 years ago

DuntlefFer commented 5 years ago

I want the edges of my graph to connect together. After looking in the GraphViz documentation I think I have to set the graph attributes concentrate=true and compound = false. Somehow setting compound=false does not work. After generating the code for the graph, the compound attribute is still set to true.

My code: Compound.txt

KevinMarquette commented 5 years ago

I see where the issue is: https://github.com/KevinMarquette/PSGraph/blob/6d673abb35fbadaf5d7a6a81866eb6473189ecd4/PSGraph/Public/Graph.ps1#L94

I'll need to track down why I am setting that value to figure out the best way to resolve this. I think it has to do with me adding subgraph to subgraph edges.

KevinMarquette commented 5 years ago

On your original comment about getting the edges to connect together, can you provide an example of what you are looking for?

You can do this to see if that attribute is going to work for you:

$Graph -replace 'compound="true"','compound="false"' | Export-PSGraph -ShowGraph

compound is documented as allowing edges between clusters and that is what I am using it for. But I should add a check to see if it is already specified and not change it if it is.

DuntlefFer commented 5 years ago

Thanks for your help. What I want to do is connecting two or more edges going from two or more nodes to one specific node. Something like this: example

Instead of: example2

I thought this would automatically work with concentrate set to "true". I tried your suggestion with replacing the string. Unfortunately the "concentrate"-attribute it doesn´t work like this. It only combines multiple edges from one node to another so there aren´t any duplicate edges.

Do you have any other idea how I can make this work?

KevinMarquette commented 5 years ago

A last resort option would be to create a new node that is a point and invisible. A,B,C would edge to the point and it would point to D. You would then have to remove the arrows from the first edges. I have not tried manipulating the edges that hard to have an idea. You may have to find some graphviz forums or groups to answer that question.

I'm not sure how much work that would be to add as a custom feature of my edge command.