def __init__(self,data_reader,main_renderer,main_interactor,chart_points):
        
        self.poly_data=vtk.vtkPolyData()
        self.lw=Line_Widget(data_reader,main_renderer,main_interactor,self,chart_points)
        
        self.probe_filter=vtk.vtkProbeFilter()
        self.probe_filter.SetInput(self.poly_data)
        
        self.probe_filter.SetSource(data_reader.get_data_set())
        self.actor=vtk.vtkXYPlotActor()
        self.actor.AddInput(self.probe_filter.GetOutput())
        self.actor.GetPositionCoordinate().SetValue(0.05,0.05,0)
        self.actor.GetPosition2Coordinate().SetValue(0.95,0.95,0)

        self.actor.SetYRange(data_reader.get_scalar_range())
        self.actor.SetXValuesToArcLength()
        self.actor.SetNumberOfXLabels(6)
        self.actor.SetTitle("Data")
        self.actor.SetXTitle("s")
        self.actor.SetYTitle("f(s)")
        self.actor.GetProperty().SetColor(0,0,0)
        self.actor.GetProperty().SetLineWidth(2)
        self.actor.SetLabelFormat("%g")
        self.actor.GetTitleTextProperty().SetFontFamilyToArial()
        #main_renderer.AddActor2D(self.actor)
         
        #main_renderer.Render()
        # tu wystartuje nowy watek z wykresem w nowym oknie
        newwin = New_Render_Widget_Package(self.actor)
        #newwin.widget.add_actor(actor)
        newwin.start()
    def __init__(self, data_reader, main_renderer, main_interactor,
                 chart_points):

        self.poly_data = vtk.vtkPolyData()
        self.lw = Line_Widget(data_reader, main_renderer, main_interactor,
                              self, chart_points)

        self.probe_filter = vtk.vtkProbeFilter()
        self.probe_filter.SetInput(self.poly_data)

        self.probe_filter.SetSource(data_reader.get_data_set())
        self.actor = vtk.vtkXYPlotActor()
        self.actor.AddInput(self.probe_filter.GetOutput())
        self.actor.GetPositionCoordinate().SetValue(0.05, 0.05, 0)
        self.actor.GetPosition2Coordinate().SetValue(0.95, 0.95, 0)

        self.actor.SetYRange(data_reader.get_scalar_range())
        self.actor.SetXValuesToArcLength()
        self.actor.SetNumberOfXLabels(6)
        self.actor.SetTitle("Data")
        self.actor.SetXTitle("s")
        self.actor.SetYTitle("f(s)")
        self.actor.GetProperty().SetColor(0, 0, 0)
        self.actor.GetProperty().SetLineWidth(2)
        self.actor.SetLabelFormat("%g")
        self.actor.GetTitleTextProperty().SetFontFamilyToArial()
        #main_renderer.AddActor2D(self.actor)

        #main_renderer.Render()
        # tu wystartuje nowy watek z wykresem w nowym oknie
        newwin = New_Render_Widget_Package(self.actor)
        #newwin.widget.add_actor(actor)
        newwin.start()
예제 #3
0
    def __init__(self, mod_m):
        debug("In Locator::__init__ ()")
        Common.state.busy()
        Base.Objects.Module.__init__(self, mod_m)

        self.root = None
        self.axesactor = None
        self.slider = []
        self.resoln_var = []
        self.probes = []
        self.maxlen = 0.0
        self.graph_var = Tkinter.IntVar()
        self.tubesize_var = Tkinter.DoubleVar()
        self.linelenres_var = Tkinter.DoubleVar()
        self.npoints_var = Tkinter.IntVar()
        self.data_out = self.mod_m.GetOutput()

        self.plot = self.actor = vtkpython.vtkXYPlotActor()
        self.probes.append(PlotLineProbe(self.renwin))

        self._initialize()

        self.renwin.add_actors(self.probes[0].GetActor())
        #        self.renwin.add_actors (self.plot)
        #        self.pipe_objs = self.plot
        self.renwin.Render()
        Common.state.idle()
예제 #4
0
    def __init__ (self, mod_m):
        debug ("In Locator::__init__ ()")
        Common.state.busy ()
        Base.Objects.Module.__init__ (self, mod_m)

        self.root = None
	self.axesactor = None
        self.slider = []
	self.resoln_var = []
	self.maxlen=0.0
        self.plotline_var = Tkinter.IntVar ()
        self.tubesize_var = Tkinter.DoubleVar ()
        self.linelenres_var = Tkinter.DoubleVar ()
	self.npoints_var = Tkinter.IntVar ()
        self.data_out = self.mod_m.GetOutput ()        

        self.line=vtkpython.vtkLineSource()
	self.probe=vtkpython.vtkProbeFilter()
        self.plotline = self.actor = vtkpython.vtkXYPlotActor ()

	self.tuber = vtkpython.vtkTubeFilter()
	self.lineactor = vtkpython.vtkActor()
	self.mapper = vtkpython.vtkPolyDataMapper()
        self.axes=vtkpython.vtkAxes()
	self.trans = vtkpython.vtkTransform()
        self.axesactor = vtkpython.vtkActor()

        self._initialize ()

        self.renwin.add_actors (self.lineactor)
        self.renwin.add_actors (self.plotline)
        self.pipe_objs = self.plotline
        self.renwin.Render ()
        Common.state.idle ()
예제 #5
0
def xyplot(points, title='', c='b', corner=1, lines=False):
    """
    Return a vtkActor that is a plot of 2D points in x and y.

    Use corner to assign its position:
        1=topleft, 
        2=topright, 
        3=bottomleft, 
        4=bottomright.
    """
    c = vc.getColor(c)  # allow different codings
    array_x = vtk.vtkFloatArray()
    array_y = vtk.vtkFloatArray()
    array_x.SetNumberOfTuples(len(points))
    array_y.SetNumberOfTuples(len(points))
    for i, p in enumerate(points):
        array_x.InsertValue(i, p[0])
        array_y.InsertValue(i, p[1])
    field = vtk.vtkFieldData()
    field.AddArray(array_x)
    field.AddArray(array_y)
    data = vtk.vtkDataObject()
    data.SetFieldData(field)
    plot = vtk.vtkXYPlotActor()
    plot.AddDataObjectInput(data)
    plot.SetDataObjectXComponent(0, 0)
    plot.SetDataObjectYComponent(0, 1)
    plot.SetXValuesToValue()
    plot.SetXTitle(title)
    plot.SetYTitle('')
    plot.ExchangeAxesOff()
    plot.PlotPointsOn()
    if not lines: plot.PlotLinesOff()
    plot.GetProperty().SetPointSize(5)
    plot.GetProperty().SetLineWidth(2)
    plot.SetNumberOfXLabels(3)  #not working
    plot.GetProperty().SetColor(0, 0, 0)
    plot.GetProperty().SetOpacity(0.7)
    plot.SetPlotColor(0, c[0], c[1], c[2])
    tprop = plot.GetAxisLabelTextProperty()
    tprop.SetColor(0, 0, 0)
    tprop.SetOpacity(0.7)
    tprop.SetFontFamily(0)
    tprop.BoldOff()
    tprop.ItalicOff()
    tprop.ShadowOff()
    tprop.SetFontSize(3)  #not working
    plot.SetAxisTitleTextProperty(tprop)
    plot.SetAxisLabelTextProperty(tprop)
    plot.SetTitleTextProperty(tprop)
    if corner == 1: plot.GetPositionCoordinate().SetValue(.0, .8, 0)
    if corner == 2: plot.GetPositionCoordinate().SetValue(.7, .8, 0)
    if corner == 3: plot.GetPositionCoordinate().SetValue(.0, .0, 0)
    if corner == 4: plot.GetPositionCoordinate().SetValue(.7, .0, 0)
    plot.GetPosition2Coordinate().SetValue(.3, .2, 0)
    return plot
