graphstruct

Draw a simple graph structure. The graph layout is made using graphviz. This macro creates some nodes and edges and change a few graphical attributes on some of them.

Author: Olivier Couet
This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, November 29, 2022 at 11:17 AM.

In [1]:
#if __has_include("TGraphStruct.h") // handy check on whether gviz was installed
TGraphStruct *gs = new TGraphStruct();
Unbalanced braces. This cell was not processed.

create some nodes and put them in the graph in one go ...

In [2]:
TGraphNode *n0 = gs->AddNode("n0","Node 0");
TGraphNode *n1 = gs->AddNode("n1","First node");
TGraphNode *n2 = gs->AddNode("n2","Second node");
TGraphNode *n3 = gs->AddNode("n3","Third node");
TGraphNode *n4 = gs->AddNode("n4","Fourth node");
TGraphNode *n5 = gs->AddNode("n5","5th node");
TGraphNode *n6 = gs->AddNode("n6","Node number six");
TGraphNode *n7 = gs->AddNode("n7","Node 7");
TGraphNode *n8 = gs->AddNode("n8","Node 8");
TGraphNode *n9 = gs->AddNode("n9","Node 9");

n4->SetTextSize(0.03);
n6->SetTextSize(0.03);
n2->SetTextSize(0.04);

n3->SetTextFont(132);

n0->SetTextColor(kRed);

n9->SetFillColor(kRed-10);
n0->SetFillColor(kYellow-9);
n7->SetFillColor(kViolet-9);
input_line_55:2:3: error: use of undeclared identifier 'gs'
 (gs->AddNode("n0", "Node 0"))
  ^
Error in <HandleInterpreterException>: Error evaluating expression (gs->AddNode("n0", "Node 0"))
Execution of your code was aborted.

some edges ...

In [3]:
gs->AddEdge(n0,n1)->SetLineColor(kRed);
TGraphEdge *e06 = gs->AddEdge(n0,n6);
e06->SetLineColor(kRed-3);
e06->SetLineWidth(4);
gs->AddEdge(n1,n7);
gs->AddEdge(n4,n6);
gs->AddEdge(n3,n9);
gs->AddEdge(n6,n8);
gs->AddEdge(n7,n2);
gs->AddEdge(n8,n3);
gs->AddEdge(n2,n3);
gs->AddEdge(n9,n0);
gs->AddEdge(n1,n4);
gs->AddEdge(n1,n6);
gs->AddEdge(n2,n5);
gs->AddEdge(n3,n6);
gs->AddEdge(n4,n5);

TCanvas *c = new TCanvas("c","c",800,600);
c->SetFillColor(38);
gs->Draw();
return c;
#else
return new TCanvas("c","c",800,600);
#endif
input_line_56:24:2: error: #else without #if
#else
 ^
input_line_56:26:2: error: #endif without #if
#endif
 ^
input_line_56:2:35: error: cannot take the address of an rvalue of type 'EColor'
 gs->AddEdge(n0,n1)->SetLineColor(kRed);
                                  ^~~~
Error while creating dynamic expression for:
  gs->AddEdge(n0, n1)->SetLineColor(kRed)

Draw all canvases

In [4]:
gROOT->GetListOfCanvases()->Draw()