SpiderPlot

VTKExamples/Python/Plotting/SpiderPlot


Description

Translated from the c plus plus test

Other Languages

See (Cxx)

Code

SpiderPlot.py

#!/usr/bin/env python

import random

import vtk


def main():
    numTuples = 12

    bitter = vtk.vtkFloatArray()
    bitter.SetNumberOfTuples(numTuples)

    crispy = vtk.vtkFloatArray()
    crispy.SetNumberOfTuples(numTuples)

    crunchy = vtk.vtkFloatArray()
    crunchy.SetNumberOfTuples(numTuples)

    salty = vtk.vtkFloatArray()
    salty.SetNumberOfTuples(numTuples)

    oily = vtk.vtkFloatArray()
    oily.SetNumberOfTuples(numTuples)

    for i in range(numTuples):
        bitter.SetTuple1(i, random.randint(1, 10))
        crispy.SetTuple1(i, random.randint(-1, 1))
        crunchy.SetTuple1(i, random.randint(1, 100))
        salty.SetTuple1(i, random.randint(0, 10))
        oily.SetTuple1(i, random.randint(5, 25))

    dobj = vtk.vtkDataObject()
    dobj.GetFieldData().AddArray(bitter)
    dobj.GetFieldData().AddArray(crispy)
    dobj.GetFieldData().AddArray(crunchy)
    dobj.GetFieldData().AddArray(salty)
    dobj.GetFieldData().AddArray(oily)

    actor = vtk.vtkSpiderPlotActor()
    actor.SetInputData(dobj)
    actor.SetTitle("spider plot")
    actor.SetIndependentVariablesToColumns()
    actor.GetPositionCoordinate().SetValue(0.05, 0.1, 0.0)
    actor.GetPosition2Coordinate().SetValue(0.95, 0.85, 0.0)
    actor.GetProperty().SetColor(1, 0, 0)

    actor.SetAxisLabel(0, "Bitter")
    actor.SetAxisRange(0, 1, 10)

    actor.SetAxisLabel(1, "Crispy")
    actor.SetAxisRange(1, -1, 1)

    actor.SetAxisLabel(2, "Crunchy")
    actor.SetAxisRange(2, 1, 100)

    actor.SetAxisLabel(3, "Salty")
    actor.SetAxisRange(3, 0, 10)

    actor.SetAxisLabel(4, "Oily")
    actor.SetAxisRange(4, 5, 25)
    actor.GetLegendActor().SetNumberOfEntries(numTuples)

    for i in range(numTuples):
        actor.SetPlotColor(i, random.random(), random.random(), random.random())

    actor.LegendVisibilityOn()

    #  // Set text colors (same as actor for backward compat with test)
    #  actor.GetTitleTextProperty().SetColor(1, 1, 0)
    #  actor.GetLabelTextProperty().SetColor(1, 0, 0)

    ren1 = vtk.vtkRenderer()
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren1)
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)
    ren1.AddActor(actor)
    ren1.SetBackground(0, 0, 0)
    renWin.SetSize(500, 500)

    iren.Initialize()
    renWin.Render()
    iren.Start()


if __name__ == '__main__':
    main()