예제 #6
0
    def plot(self):
        """
        plot visualization of data
        """
        self.ren.RemoveAllViewProps()
        # self.marker_widget.EnabledOff()
        active_scalar = self.data.grid[
            self.current_timestep].GetPointData().GetScalars()
        # print 'active scalar is', active_scalar.GetName()

        line = vtk.vtkLineSource()
        line.SetResolution(30)
        line.SetPoint1(self.line_points[0])
        line.SetPoint2(self.line_points[1])
        probe = vtk.vtkProbeFilter()
        probe.SetInputConnection(line.GetOutputPort())
        probe.SetSourceData(self.data.grid[self.current_timestep])

        tuber = vtk.vtkTubeFilter()
        tuber.SetInputConnection(probe.GetOutputPort())
        tuber.SetRadius(0.02)
        line_mapper = vtk.vtkPolyDataMapper()
        line_mapper.SetInputConnection(tuber.GetOutputPort())
        line_actor = vtk.vtkActor()
        line_actor.SetMapper(line_mapper)
        # self.ren.AddActor(line_actor)

        xyplot = vtk.vtkXYPlotActor()
        if vtk.VTK_MAJOR_VERSION <= 5:
            xyplot.AddInput(probe.GetOutput())
        else:
            xyplot.AddDataSetInputConnection(probe.GetOutputPort())
        xyplot.GetPositionCoordinate().SetValue(0.05, 0.05, 0.0)
        xyplot.GetPosition2Coordinate().SetValue(0.9, 0.9,
                                                 0.0)  #relative to Position
        xyplot.SetXValuesToArcLength()
        xyplot.SetNumberOfXLabels(6)
        xyplot.SetNumberOfYLabels(6)
        xyplot.SetTitle("title")
        xyplot.SetXTitle("length")
        xyplot.SetYTitle("var")
        # xyplot.SetXRange(.1, .35)
        # xyplot.SetYRange(.2, .4)
        # xyplot.GetProperty().SetColor(0, 0, 0)
        xyplot.GetProperty().SetLineWidth(2)
        self.ren.AddActor2D(xyplot)
        # self.xyplotWidget = vtk.vtkXYPlotWidget()
        # self.xyplotWidget.SetXYPlotActor(xyplot)
        # self.xyplotWidget.SetInteractor(self.iren)
        # self.xyplotWidget.EnabledOn()

        self.ren_win.Render()
예제 #7
0
    def plot(self):
        """
        plot visualization of data
        """
        self.ren.RemoveAllViewProps()
        # self.marker_widget.EnabledOff()
        active_scalar = self.data.grid[self.current_timestep].GetPointData().GetScalars()
        # print 'active scalar is', active_scalar.GetName()

        line = vtk.vtkLineSource()
        line.SetResolution(30)
        line.SetPoint1(self.line_points[0])
        line.SetPoint2(self.line_points[1])
        probe = vtk.vtkProbeFilter()
        probe.SetInputConnection(line.GetOutputPort())
        probe.SetSourceData(self.data.grid[self.current_timestep])

        tuber = vtk.vtkTubeFilter()
        tuber.SetInputConnection(probe.GetOutputPort())
        tuber.SetRadius(0.02)
        line_mapper = vtk.vtkPolyDataMapper()
        line_mapper.SetInputConnection(tuber.GetOutputPort())
        line_actor = vtk.vtkActor()
        line_actor.SetMapper(line_mapper)
        # self.ren.AddActor(line_actor)

        xyplot = vtk.vtkXYPlotActor()
        if vtk.VTK_MAJOR_VERSION <= 5:
            xyplot.AddInput(probe.GetOutput())
        else:
            xyplot.AddDataSetInputConnection(probe.GetOutputPort())
        xyplot.GetPositionCoordinate().SetValue(0.05, 0.05, 0.0)
        xyplot.GetPosition2Coordinate().SetValue(0.9, 0.9, 0.0) #relative to Position
        xyplot.SetXValuesToArcLength()
        xyplot.SetNumberOfXLabels(6)
        xyplot.SetNumberOfYLabels(6)
        xyplot.SetTitle("title")
        xyplot.SetXTitle("length")
        xyplot.SetYTitle("var")
        # xyplot.SetXRange(.1, .35)
        # xyplot.SetYRange(.2, .4)
        # xyplot.GetProperty().SetColor(0, 0, 0)
        xyplot.GetProperty().SetLineWidth(2)
        self.ren.AddActor2D(xyplot)
        # self.xyplotWidget = vtk.vtkXYPlotWidget()
        # self.xyplotWidget.SetXYPlotActor(xyplot)
        # self.xyplotWidget.SetInteractor(self.iren)
        # self.xyplotWidget.EnabledOn()

        self.ren_win.Render()
예제 #8
0
def plot(values):

    # convert data from python list of tuples => vtkFieldData
    xCoords = vtk.vtkFloatArray()
    yCoords = vtk.vtkFloatArray()
    xCoords.SetNumberOfTuples(len(values))
    yCoords.SetNumberOfTuples(len(values))

    for i, v in enumerate(values):
        xCoords.SetTuple1(i, v[0])
        yCoords.SetTuple1(i, v[1])

    curve = vtk.vtkFieldData()
    curve.AddArray(xCoords)
    curve.AddArray(yCoords)

    # create vtkDataObject
    plot = vtk.vtkDataObject()
    plot.SetFieldData(curve)

    # build a vtkXYPlotActor
    xyplot = vtk.vtkXYPlotActor()
    xyplot.AddDataObjectInput(plot)
    #xyplot.SetDataObjectPlotModeToRows()
    xyplot.SetDataObjectXComponent(0, 0)
    xyplot.SetDataObjectYComponent(0, 1)
    xyplot.GetPositionCoordinate().SetValue(0, 0.0, 0)
    xyplot.GetPosition2Coordinate().SetValue(1, 1, 0)
    xyplot.PlotPointsOn()
    xyplot.PlotLinesOn()
    xyplot.GetProperty().SetPointSize(5)
    #xyplot.SetXRange(0, 100)
    #xyplot.SetYRange(0, 20)
    xyplot.SetPlotColor(0, 1, 1, 0)

    # setup renderer / window / interactor
    ren = vtk.vtkRenderer()
    ren.SetBackground(0.1, 0.2, 0.4)
    ren.AddActor2D(xyplot)

    renWin = vtk.vtkRenderWindow()
    renWin.SetSize(1000, 800)
    renWin.AddRenderer(ren)

    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)

    renWin.Render()
    iren.Start()
예제 #9
0
    def __init__(self, parent):
        self.Parent = parent
        self.iren = wxVTKRenderWindowInteractor(self.Parent, -1, size=self.Parent.GetSize())
        self.iren.SetPosition((0, 0))
        self.renwin = self.iren.GetRenderWindow()
        self.renwin.StereoCapableWindowOn()
        self.renwin.StereoRenderOff()
        self.renScope = VtkSNRender("SINGLE")
        self.renScope.SetMode("scope")
        self.renwin.AddRenderer(self.renScope)

        self.points = vtk.vtkPoints()
        self.values = vtk.vtkIntArray()

        self.values.SetName("Volts")
        for i in range(800):
            self.points.InsertPoint(i, 0, 0, 0)
            self.values.InsertNextValue(i + 10)

        self.polydata1 = vtk.vtkPolyData()
        self.polydata1.SetPoints(self.points)
        self.polydata1.GetPointData().SetScalars(self.values)
        # self.polydata1.SetLines(self.lines)

        self.xyplot = vtk.vtkXYPlotActor()
        self.xyplot.AddInput(self.polydata1)
        self.xyplot.GetProperty().SetColor(0, 0, 0)
        self.xyplot.GetProperty().SetLineWidth(2)

        self.xyplot.SetTitle("Scope")
        self.xyplot.SetXTitle("")
        self.xyplot.SetYTitle("")
        self.xyplot.GetPositionCoordinate().SetValue(0.1, 0.1, 0)
        self.xyplot.GetPosition2Coordinate().SetValue(0.9, 0.9, 0)
        self.xyplot.SetXRange(0, 800)
        self.xyplot.SetYRange(0, 1023)

        self.renScope.AddActor2D(self.xyplot)
