Skip to content


# ScatterPlot

VTKEx/Python/Plotting/ScatterPlot

Other languages

See (Cxx)

Question

If you have a simple question about this example contact us at VTKExProject If your question is more complex and may require extended discussion, please use the VTK Discourse Forum

### Code

ScatterPlot.py

    #!/usr/bin/env python

    from __future__ import division

    import math

    import vtk

    def main():
        view = vtk.vtkContextView()
        view.GetRenderer().SetBackground(1.0, 1.0, 1.0)
        view.GetRenderWindow().SetSize(400, 300)

        chart = vtk.vtkChartXY()
        view.GetScene().AddItem(chart)
        chart.SetShowLegend(True)

        table = vtk.vtkTable()

        arrX = vtk.vtkFloatArray()
        arrX.SetName('X Axis')

        arrC = vtk.vtkFloatArray()
        arrC.SetName('Cosine')

        arrS = vtk.vtkFloatArray()
        arrS.SetName('Sine')

        arrT = vtk.vtkFloatArray()
        arrT.SetName('Sine-Cosine')

        table.AddColumn(arrC)
        table.AddColumn(arrS)
        table.AddColumn(arrX)
        table.AddColumn(arrT)

        numPoints = 40

        inc = 7.5 / (numPoints - 1)
        table.SetNumberOfRows(numPoints)
        for i in range(numPoints):
            table.SetValue(i, 0, i * inc)
            table.SetValue(i, 1, math.cos(i * inc))
            table.SetValue(i, 2, math.sin(i * inc))
            table.SetValue(i, 3, math.sin(i * inc) - math.cos(i * inc))

        points = chart.AddPlot(vtk.vtkChart.POINTS)
        points.SetInputData(table, 0, 1)
        points.SetColor(0, 0, 0, 255)
        points.SetWidth(1.0)
        points.SetMarkerStyle(vtk.vtkPlotPoints.CROSS)

        points = chart.AddPlot(vtk.vtkChart.POINTS)
        points.SetInputData(table, 0, 2)
        points.SetColor(0, 0, 0, 255)
        points.SetWidth(1.0)
        points.SetMarkerStyle(vtk.vtkPlotPoints.PLUS)

        points = chart.AddPlot(vtk.vtkChart.POINTS)
        points.SetInputData(table, 0, 3)
        points.SetColor(0, 0, 255, 255)
        points.SetWidth(1.0)
        points.SetMarkerStyle(vtk.vtkPlotPoints.CIRCLE)

        view.GetRenderWindow().SetMultiSamples(0)
        view.GetInteractor().Initialize()
        view.GetInteractor().Start()

    if __name__ == '__main__':
        main()