Center Node in TreeLayout with double link

Hi’ im a novice with GoJs so i’m first of all i’m sorry for the request.

I use GoJs with C#, so i try to do a treeflowchart wth some data generated by my source code in c#

I have this code in my html page:

function draw(data, linkData) {
var array = data;
var = go.GraphObject.make; var myDiagram = (go.Diagram, “myDiagramDiv”,
initialContentAlignment: go.Spot.Top, // center Diagram contents
“undoManager.isEnabled”: true, // enable Ctrl-Z to undo and Ctrl-Y to redo
//initialAutoScale: go.Diagram.Uniform,


        //var model = $(go.TreeModel);

        // define a simple Node template
        myDiagram.nodeTemplate = $(go.Node, "Auto", { defaultAlignment: go.Spot.Center, margin: 4 },
                new go.Binding("figure", "shape"),
                new go.Binding("width", "width"),
                new go.Binding("height", "height"),
                new go.Binding("fill", "bgcolor"),
                new go.Binding("stroke", "stroke")),
            $(go.TextBlock, { margin: 8, textAlign: "center" }, new go.Binding("text", "text"), new go.Binding("stroke", "color"))

        // define the group template
        myDiagram.groupTemplate =
            $(go.Group, "Auto",
                { // define the group's internal layout
                    layout: $(go.GridLayout, { wrappingColumn: 4 })
                $(go.Shape, "Cloud",
                    new go.Binding("width", "width"),

                    { fill: "yellow", stroke: "gray", strokeWidth: 2 }),
                $(go.Panel, "Vertical",
                    { defaultAlignment: go.Spot.Top, margin: 4 },
                    $(go.Panel, "Vertical",
                        { defaultAlignment: go.Spot.Top },
                        // the SubGraphExpanderButton is a panel that functions as a button to expand or collapse the subGraph

                            { font: "Bold 18px Sans-Serif", margin: 4 },
                            new go.Binding("text", "key"))

                    // create a placeholder to represent the area where the contents of the group are
                        { padding: new go.Margin(10, 10) })
                )  // end Vertical Panel
            );  // end Group

        myDiagram.layout = $(go.TreeLayout, {angle: 90});
        myDiagram.model.nodeDataArray = array[0];
        myDiagram.model.linkDataArray = array[1];

        // define a Link template that routes orthogonally, with no arrowhead
        myDiagram.linkTemplate =
                $(go.Shape, { toArrow: "Standard" })); // the link shape


This is the result:

i would like to put the last node in center of panel…

Thx You

That’s not a tree-structured graph, so it should not be surprising that a TreeLayout doesn’t produce the layout that you want.

You have at least two choices: use LayeredDigraphLayout instead, or customize the TreeLayout (probably by overriding commitNodes) to move nodes that have multiple parents to be where you want them to be.

As an example of the latter approach, if your graphs are always going to be structured in a nested manner such as in Parallel Layout, you could adapt the ParallelLayout that it uses to your own situation.

Thank you!
LayeredDigraphLayout is perfect.
Thank you so much :)