예제 #10
0
 def getWindow(self):
     wins = vtk.vtkRenderWindow();
     wins.SetSize(*self.size[len(self.polyDataSet)-1]);
     for index,polyData in enumerate(self.polyDataSet):
         ren = vtk.vtkRenderer();
         ren.SetBackground(*self.background[index]);
         plot = vtk.vtkXYPlotActor()
         plot.ExchangeAxesOff();
         plot.SetLabelFormat( "%g" );
         plot.SetXTitle( "Scale Val" );
         plot.SetYTitle( "Voxel Count" );
         plot.SetXValuesToValue();
         plot.AddDataSetInput( polyData );
         plot.SetPlotColor(index,self.color[index]);
         plot.SetPlotLabel(index,self.label[index]);
         ren.AddViewProp(plot);
         xMin,xMax = self.xViewPort[len(self.polyDataSet)-1][index]
         yMin,yMax = self.yViewPort[len(self.polyDataSet)-1][index]
         ren.SetViewport(xMin,yMin,xMax,yMax);
         ren.ResetCamera();
         wins.AddRenderer(ren);
     del self.polyDataSet[:];
     return wins;
def UpdateSampleHistogram(obj, ev):
    # For viewport 3, construct the histogram of the sampled data using vtkImageAccumulate class
    histogram = vtk.vtkImageAccumulate()

    # retrieve the scalar range of the plane widget using GetScalarRange()
    range = obj.GetResliceOutput().GetScalarRange()
    r = int(range[1] - range[0])

    # using GetResliceOutput() function to get sampled data from vtkImagePlaneWidget object
    histogram.SetInputData(obj.GetResliceOutput())
    histogram.SetComponentExtent(0, r - 1, 0, 0, 0, 0)
    histogram.SetComponentOrigin(range[0], 0.0, 0.0)
    histogram.SetComponentSpacing(100, 0, 0)
    histogram.Update()

    # In viewport 3, using vtkXYPlotActor class for plotting the histogram
    plot = vtk.vtkXYPlotActor()
    plot.AddDataSetInputConnection(histogram.GetOutputPort())
    plot.SetXRange(range[0], range[1])
    plot.SetLabelFormat("%g")
    plot.SetXTitle("Scalar Value")
    plot.SetYTitle("Frequency")
    plot.SetXValuesToValue()
    ren[2].AddActor(plot)
예제 #12
0
    def addBSpline(self,
                   path,
                   degree,
                   color,
                   thick=False,
                   thickness=_DEFAULT_BSPLINE_THICKNESS):
        self._addedBSpline = True

        tau, u, spline, splineD1, splineD2, splineD3, curv, tors, arcLength, polLength = path.splinePoints(
        )

        self._textActor.SetInput("Length: " + str(arcLength))

        numIntervals = len(tau) - 1

        curvPlotActor = vtk.vtkXYPlotActor()
        curvPlotActor.SetTitle("Curvature")
        curvPlotActor.SetXTitle("")
        curvPlotActor.SetYTitle("")
        curvPlotActor.SetXValuesToIndex()

        torsPlotActor = vtk.vtkXYPlotActor()
        torsPlotActor.SetTitle("Torsion")
        torsPlotActor.SetXTitle("")
        torsPlotActor.SetYTitle("")
        torsPlotActor.SetXValuesToIndex()

        uArrays = []
        curvArrays = []
        torsArrays = []
        for i in range(numIntervals):
            uArrays.append(vtk.vtkDoubleArray())
            uArrays[i].SetName("t")

            curvArrays.append(vtk.vtkDoubleArray())
            curvArrays[i].SetName("Curvature")

            torsArrays.append(vtk.vtkDoubleArray())
            torsArrays[i].SetName("Torsion")

        curvTorsArray = vtk.vtkDoubleArray()

        #minCurv = minTors = minNd1Xd2 = float("inf")
        #maxCurv = maxTors = float("-inf")

        for i in range(len(u)):
            for j in range(numIntervals):
                if u[i] >= tau[j] and u[i] < tau[j + 1]:
                    break

            uArrays[j].InsertNextValue(u[i])
            curvArrays[j].InsertNextValue(curv[i])
            torsArrays[j].InsertNextValue(tors[i])

            curvTorsArray.InsertNextValue(curv[i])  # + abs(tors[i]))

        #print("minCurv: {:e}; maxCurv: {:e}; minTors: {:e}; maxTors: {:e}; minNd1Xd2: {:e}".format(minCurv, maxCurv, minTors, maxTors, minNd1Xd2))

        for inter in range(numIntervals):
            plotTable = vtk.vtkTable()
            plotTable.AddColumn(uArrays[inter])
            plotTable.AddColumn(curvArrays[inter])
            plotTable.AddColumn(torsArrays[inter])

            points = self._chartXYCurv.AddPlot(vtk.vtkChart.LINE)
            points.SetInputData(plotTable, 0, 1)
            points.SetColor(self.COLOR_PLOT_CURV[0], self.COLOR_PLOT_CURV[1],
                            self.COLOR_PLOT_CURV[2])
            points.SetWidth(1.0)
            if inter > 0:
                points.SetLegendVisibility(False)

            points = self._chartXYTors.AddPlot(vtk.vtkChart.LINE)
            points.SetInputData(plotTable, 0, 2)
            points.SetColor(self.COLOR_PLOT_TORS[0], self.COLOR_PLOT_TORS[1],
                            self.COLOR_PLOT_TORS[2])
            points.SetWidth(1.0)
            if inter > 0:
                points.SetLegendVisibility(False)

        vtkPoints = vtk.vtkPoints()
        for point in spline:
            vtkPoints.InsertNextPoint(point[0], point[1], point[2])

        polyDataLabelP = vtk.vtkPolyData()
        polyDataLabelP.SetPoints(vtkPoints)

        labels = vtk.vtkStringArray()
        labels.SetNumberOfValues(len(spline))
        labels.SetName("labels")
        for i in range(len(spline)):
            if i == 0:
                labels.SetValue(i, "S")
            elif i == len(spline) - 1:
                labels.SetValue(i, "E")
            else:
                labels.SetValue(i, "")

        polyDataLabelP.GetPointData().AddArray(labels)

        sizes = vtk.vtkIntArray()
        sizes.SetNumberOfValues(len(spline))
        sizes.SetName("sizes")
        for i in range(len(spline)):
            if i == 0 or i == len(spline) - 1:
                sizes.SetValue(i, 10)
            else:
                sizes.SetValue(i, 1)

        polyDataLabelP.GetPointData().AddArray(sizes)

        pointMapper = vtk.vtkPolyDataMapper()
        pointMapper.SetInputData(polyDataLabelP)

        pointActor = vtk.vtkActor()
        pointActor.SetMapper(pointMapper)

        pointSetToLabelHierarchyFilter = vtk.vtkPointSetToLabelHierarchy()
        pointSetToLabelHierarchyFilter.SetInputData(polyDataLabelP)
        pointSetToLabelHierarchyFilter.SetLabelArrayName("labels")
        pointSetToLabelHierarchyFilter.SetPriorityArrayName("sizes")
        pointSetToLabelHierarchyFilter.GetTextProperty().SetColor(
            self.COLOR_LABELS)
        pointSetToLabelHierarchyFilter.GetTextProperty().SetFontSize(15)
        pointSetToLabelHierarchyFilter.GetTextProperty().SetBold(True)
        pointSetToLabelHierarchyFilter.Update()

        labelMapper = vtk.vtkLabelPlacementMapper()
        labelMapper.SetInputConnection(
            pointSetToLabelHierarchyFilter.GetOutputPort())
        labelActor = vtk.vtkActor2D()
        labelActor.SetMapper(labelMapper)

        self._rendererScene.AddActor(labelActor)

        if thick:
            cellArray = vtk.vtkCellArray()
            cellArray.InsertNextCell(len(spline))
            for i in range(len(spline)):
                cellArray.InsertCellPoint(i)

            polyData = vtk.vtkPolyData()
            polyData.SetPoints(vtkPoints)
            polyData.SetLines(cellArray)

            polyData.GetPointData().SetScalars(curvTorsArray)

            tubeFilter = vtk.vtkTubeFilter()
            tubeFilter.SetNumberOfSides(8)
            tubeFilter.SetInputData(polyData)
            tubeFilter.SetRadius(thickness)
            tubeFilter.Update()

            mapper = vtk.vtkPolyDataMapper()
            mapper.SetInputConnection(tubeFilter.GetOutputPort())

        else:
            unstructuredGrid = vtk.vtkUnstructuredGrid()
            unstructuredGrid.SetPoints(vtkPoints)
            for i in range(1, len(spline)):
                unstructuredGrid.InsertNextCell(vtk.VTK_LINE, 2, [i - 1, i])

            unstructuredGrid.GetPointData().SetScalars(curvArray)

            mapper = vtk.vtkDataSetMapper()
            mapper.SetInputData(unstructuredGrid)

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().SetColor(color)

        self._rendererScene.AddActor(actor)
