def main(): graph = vtk.vtkMutableDirectedGraph() v1 = graph.AddVertex() v2 = graph.AddChild(v1) graph.AddChild(v1) graph.AddChild(v2) #equivalent to: #V1 = g.AddVertex() #V2 = g.AddVertex() #V3 = g.AddVertex() #V4 = g.AddVertex() #g.AddEdge ( V1, V2 ) #g.AddEdge ( V1, V3 ) #g.AddEdge ( V2, V4 ) tree = vtk.vtkTree() success = tree.CheckedShallowCopy(graph) print('Success?', success) #std::cout << "Success? " << success << std::endl treeLayoutView = vtk.vtkGraphLayoutView() treeLayoutView.AddRepresentationFromInput(tree) treeLayoutView.SetLayoutStrategyToTree() treeLayoutView.ResetCamera() treeLayoutView.Render() treeLayoutView.GetInteractor().Start()
def main(): graph = vtk.vtkMutableDirectedGraph() a = graph.AddVertex() b = graph.AddChild(a) c = graph.AddChild(a) d = graph.AddChild(b) e = graph.AddChild(c) f = graph.AddChild(c) vertex_labels = vtk.vtkStringArray() vertex_labels.SetName('VertexLabel') vertex_labels.InsertValue(a, 'a') vertex_labels.InsertValue(b, 'b') vertex_labels.InsertValue(c, 'c') vertex_labels.InsertValue(d, 'd') vertex_labels.InsertValue(e, 'e') vertex_labels.InsertValue(f, 'f') graph.GetVertexData().AddArray(vertex_labels) edge_labels = vtk.vtkStringArray() edge_labels.SetName('EdgeLabel') edge_labels.InsertValue(graph.GetEdgeId(a, b), 'a -> b') edge_labels.InsertValue(graph.GetEdgeId(a, c), 'a -> c') edge_labels.InsertValue(graph.GetEdgeId(b, d), 'b -> d') edge_labels.InsertValue(graph.GetEdgeId(c, e), 'c -> e') edge_labels.InsertValue(graph.GetEdgeId(c, f), 'c -> f') graph.GetEdgeData().AddArray(edge_labels) tree = vtk.vtkTree() valid_tree = tree.CheckedShallowCopy(graph) if not valid_tree: print('Invalid tree') return view = vtk.vtkGraphLayoutView() view.SetRepresentationFromInput(tree) # Apply a theme to the views theme = vtk.vtkViewTheme() view.ApplyViewTheme(theme.CreateMellowTheme()) view.SetVertexColorArrayName('VertexDegree') view.SetColorVertices(True) view.SetVertexLabelArrayName('VertexLabel') view.SetVertexLabelVisibility(True) view.SetEdgeLabelArrayName('EdgeLabel') view.SetEdgeLabelVisibility(True) view.SetLayoutStrategyToTree() view.ResetCamera() view.GetRenderWindow().SetSize(600, 600) view.GetRenderWindow().SetWindowName('CreateTree') view.GetRenderWindow().Render() view.GetInteractor().Initialize() view.GetInteractor().Start()
def GetTree(self): """Returns a full vtkTree based on data loaded in LoadData().""" if self.data_loaded: vertex_id = vtk.vtkIdTypeArray() vertex_id.SetName('vertex_ids') for ii in range(len(self.cp)): vertex_id.InsertNextValue(ii) NINvtk = VN.numpy_to_vtk(self.NumberInNet, deep=True) NINvtk.SetName('num_in_vertex') SCALESvtk = VN.numpy_to_vtk(self.Scales, deep=True) SCALESvtk.SetName('scale') # This array will default to empty strings BLANKvtk = vtk.vtkStringArray() BLANKvtk.SetNumberOfComponents(1) BLANKvtk.SetNumberOfTuples(self.NumberInNet.shape[0]) BLANKvtk.SetName('blank') # Build tree out of CP list of "is a child of" # remembering that Matlab indices are 1-based and numpy/VTK 0-based print 'Building graph' dg = vtk.vtkMutableDirectedGraph() edge_id = vtk.vtkIdTypeArray() edge_id.SetName('edge_ids') for ii in range(self.cp.size): dg.AddVertex() for ii in range(self.cp.size): if self.cp[ii] > 0: # CP already zero-based dg.AddGraphEdge(self.cp[ii],ii) # Method for use with wrappers -- AddEdge() in C++ edge_id.InsertNextValue(ii) dg.GetVertexData().AddArray(NINvtk) dg.GetVertexData().AddArray(SCALESvtk) dg.GetVertexData().AddArray(vertex_id) dg.GetVertexData().SetActiveScalars('scale') dg.GetVertexData().SetActivePedigreeIds('vertex_ids') dg.GetEdgeData().AddArray(edge_id) dg.GetEdgeData().SetActivePedigreeIds('edge_ids') tree = vtk.vtkTree() tree.CheckedShallowCopy(dg) return tree else: raise IOError, "Can't get tree until data is loaded successfully"
dg.AddVertex() for ii in range(CP.size): tmp = CP[ii]-1 # 0-based indices if tmp > 0: dg.AddGraphEdge(tmp,ii) # Method for use with wrappers -- AddEdge() in C++ edge_id.InsertNextValue(ii) dg.GetVertexData().AddArray(NINvtk) dg.GetVertexData().AddArray(SCALESvtk) dg.GetVertexData().AddArray(vertex_id) dg.GetVertexData().SetActiveScalars('scale') dg.GetVertexData().SetActivePedigreeIds('vertex_ids') dg.GetEdgeData().AddArray(edge_id) dg.GetEdgeData().SetActivePedigreeIds('edge_ids') tree = vtk.vtkTree() tree.CheckedShallowCopy(dg) view = vtgV.vtkTexturedIcicleView() view.SetTreeFromInput(tree) # view.SetRepresentationFromInputConnection(aa1.GetOutputPort(0)) view.SetAreaSizeArrayName("num_in_vertex") view.SetAreaColorArrayName("level") view.SetAreaLabelArrayName("vertex_ids") view.SetLabelPriorityArrayName("scale") view.SetAreaLabelVisibility(True) view.SetAreaHoverArrayName("vertex_ids") view.SetDisplayHoverText(True) view.SetShrinkPercentage(SHRINK) view.SetLayerThickness(ICEHEIGHT) view.UseGradientColoringOff()
# Allocate 100 tuples to start with. I picked this number # out of air. names.SetNumberOfTuples(100) # load vtk class information reader = csv.reader(open(VTK_DATA_ROOT + "/Data/Infovis/classes.csv", 'r')) classes = [] for row in reader: classes.append(row) # Convert list to tree parseClassTree(classes, builder, names) tree = vtk.vtkTree() tree.CheckedShallowCopy(builder) tree.GetVertexData().AddArray(names) ## Now iterate over the tree and print it #iter = vtk.vtkTreeDFSIterator() #iter.SetTree(tree) # #while iter.HasNext(): # id = iter.Next() # mystr = tree.GetLevel(id) * " " # print mystr + str(names.GetValue(id)) # Display the tree in the tree map viewer view = vtk.vtkGraphLayoutView() view.AddRepresentationFromInput(tree);
from girder_worker.plugins.vtk import dict_to_vtkarrays, dict_to_vtkrow import vtk vtk_builder = vtk.vtkMutableDirectedGraph() node_fields = input['node_fields'] edge_fields = input['edge_fields'] dict_to_vtkarrays(input['node_data'], node_fields, vtk_builder.GetVertexData()) if 'children' in input and len(input['children']) > 0: if 'edge_data' in input['children'][0]: dict_to_vtkarrays(input['children'][0]['edge_data'], edge_fields, vtk_builder.GetEdgeData()) def process_node(vtknode, node): if 'children' in node: for n in node['children']: vtkchild = vtk_builder.AddVertex() vtk_builder.AddGraphEdge(vtknode, vtkchild).GetId() dict_to_vtkrow(n['node_data'], vtk_builder.GetVertexData()) if 'edge_data' in n: dict_to_vtkrow(n['edge_data'], vtk_builder.GetEdgeData()) process_node(vtkchild, n) vtk_builder.AddVertex() dict_to_vtkrow(input['node_data'], vtk_builder.GetVertexData()) process_node(0, input) output = vtk.vtkTree() output.ShallowCopy(vtk_builder)
from romanesco.plugins.vtk import dict_to_vtkarrays, dict_to_vtkrow import vtk vtk_builder = vtk.vtkMutableDirectedGraph() node_fields = input["node_fields"] edge_fields = input["edge_fields"] dict_to_vtkarrays(input["node_data"], node_fields, vtk_builder.GetVertexData()) if "children" in input and len(input["children"]) > 0: if "edge_data" in input["children"][0]: dict_to_vtkarrays(input["children"][0]["edge_data"], edge_fields, vtk_builder.GetEdgeData()) def process_node(vtknode, node): if "children" in node: for n in node["children"]: vtkchild = vtk_builder.AddVertex() vtk_builder.AddGraphEdge(vtknode, vtkchild).GetId() dict_to_vtkrow(n["node_data"], vtk_builder.GetVertexData()) if "edge_data" in n: dict_to_vtkrow(n["edge_data"], vtk_builder.GetEdgeData()) process_node(vtkchild, n) vtk_builder.AddVertex() dict_to_vtkrow(input["node_data"], vtk_builder.GetVertexData()) process_node(0, input) output = vtk.vtkTree() output.ShallowCopy(vtk_builder)