1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#!/usr/bin/env python
from vtk import *
source = vtkRandomGraphSource()
source.SetNumberOfVertices(75)
source.SetEdgeProbability(0.02)
source.SetUseEdgeProbability(True)
source.SetStartWithTree(True)
create_index = vtkProgrammableFilter()
create_index.AddInputConnection(source.GetOutputPort())
def create_index_callback():
input = create_index.GetInput()
output = create_index.GetOutput()
output.ShallowCopy(input)
vertex_id_array = vtkIdTypeArray()
vertex_id_array.SetName("vertex_id")
vertex_id_array.SetNumberOfTuples(output.GetNumberOfVertices())
for i in range(output.GetNumberOfVertices()):
vertex_id_array.SetValue(i, i)
output.GetVertexData().AddArray(vertex_id_array)
edge_target_array = vtkIdTypeArray()
edge_target_array.SetName("edge_target")
edge_target_array.SetNumberOfTuples(output.GetNumberOfEdges())
edge_iterator = vtkEdgeListIterator()
output.GetEdges(edge_iterator)
while edge_iterator.HasNext():
edge = edge_iterator.NextGraphEdge()
edge_target_array.SetValue(edge.GetId(), edge.GetTarget())
output.GetEdgeData().AddArray(edge_target_array)
create_index.SetExecuteMethod(create_index_callback)
view = vtkGraphLayoutView()
view.AddRepresentationFromInputConnection(create_index.GetOutputPort())
view.SetVertexLabelArrayName("vertex_id")
view.SetVertexLabelVisibility(True)
view.SetEdgeLabelArrayName("edge_target")
view.SetEdgeLabelVisibility(True)
theme = vtkViewTheme.CreateMellowTheme()
view.ApplyViewTheme(theme)
theme.FastDelete()
view.GetRenderWindow().SetSize(600, 600)
view.ResetCamera()
view.Render()
view.GetInteractor().Start()
|