예제 #13
0
파일: plotter.py 프로젝트: trianam/voropath
    def addBSpline(self, path, degree, color, thick=False, thickness=_DEFAULT_BSPLINE_THICKNESS):
        self._addedBSpline = True

        tau, u, spline, splineD1, splineD2, splineD3, curv, tors, arcLength, polLength = path.splinePoints()

        self._textActor.SetInput("Length: "+str(arcLength))

        numIntervals = len(tau)-1

        curvPlotActor = vtk.vtkXYPlotActor()
        curvPlotActor.SetTitle("Curvature")
        curvPlotActor.SetXTitle("")
        curvPlotActor.SetYTitle("")
        curvPlotActor.SetXValuesToIndex()
        
        torsPlotActor = vtk.vtkXYPlotActor()
        torsPlotActor.SetTitle("Torsion")
        torsPlotActor.SetXTitle("")
        torsPlotActor.SetYTitle("")
        torsPlotActor.SetXValuesToIndex()

        uArrays = []
        curvArrays = []
        torsArrays = []
        for i in range(numIntervals):
            uArrays.append(vtk.vtkDoubleArray())
            uArrays[i].SetName("t")
            
            curvArrays.append(vtk.vtkDoubleArray())
            curvArrays[i].SetName("Curvature")

            torsArrays.append(vtk.vtkDoubleArray())
            torsArrays[i].SetName("Torsion")
        
        curvTorsArray = vtk.vtkDoubleArray()

        #minCurv = minTors = minNd1Xd2 = float("inf")
        #maxCurv = maxTors = float("-inf")
        
        for i in range(len(u)):
            for j in range(numIntervals):
                if u[i] >= tau[j] and u[i] < tau[j+1]:
                    break
            
            uArrays[j].InsertNextValue(u[i])
            curvArrays[j].InsertNextValue(curv[i])
            torsArrays[j].InsertNextValue(tors[i])
            
            curvTorsArray.InsertNextValue(curv[i])# + abs(tors[i]))

        #print("minCurv: {:e}; maxCurv: {:e}; minTors: {:e}; maxTors: {:e}; minNd1Xd2: {:e}".format(minCurv, maxCurv, minTors, maxTors, minNd1Xd2))

        for inter in range(numIntervals):
            plotTable = vtk.vtkTable()
            plotTable.AddColumn(uArrays[inter])
            plotTable.AddColumn(curvArrays[inter])
            plotTable.AddColumn(torsArrays[inter])
        
            points = self._chartXYCurv.AddPlot(vtk.vtkChart.LINE)
            points.SetInputData(plotTable, 0, 1)
            points.SetColor(self.COLOR_PLOT_CURV[0], self.COLOR_PLOT_CURV[1], self.COLOR_PLOT_CURV[2])
            points.SetWidth(1.0)
            if inter > 0:
                points.SetLegendVisibility(False)
            
            points = self._chartXYTors.AddPlot(vtk.vtkChart.LINE)
            points.SetInputData(plotTable, 0, 2)
            points.SetColor(self.COLOR_PLOT_TORS[0], self.COLOR_PLOT_TORS[1], self.COLOR_PLOT_TORS[2])
            points.SetWidth(1.0)
            if inter > 0:
                points.SetLegendVisibility(False)

            
        vtkPoints = vtk.vtkPoints()
        for point in spline:
            vtkPoints.InsertNextPoint(point[0], point[1], point[2])

        polyDataLabelP = vtk.vtkPolyData()
        polyDataLabelP.SetPoints(vtkPoints)
        
        labels = vtk.vtkStringArray()
        labels.SetNumberOfValues(len(spline))
        labels.SetName("labels")
        for i in range(len(spline)):
            if i == 0:
                labels.SetValue(i, "S")
            elif i == len(spline)-1:
                labels.SetValue(i, "E")
            else:
                labels.SetValue(i, "")

        polyDataLabelP.GetPointData().AddArray(labels)

        sizes = vtk.vtkIntArray()
        sizes.SetNumberOfValues(len(spline))
        sizes.SetName("sizes")
        for i in range(len(spline)):
            if i == 0 or i == len(spline)-1:
                sizes.SetValue(i, 10)
            else:
                sizes.SetValue(i,1)

        polyDataLabelP.GetPointData().AddArray(sizes)
        
        pointMapper = vtk.vtkPolyDataMapper()
        pointMapper.SetInputData(polyDataLabelP)
 
        pointActor = vtk.vtkActor()
        pointActor.SetMapper(pointMapper)

        pointSetToLabelHierarchyFilter = vtk.vtkPointSetToLabelHierarchy()
        pointSetToLabelHierarchyFilter.SetInputData(polyDataLabelP)
        pointSetToLabelHierarchyFilter.SetLabelArrayName("labels")
        pointSetToLabelHierarchyFilter.SetPriorityArrayName("sizes")
        pointSetToLabelHierarchyFilter.GetTextProperty().SetColor(self.COLOR_LABELS)
        pointSetToLabelHierarchyFilter.GetTextProperty().SetFontSize(15)
        pointSetToLabelHierarchyFilter.GetTextProperty().SetBold(True)
        pointSetToLabelHierarchyFilter.Update()
        
        labelMapper = vtk.vtkLabelPlacementMapper()
        labelMapper.SetInputConnection(pointSetToLabelHierarchyFilter.GetOutputPort())
        labelActor = vtk.vtkActor2D()
        labelActor.SetMapper(labelMapper)

        self._rendererScene.AddActor(labelActor)

        if thick:
            cellArray = vtk.vtkCellArray()
            cellArray.InsertNextCell(len(spline))
            for i in range(len(spline)):
                cellArray.InsertCellPoint(i)

            polyData = vtk.vtkPolyData()
            polyData.SetPoints(vtkPoints)
            polyData.SetLines(cellArray)

            polyData.GetPointData().SetScalars(curvTorsArray)
            
            tubeFilter = vtk.vtkTubeFilter()
            tubeFilter.SetNumberOfSides(8)
            tubeFilter.SetInputData(polyData)
            tubeFilter.SetRadius(thickness)
            tubeFilter.Update()

            mapper = vtk.vtkPolyDataMapper()
            mapper.SetInputConnection(tubeFilter.GetOutputPort())

        else:
            unstructuredGrid = vtk.vtkUnstructuredGrid()
            unstructuredGrid.SetPoints(vtkPoints)
            for i in range(1, len(spline)):
                unstructuredGrid.InsertNextCell(vtk.VTK_LINE, 2, [i-1, i])

            unstructuredGrid.GetPointData().SetScalars(curvArray)
            
            mapper = vtk.vtkDataSetMapper()
            mapper.SetInputData(unstructuredGrid)

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().SetColor(color)

        self._rendererScene.AddActor(actor)
