""" This file demonstrates the creation of a directed graph using the Python interface to VTK. """ from vtk import * xdim = 600 ydim = 600 #------------------------------------------------------------------------------ # Script Entry Point #------------------------------------------------------------------------------ if __name__ == "__main__": print "vtkGraph Example 1: Building a vtkMutableDirectedGraph from scratch." #---------------------------------------------------------- # Create a graph (see graph1.py for explanations) G1 = vtkMutableDirectedGraph() vertID1 = vtkIntArray() vertID1.SetName("ID") G1.GetVertexData().AddArray( vertID1 ) G1.GetVertexData().SetPedigreeIds( vertID1 ) for i in range(10): G1.AddVertex() vertID1.InsertNextValue(i) for i in range(10): G1.AddGraphEdge(i, (i+1)%10) #---------------------------------------------------------- # Create a second graph # - This one is a triangle, with one node's pedigree id field # ID matching one of the vertices from G1. These nodes will # be combined as the same node when merge is run. vertID2 = vtkIntArray() G2 = vtkMutableDirectedGraph() vertID2 = vtkIntArray() vertID2.SetName("ID") G2.GetVertexData().AddArray(vertID2) G2.GetVertexData().SetPedigreeIds(vertID2) G2.AddVertex() vertID2.InsertNextValue(3) G2.AddVertex() vertID2.InsertNextValue(20) G2.AddVertex() vertID2.InsertNextValue(21) G2.AddGraphEdge(0,1) G2.AddGraphEdge(0,2) G2.AddGraphEdge(1,2) #---------------------------------------------------------- # Merge graphs takes two graphs on input ports 0 and 1. # and combines them according to the pedigree id field. merge = vtkMergeGraphs() merge.SetInputData(0, G1) merge.SetInputData(1, G2) merge.Update() #---------------------------------------------------------- # Draw the graph in a window theme = vtkViewTheme.CreateMellowTheme() theme.SetLineWidth(4) theme.SetPointSize(10) theme.SetCellOpacity(1) theme.FastDelete() # View containing graph G1 view = vtkGraphLayoutView() view.AddRepresentationFromInput(G1) view.SetVertexLabelArrayName("ID") view.SetVertexLabelVisibility(True) view.SetLayoutStrategyToSimple2D() view.SetVertexLabelFontSize(20) view.ApplyViewTheme(theme) view.GetRenderWindow().SetSize(xdim, ydim) view.ResetCamera() view.Render() # View containing graph G2 view2 = vtkGraphLayoutView() view2.AddRepresentationFromInput(G2) view2.SetVertexLabelArrayName("ID") view2.SetVertexLabelVisibility(True) view2.SetLayoutStrategyToSimple2D() view2.SetVertexLabelFontSize(20) view2.ApplyViewTheme(theme) view2.GetRenderWindow().SetSize(xdim, ydim) view2.ResetCamera() view2.Render() # View containing the merged graph view3 = vtkGraphLayoutView() view3.AddRepresentationFromInputConnection(merge.GetOutputPort()) view3.SetVertexLabelArrayName("ID") view3.SetVertexLabelVisibility(True) view3.SetLayoutStrategyToSimple2D() view3.SetVertexLabelFontSize(20) view3.ApplyViewTheme(theme) view3.GetRenderWindow().SetSize(xdim, ydim) view3.ResetCamera() view3.Render() view.GetInteractor().Start()