예제 #14
0
appendF.AddInputConnection(probe2.GetOutputPort())
appendF.AddInputConnection(probe3.GetOutputPort())

# Create a tube filter to represent the lines as tubes.  Set up the
# associated mapper and actor.
tuber = vtk.vtkTubeFilter()
tuber.SetInputConnection(appendF.GetOutputPort())
tuber.SetRadius(0.1)
lineMapper = vtk.vtkPolyDataMapper()
lineMapper.SetInputConnection(tuber.GetOutputPort())
lineActor = vtk.vtkActor()
lineActor.SetMapper(lineMapper)

# Create an xy-plot using the output of the 3 probe filters as input.
# The x-values we are plotting are arc length.
xyplot = vtk.vtkXYPlotActor()
xyplot.AddDataSetInputConnection(probe.GetOutputPort())
xyplot.AddDataSetInputConnection(probe2.GetOutputPort())
xyplot.AddDataSetInputConnection(probe3.GetOutputPort())
xyplot.GetPositionCoordinate().SetValue(0.0, 0.67, 0)
xyplot.GetPosition2Coordinate().SetValue(1.0, 0.33, 0) #relative to Position
xyplot.SetXValuesToArcLength()
xyplot.SetNumberOfXLabels(6)
xyplot.SetTitle("Pressure vs. Arc Length (Zoomed View)")
xyplot.SetXTitle("")
xyplot.SetYTitle("P")
xyplot.SetXRange(.1, .35)
xyplot.SetYRange(.2, .4)
xyplot.GetProperty().SetColor(0, 0, 0)
xyplot.GetProperty().SetLineWidth(2)
# Set text prop color (same color for backward compat with test)
예제 #15
0
    def plot(self, struct):

        # creates self. data1, legend, filename, fieldname, dim, has_field, tracker, revision
        if not self.call_config(struct):
            return

        # creates self.src
        if not self.call_src():
            return

# linha start
# => src_update1
        self.range_in = self.src.GetOutput().GetScalarRange()
        b = self.range_bo = self.src.GetOutput().GetBounds()
        print 'reader scalars', self.range_in
        print 'reader bounds', self.range_bo

        # Create three the line source to use for the probe lines.
        #        p1 = ((b[0]+b[1])/2.0, b[2], (b[4]+b[5])/2.0)
        #        p2 = ((b[0]+b[1])/2.0, b[3], (b[4]+b[5])/2.0)
        p1 = (b[0], b[2], b[4])
        p2 = (b[1], b[3], b[5])
        self.line = vtk.vtkLineSource()
        self.line.SetResolution(100)
        #self.line.SetPoint1(p1)
        #self.line.SetPoint2(p2)
        self.line.SetPoint1((0, 0, 0))
        self.line.SetPoint2((1, 1, 1))

        self.probe = probe = vtk.vtkProbeFilter()
        probe.SetInputConnection(self.line.GetOutputPort())

        # si es cell data, lo transforma a point data, porque vtkProbeFilter parece ser que no soporta cell data.
        if self.data1.get('fielddomain') == 'cell':
            self.cdtpd = vtk.vtkCellDataToPointData()
            self.cdtpd.SetInputConnection(self.src.GetOutputPort())
            if vtk.vtkVersion.GetVTKMajorVersion() < 6:
                probe.SetSource(self.cdtpd.GetOutput())
            else:
                probe.SetSourceConnection(self.cdtpd.GetOutputPort())
        else:
            if vtk.vtkVersion.GetVTKMajorVersion() < 6:
                probe.SetSource(self.src.GetOutput())
            else:
                probe.SetSourceConnection(self.src.GetOutputPort())

#        lineMapper = vtk.vtkPolyDataMapper()
#        lineMapper.SetInputConnection(probe.GetOutputPort())
#        lineMapper.ScalarVisibilityOff()
#        self.lineActor = vtk.vtkActor()
#        self.lineActor.SetMapper(lineMapper)
#        self.lineActor.GetProperty().SetColor(Plot.probe_line_color)
# linha end

        self.wireM = vtk.vtkDataSetMapper()
        self.wireM.SetInputConnection(self.src.GetOutputPort())

        # reverse rainbow [red->blue] -> [blue->red]
        self.look = look = self.wireM.GetLookupTable()

        self.scalarrange.local_set(self.src.GetOutput().GetScalarRange())

        self.add_scalarbar_2(look)

        self.add_outline_2(self.src)

        self.wireA = vtk.vtkActor()
        self.wireA.SetMapper(self.wireM)
        self.wireA.GetProperty().SetRepresentationToSurface()
        self.wireA.GetProperty().SetColor(Plot.edges_color)
        self.wireA.GetProperty().SetEdgeColor(Plot.edges_color)

        self.add_swe_2(self.wireA)  # wireframe/surface/surface+edges
        self.add_opacity_2([self.wireA])  # Opacity: 100%/75%/50%/25%/0%
        # test mover liña interactivamente 2 INICIO
        self.lineI = vtk.vtkLineWidget()
        self.lineI.GetLineProperty().SetColor(Plot.probe_line_color)
        seeds = vtk.vtkPolyData()
        if vtk.vtkVersion.GetVTKMajorVersion() < 6:
            self.lineI.SetInput(self.src.GetOutput())
        else:
            self.lineI.SetInputConnection(self.src.GetOutputPort())
        self.lineI.PlaceWidget()
        self.lineI.GetPolyData(seeds)

        iren = self.widget.GetRenderWindow().GetInteractor()
        self.lineI.SetInteractor(iren)
        self.lineI.On()

        self.lineI.AddObserver("StartInteractionEvent", self.event_start)
        #        self.lineI.AddObserver("InteractionEvent", self.event)
        self.lineI.AddObserver("EndInteractionEvent", self.event_end)

        # test mover liña interactivamente 2 FIN
        p1 = self.lineI.GetPoint1()
        p2 = self.lineI.GetPoint2()
        self.line.SetPoint1(p1)
        self.line.SetPoint2(p2)

        self.rens[0].AddActor(self.wireA)
        #        self.rens[0].AddActor(self.lineActor)
        #self.rens[0].SetViewport(0, 0, 0.5, 1)

        # end

        # xy start

        # The x-values we are plotting are the underlying point data values.
        self.xyplot3 = xyplot3 = vtk.vtkXYPlotActor()
        if vtk.vtkVersion.GetVTKMajorVersion() < 6:
            xyplot3.AddInput(probe.GetOutput())
        else:
            xyplot3.AddDataSetInputConnection(probe.GetOutputPort())
        xyplot3.GetPositionCoordinate().SetValue(0.0, 0.0, 0)
        xyplot3.GetPosition2Coordinate().SetValue(1.0, 0.95,
                                                  0)  #relative to Position
        #        xyplot3.SetXValuesToIndex()
        #        SetXValuesToNormalizedArcLength()
        xyplot3.SetXValuesToArcLength()
        #        xyplot3.SetXValuesToValue()
        xyplot3.SetPointComponent(0, 1)
        xyplot3.SetNumberOfXLabels(6)
        xyplot3.SetTitle(" ")
        xyplot3.SetXTitle(" ")
        xyplot3.SetYTitle(" ")
        xyplot3.PlotPointsOn()
        xyplot3.GetProperty().SetColor(1, 1, 1)
        xyplot3.GetProperty().SetPointSize(3)
        # Set text prop color (same color for backward compat with test)
        # Assign same object to all text props
        tprop = xyplot3.GetTitleTextProperty()
        tprop.SetColor(xyplot3.GetProperty().GetColor())
        xyplot3.SetAxisTitleTextProperty(tprop)
        xyplot3.SetAxisLabelTextProperty(tprop)

        #        self.ren2 = self.add_ren()
        ren = vtk.vtkRenderer()
        self.widget2.GetRenderWindow().AddRenderer(ren)
        #ren.SetViewport(0.5, 0, 1, 1)
        ren.AddActor(xyplot3)

        # xy end

        # se é esta en branco o leaf float, encheo de valores extremos
        if self.is_empty(struct):
            self.fill(struct, p1, p2)

        # le os datos do leaf float
        self.copy_params(struct)

        self.done = True
예제 #16
0
    def __init__(self, parent,title,nchannel=1):
      self.Parent = parent
      self.nchannel = nchannel
      self.iren = wxVTKRenderWindowInteractor(self.Parent,-1,size = self.Parent.GetSize())
      self.iren.SetPosition((0,0))
      self.renwin = self.iren.GetRenderWindow()
      self.renwin.StereoCapableWindowOn()
      self.renwin.StereoRenderOff()
      self.renScope = {}
      self.mode = '%dchScope'%nchannel
      for i in range(nchannel):
          name = '%d_%dchScope'%(i+1,nchannel)
          self.renScope[i] = {}
          new_render = VtkSNRender(name)  
          new_render.SetMode(self.mode)
          new_render.SetQuadrant(name)
          self.renwin.AddRenderer(new_render)
          self.renScope[i]['render'] = new_render
          self.renScope[i]['name'] = name
      
      #Constantes de tela
      self.H_MAX = 800
      self.V_MAX = 1030
      
      self.V_MAX_UNIT = 100.0
      self.H_MAX_UNIT = 1.0 
      
      self.V_DIG_MAX_UNIT = 10.0
      self.H_DIG_MAX_UNIT = 4098

      for render in self.renScope:
          self.renScope[render]['points'] = vtk.vtkPoints()
          self.renScope[render]['values'] = vtk.vtkFloatArray()
          
          self.PontosNaTela = 0
          
          self.renScope[render]['values'].SetName("Values")
          toggle = 0.0
          edge = 500
          #For fast render time
          self.renScope[render]['points'].SetNumberOfPoints(self.H_DIG_MAX_UNIT)
          self.renScope[render]['values'].SetNumberOfValues(self.H_DIG_MAX_UNIT)
          for i in range(self.H_DIG_MAX_UNIT):
            #self.renScope[render]['points'].InsertPoint(i,0,0,0)
            #self.renScope[render]['values'].InsertValue(i,toggle)
            #For fast render time in conjuction with SetNumberOfPoints and SetNumberOfValues
            self.renScope[render]['points'].SetPoint(i,0,0,0)
            self.renScope[render]['values'].SetValue(i,toggle)
            if i == edge:
              if toggle:
                toggle = 0.0
              else:  
                toggle = self.V_MAX_UNIT/2
              edge = edge + 500
            self.PontosNaTela += 1 

          self.renScope[render]['polydata'] = vtk.vtkPolyData()
          self.renScope[render]['polydata'].SetPoints(self.renScope[render]['points'])
          self.renScope[render]['polydata'].GetPointData().SetScalars(self.renScope[render]['values'])
          self.renScope[render]['xyplot'] = vtk.vtkXYPlotActor()
          self.renScope[render]['xyplot'].AddInput(self.renScope[render]['polydata'])
          self.renScope[render]['xyplot'].GetProperty().SetColor(0, 1, 0)
          self.renScope[render]['xyplot'].GetProperty().SetLineWidth(1)
          self.renScope[render]['xyplot'].GetProperty().SetPointSize(2)
          
          self.renScope[render]['xyplot'].GetAxisLabelTextProperty().SetFontSize(1)
          self.renScope[render]['xyplot'].GetAxisLabelTextProperty().BoldOff()
          
          self.renScope[render]['xyplot'].PlotPointsOn()
          self.renScope[render]['xyplot'].PlotLinesOn()
          
          self.renScope[render]['xyplot'].SetTitle(title)
          self.renScope[render]['xyplot'].SetXTitle("")
          self.renScope[render]['xyplot'].SetYTitle("")
          self.renScope[render]['xyplot'].GetPositionCoordinate().SetValue(0.02, 0.1, 0)
          self.renScope[render]['xyplot'].GetPosition2Coordinate().SetValue(0.99, 0.9, 0)
          
          #self.renScope[render]['plotwidget'] = vtk.vtkXYPlotWidget()
          #self.renScope[render]['plotwidget'].SetXYPlotActor(self.renScope[render]['xyplot'])
          #self.renScope[render]['plotwidget'].SetInteractor(self.iren)
          self.renScope[render]['render'].AddActor2D(self.renScope[render]['xyplot'])
예제 #17
0
    def plot(self, struct):

        # creates self. data1, legend, filename, fieldname, dim, has_field, tracker, revision
        if not self.call_config(struct):
            return

        # creates self.src
        #if not self.call_src():
        #    return

        self.rens[0].SetBackground((1.0, 1.0, 1.0))
        self.xyplot = vtk.vtkXYPlotActor()

        if self.tracker.is_void:
            return False
        elif self.tracker.type == "node_files":
            series_num = 0
            labels = []

            trackers = self.tracker.trackers
            self.dataname = []
            for tracker in trackers:
                self.dataname.append(tracker.get_vtkfile())

            for name in self.dataname:
                res = self.Gr2_File_to_Polydata(name)
                polydata = res.get('polydata')
                labels.extend(res.get('labels')[min(len(labels), 3):])
                series_num = series_num + res.get('series_num')

                for pd in polydata:
                    if vtk.vtkVersion.GetVTKMajorVersion() < 6:
                        self.xyplot.AddInput(pd)
                    else:
                        self.xyplot.AddDataSetInput(pd)
#            return False
        else:
            self.dataname = self.tracker.get_vtkfile()
            #returns 'labels', 'series_num' and 'polydata' keys
            res = self.Gr2_File_to_Polydata(self.dataname)

            polydata = res.get('polydata')
            labels = res.get('labels')
            series_num = res.get('series_num')

            for pd in polydata:
                if vtk.vtkVersion.GetVTKMajorVersion() < 6:
                    self.xyplot.AddInput(pd)
                else:
                    self.xyplot.AddDataSetInput(pd)

        self.xyplot.GetPositionCoordinate().SetValue(self.pospi0)
        self.xyplot.GetPosition2Coordinate().SetValue(self.pospt0)  # rel
        # relative to the ones avobe
        self.xyplot.SetLegendPosition(self.posli0)
        self.xyplot.SetLegendPosition2(self.poslt0)  # rel

        #        self.xyplot.SetXValuesToArcLength()
        self.xyplot.SetXValuesToValue()

        temp = labels[0]
        if temp is None:
            temp = '2D graph'
        self.xyplot.SetTitle(temp)
        temp = labels[1]
        if temp is None:
            temp = 'X axis'
        self.xyplot.SetXTitle(temp)
        temp = labels[2]
        if temp is None:
            temp = 'Y axis'
        self.xyplot.SetYTitle(temp)

        for t in range(series_num):
            temp = labels[3 + t]
            if temp is None:
                temp = 'Series ' + unicode(t)
            self.xyplot.SetPlotLabel(t, temp)
            self.xyplot.SetPlotColor(t, palette[t % len(palette)])

        self.xyplot.LegendOn()

        self.xyplot.PlotPointsOn()

        self.xyplot.GetProperty().SetColor(0.0, 0.0, 0.0)
        self.xyplot.GetProperty().SetPointSize(3)
        # Set text prop color (same color for backward compat with test)
        # Assign same object to all text props
        tprop = self.xyplot.GetTitleTextProperty()
        tprop.SetColor(self.xyplot.GetProperty().GetColor())
        self.xyplot.SetAxisTitleTextProperty(tprop)
        self.xyplot.SetAxisLabelTextProperty(tprop)

        self.copy_params(struct)

        self.set_iren()
        self.inter = vtk.vtkInteractorStyleRubberBand2D()
        #self.inter = vtk.vtkInteractorStyleRubberBandZoom()
        self.inter.SetInteractor(self.iren)
        self.widget.SetInteractorStyle(self.inter)

        self.rens[0].AddActor(self.xyplot)

        self.last = None
        self.inter.AddObserver("SelectionChangedEvent", self.selection)
        # meanwhile not enough with the above:
        self.inter.AddObserver("StartInteractionEvent", self.selectioni)
        self.inter.AddObserver("EndInteractionEvent", self.selectionf)

        self.done = True
예제 #18
0
        _yData.SetTuple1(i,y[i])

    # create a field data object 
    # (I think this is as a containter to hold the data arrays)
    _fieldData = vtk.vtkFieldData()
    _fieldData.AllocateArrays(2)
    _fieldData.AddArray(_xData)
    _fieldData.AddArray(_yData)

    # now put the field data object into a data object so that can add it as
    # input to the xyPlotActor
    _dataObject = vtk.vtkDataObject()
    _dataObject.SetFieldData(_fieldData)

    # set up the actor
    _plot = vtk.vtkXYPlotActor()
    _plot.AddDataObjectInput(_dataObject)

    # set the title and stuff
    _plot.SetTitle("Example 2D plot")
    _plot.SetXTitle("x")
    _plot.SetYTitle("x^2")
    _plot.SetXValuesToValue()

    # set which parts of the data object are to be used for which axis
    _plot.SetDataObjectXComponent(0,0)
    _plot.SetDataObjectYComponent(0,1)

    # add the actor
    _ren.AddActor2D(_plot)
    
예제 #19
0
array1.InsertNextValue(2)

array2 = vtk.vtkFloatArray()
array2.InsertNextValue(3)
array2.InsertNextValue(0)
array2.InsertNextValue(2)
array2.InsertNextValue(1)

unstructuredGrid.GetPointData().SetScalars(array1)
unstructuredGrid2 = vtk.vtkUnstructuredGrid()
unstructuredGrid2.CopyStructure(unstructuredGrid)
unstructuredGrid2.GetPointData().SetScalars(array2)
#polyData = vtk.vtkPolyData()
#polyData.GetPointData().SetScalars(array1)

plotActor = vtk.vtkXYPlotActor()
plotActor.SetTitle("Ma Sticazzi?")
#plotActor.AddDataSetInput(polyData)
plotActor.AddDataSetInput(unstructuredGrid)
plotActor.AddDataSetInput(unstructuredGrid2)
plotWidget = vtk.vtkXYPlotWidget()
#plotWidget.SetOutlineColor(0.9300, 0.5700, 0.1300)
plotWidget.SetXYPlotActor(plotActor)
plotWidget.SetInteractor(renderWindowInteractor)
#plotWidget.SetViewport(0.2, 0.2, 0.4, 0.4)
plotWidget.SetEnabled(True)
#plotWidget.InteractiveOn()

#plotWidget = vtk.QVTKWidget()
#view = vtk.vtkContextView()
#view.SetInteractor(renderWindowInteractor)
예제 #20
0
def cornerPlot(points, pos=1, s=0.2, title="", c="b", bg="k", lines=True):
    """
    Return a ``vtkXYPlotActor`` that is a plot of `x` versus `y`,
    where `points` is a list of `(x,y)` points.

    :param int pos: assign position:

        - 1, topleft,
        - 2, topright,
        - 3, bottomleft,
        - 4, bottomright.
    """
    if len(points) == 2:  # passing [allx, ally]
        #points = list(zip(points[0], points[1]))
        points = np.stack((points[0], points[1]), axis=1)

    c = colors.getColor(c)  # allow different codings
    array_x = vtk.vtkFloatArray()
    array_y = vtk.vtkFloatArray()
    array_x.SetNumberOfTuples(len(points))
    array_y.SetNumberOfTuples(len(points))
    for i, p in enumerate(points):
        array_x.InsertValue(i, p[0])
        array_y.InsertValue(i, p[1])
    field = vtk.vtkFieldData()
    field.AddArray(array_x)
    field.AddArray(array_y)
    data = vtk.vtkDataObject()
    data.SetFieldData(field)

    plot = vtk.vtkXYPlotActor()
    plot.AddDataObjectInput(data)
    plot.SetDataObjectXComponent(0, 0)
    plot.SetDataObjectYComponent(0, 1)
    plot.SetXValuesToValue()
    plot.SetAdjustXLabels(0)
    plot.SetAdjustYLabels(0)
    plot.SetNumberOfXLabels(3)

    plot.GetProperty().SetPointSize(5)
    plot.GetProperty().SetLineWidth(2)
    plot.GetProperty().SetColor(colors.getColor(bg))
    plot.SetPlotColor(0, c[0], c[1], c[2])

    plot.SetXTitle(title)
    plot.SetYTitle("")
    plot.ExchangeAxesOff()
    plot.PlotPointsOn()
    if not lines:
        plot.PlotLinesOff()
    if pos == 1:
        plot.GetPositionCoordinate().SetValue(0.0, 0.8, 0)
    elif pos == 2:
        plot.GetPositionCoordinate().SetValue(0.76, 0.8, 0)
    elif pos == 3:
        plot.GetPositionCoordinate().SetValue(0.0, 0.0, 0)
    elif pos == 4:
        plot.GetPositionCoordinate().SetValue(0.76, 0.0, 0)
    else:
        plot.GetPositionCoordinate().SetValue(pos[0], pos[1], 0)
    plot.GetPosition2Coordinate().SetValue(s, s, 0)
    return plot
예제 #21
0
def extract_profiles_vtk(name):

    gridreader = vtk.vtkXMLStructuredGridReader()
    gridreader.SetFileName(name)
    gridreader.Update()

    grid = gridreader.GetOutput()
    data = grid.GetPointData()
    points = grid.GetPoints()
    dims = grid.GetDimensions()
    velocity = data.GetArray("Velocity")
    phase = data.GetArray("Phase")
    #data.SetActiveScalars("Phase")

    phase_image = vtk.vtkImageData()
    phase_image.SetSpacing(1.0, 1.0, 1.0)
    phase_image.SetOrigin(0.0, 0.0, 0.0)
    phase_image.SetDimensions(dims[0], dims[1], dims[2])
    phase_image.GetPointData().SetScalars(phase)
    phase_image.GetPointData().SetVectors(velocity)

    extract = vtk.vtkExtractVOI()
    extract.SetInput(phase_image)
    extract.SetVOI(0, 0, 0, dims[1] - 1, 0, dims[2] - 1)
    extract.Update()

    #Create a contour
    #contour=vtk.vtkOutlineFilter()
    contour = vtk.vtkContourFilter()
    contour.SetInputConnection(extract.GetOutputPort())
    #contour.SetInput(phase_image)
    contour.SetValue(0, 0.0)
    contour.Update()

    #cont_points=contour.GetOutput().GetPoints()
    probe = vtk.vtkProbeFilter()
    probe.SetInputConnection(contour.GetOutputPort())
    probe.SetSource(extract.GetOutput())
    probe.Update()

    filt_points = vtk.vtkMaskPoints()
    filt_points.SetInputConnection(probe.GetOutputPort())
    #filt_points.SetMaximumNumberOfPoints(200)
    #filt_points.SetRandomMode(1)
    filt_points.SetOnRatio(10)
    arrow = vtk.vtkArrowSource()
    glyph = vtk.vtkGlyph3D()
    glyph.SetInputConnection(filt_points.GetOutputPort())
    glyph.SetSourceConnection(arrow.GetOutputPort())
    glyph.SetVectorModeToUseVector()
    glyph.SetScaleModeToScaleByVector()
    glyph.SetScaleFactor(400.0)

    glyphMapper = vtk.vtkPolyDataMapper()
    glyphMapper.SetInputConnection(glyph.GetOutputPort())

    glyphActor = vtk.vtkActor()
    glyphActor.SetMapper(glyphMapper)
    glyphActor.GetProperty().SetColor(0.1, 0.5, 0.2)
    print glyphActor.GetProperty().GetColor()
    #print "Probe=", probe.GetOutput()
    calc = vtk.vtkArrayCalculator()
    calc.SetInput(probe.GetOutput())
    #calc.AddVectorArrayName("Velocity",1,1,1)
    calc.AddScalarVariable("Vz", "Velocity", 2)
    calc.SetResultArrayName("Velocity comp 2")
    calc.SetFunction("Vz")
    #calc.SetResultArrayName("Velocity Magnitude")
    #calc.SetFunction("mag(Velocity)")
    calc.Update()
    print calc.GetOutput()

    xyplot = vtk.vtkXYPlotActor()
    vel = probe.GetOutput().GetPointData().GetArray("Velocity")

    #exam=vtk.vtkDoubleArray()
    #vel.GetData(0,vel.GetNumberOfTuples()-1,2,2,exam)
    xyplot.AddInput(calc.GetOutput())
    #xyplot.GetPositionCoordinate().SetValue(0.0, 0.67, 0)
    #xyplot.GetPosition2Coordinate().SetValue(1.0, 0.33, 0) #relative to Position
    xyplot.SetXValuesToArcLength()
    #xyplot.SetNumberOfXLabels(6)
    #xyplot.SetTitle("Pressure vs. Arc Length (Zoomed View)")
    #xyplot.SetXTitle("")
    #xyplot.SetYTitle("P")
    #xyplot.SetXRange(.1, .35)
    #xyplot.SetYRange(.2, .4)
    xyplot.GetProperty().SetColor(0, 0, 0)
    xyplot.GetProperty().SetLineWidth(2)
    # Set text prop color (same color for backward compat with test)
    # Assign same object to all text props
    tprop = xyplot.GetTitleTextProperty()
    tprop.SetColor(xyplot.GetProperty().GetColor())
    xyplot.SetAxisTitleTextProperty(tprop)
    xyplot.SetAxisLabelTextProperty(tprop)

    #glyph=vtk.vtkGlyph3D()
    #glyph.SetInput(contour.GetOutput())

    contourMapper = vtk.vtkPolyDataMapper()
    #contourMapper.SetScalarRange(phase.GetRange())
    contourMapper.SetInputConnection(contour.GetOutputPort())

    sliceMapper = vtk.vtkImageMapper()
    #sliceMapper = vtk.vtkDataSetMapper()
    sliceMapper.SetInput(extract.GetOutput())
    sliceMapper.SetColorLevel(1000)
    sliceMapper.SetColorWindow(2000)
    #sliceMapper.SetColorModeToMapScalars()

    #print polydata.GetClassName()

    contourActor = vtk.vtkActor()
    contourActor.SetMapper(contourMapper)

    sliceActor = vtk.vtkActor2D()
    sliceActor.SetMapper(sliceMapper)

    ren = vtk.vtkRenderer()
    #ren.AddActor(contourActor)
    ren.AddActor2D(sliceActor)
    #ren.AddActor(glyphActor)
    ren.SetBackground(0.1, 0.2, 0.4)
    #ren.SetColor(0.1,0.5,0.2)
    #ren.SetViewport(0, 0, .3, 1)

    ren2 = vtk.vtkRenderer()
    ren2.SetBackground(1, 1, 1)
    ren2.SetViewport(0.3, 0.0, 1.0, 1.0)
    ren2.AddActor2D(xyplot)

    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren)
    #renWin.AddRenderer(ren2)
    renWin.SetSize(500, 500)

    #win=vtk.vtkWindowToImageFilter()
    #win.SetInput(renWin)

    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)

    iren.Initialize()
    renWin.Render()
    iren.Start()
예제 #22
0
appendF.AddInputConnection(probe2.GetOutputPort())
appendF.AddInputConnection(probe3.GetOutputPort())

# Create a tube filter to represent the lines as tubes.  Set up the
# associated mapper and actor.
tuber = vtk.vtkTubeFilter()
tuber.SetInputConnection(appendF.GetOutputPort())
tuber.SetRadius(0.1)
lineMapper = vtk.vtkPolyDataMapper()
lineMapper.SetInputConnection(tuber.GetOutputPort())
lineActor = vtk.vtkActor()
lineActor.SetMapper(lineMapper)

# Create an xy-plot using the output of the 3 probe filters as input.
# The x-values we are plotting are arc length.
xyplot = vtk.vtkXYPlotActor()
xyplot.AddDataSetInputConnection(probe.GetOutputPort())
xyplot.AddDataSetInputConnection(probe2.GetOutputPort())
xyplot.AddDataSetInputConnection(probe3.GetOutputPort())
xyplot.GetPositionCoordinate().SetValue(0.0, 0.67, 0)
xyplot.GetPosition2Coordinate().SetValue(1.0, 0.33, 0)  #relative to Position
xyplot.SetXValuesToArcLength()
xyplot.SetNumberOfXLabels(6)
xyplot.SetTitle("Pressure vs. Arc Length (Zoomed View)")
xyplot.SetXTitle("")
xyplot.SetYTitle("P")
xyplot.SetXRange(.1, .35)
xyplot.SetYRange(.2, .4)
xyplot.GetProperty().SetColor(0, 0, 0)
xyplot.GetProperty().SetLineWidth(2)
# Set text prop color (same color for backward compat with test)
예제 #23
0
array1.InsertNextValue(2)

array2 = vtk.vtkFloatArray()
array2.InsertNextValue(3)
array2.InsertNextValue(0)
array2.InsertNextValue(2)
array2.InsertNextValue(1)

unstructuredGrid.GetPointData().SetScalars(array1)
unstructuredGrid2 = vtk.vtkUnstructuredGrid()
unstructuredGrid2.CopyStructure(unstructuredGrid)
unstructuredGrid2.GetPointData().SetScalars(array2)
#polyData = vtk.vtkPolyData()
#polyData.GetPointData().SetScalars(array1)

plotActor = vtk.vtkXYPlotActor()
plotActor.SetTitle("Ma Sticazzi?")
#plotActor.AddDataSetInput(polyData)
plotActor.AddDataSetInput(unstructuredGrid)
plotActor.AddDataSetInput(unstructuredGrid2)
plotWidget = vtk.vtkXYPlotWidget()
#plotWidget.SetOutlineColor(0.9300, 0.5700, 0.1300)
plotWidget.SetXYPlotActor(plotActor)
plotWidget.SetInteractor(renderWindowInteractor)
#plotWidget.SetViewport(0.2, 0.2, 0.4, 0.4)
plotWidget.SetEnabled(True)
#plotWidget.InteractiveOn()

#plotWidget = vtk.QVTKWidget() 
#view = vtk.vtkContextView()
#view.SetInteractor(renderWindowInteractor)