CreateColorSeriesDemo
vtk-examples/Python/Visualization/CreateColorSeriesDemo
Description¶
This example demonstrates how to create a custom vtkColorSeries. The examples produces a vtkLookupTable explicitly. The vtkLookupTable is populated with colors from the vtkColorSeries using GetColorRepeating, since the size of the vtkLookupTable may be larger than the colors in the vtkColorSeries.
A vtkPlaneSource generates the geometry. The vtkCellData is populated with increasing integers starting at 1.
Ten different color series are generated from VTK color names in vtkNamedColors. The first argument of the example is one of "Blue", "Brown", "Red", "Orange", "White", "Grey", "Magenta", "Cyan", "Yellow" and "Green".
The colors are added from left to right, row by row, from the bottom left-hand corner of the table.
Other languages
See (Cxx)
Question
If you have a question about this example, please use the VTK Discourse Forum
Code¶
CreateColorSeriesDemo.py
#!/usr/bin/env python
# noinspection PyUnresolvedReferences
import vtkmodules.vtkInteractionStyle
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import (
vtkColorSeries,
vtkNamedColors
)
from vtkmodules.vtkCommonCore import (
vtkFloatArray,
vtkLookupTable
)
from vtkmodules.vtkFiltersSources import vtkPlaneSource
from vtkmodules.vtkRenderingCore import (
vtkActor,
vtkPolyDataMapper,
vtkRenderWindow,
vtkRenderWindowInteractor,
vtkRenderer
)
def get_program_parameters():
import argparse
description = 'how to create a custom vtkColorSeries.'
epilogue = '''
A vtkLookupTable is explicitly produced, it is populated with colors from the vtkColorSeries
using GetColorRepeating, since the size of the vtkLookupTable may be larger than the
colors in the vtkColorSeries.
Ten different color series are generated from VTK color names in vtkNamedColors.
Choose from one of: Blue, Brown, Red, Orange, White, Grey, Magenta, Cyan, Yellow and Green.
'''
parser = argparse.ArgumentParser(description=description, epilog=epilogue,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('seriesName', default='Red', nargs='?',
help='The name of the color series to use (default is Red).')
args = parser.parse_args()
return args.seriesName
def CreateLookupTableVTKBlue(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKBlueColors')
myColors.AddColor(nc.GetColor3ub('alice_blue'))
myColors.AddColor(nc.GetColor3ub('blue'))
myColors.AddColor(nc.GetColor3ub('blue_light'))
myColors.AddColor(nc.GetColor3ub('blue_medium'))
myColors.AddColor(nc.GetColor3ub('cadet'))
myColors.AddColor(nc.GetColor3ub('cobalt'))
myColors.AddColor(nc.GetColor3ub('cornflower'))
myColors.AddColor(nc.GetColor3ub('cerulean'))
myColors.AddColor(nc.GetColor3ub('dodger_blue'))
myColors.AddColor(nc.GetColor3ub('indigo'))
myColors.AddColor(nc.GetColor3ub('manganese_blue'))
myColors.AddColor(nc.GetColor3ub('midnight_blue'))
myColors.AddColor(nc.GetColor3ub('navy'))
myColors.AddColor(nc.GetColor3ub('peacock'))
myColors.AddColor(nc.GetColor3ub('powder_blue'))
myColors.AddColor(nc.GetColor3ub('royal_blue'))
myColors.AddColor(nc.GetColor3ub('slate_blue'))
myColors.AddColor(nc.GetColor3ub('slate_blue_dark'))
myColors.AddColor(nc.GetColor3ub('slate_blue_light'))
myColors.AddColor(nc.GetColor3ub('slate_blue_medium'))
myColors.AddColor(nc.GetColor3ub('sky_blue'))
myColors.AddColor(nc.GetColor3ub('sky_blue_deep'))
myColors.AddColor(nc.GetColor3ub('sky_blue_light'))
myColors.AddColor(nc.GetColor3ub('steel_blue'))
myColors.AddColor(nc.GetColor3ub('steel_blue_light'))
myColors.AddColor(nc.GetColor3ub('turquoise_blue'))
myColors.AddColor(nc.GetColor3ub('ultramarine'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKBrown(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKBrownColors')
myColors.AddColor(nc.GetColor3ub('beige'))
myColors.AddColor(nc.GetColor3ub('brown'))
myColors.AddColor(nc.GetColor3ub('brown_madder'))
myColors.AddColor(nc.GetColor3ub('brown_ochre'))
myColors.AddColor(nc.GetColor3ub('burlywood'))
myColors.AddColor(nc.GetColor3ub('burnt_sienna'))
myColors.AddColor(nc.GetColor3ub('burnt_umber'))
myColors.AddColor(nc.GetColor3ub('chocolate'))
myColors.AddColor(nc.GetColor3ub('deep_ochre'))
myColors.AddColor(nc.GetColor3ub('flesh'))
myColors.AddColor(nc.GetColor3ub('flesh_ochre'))
myColors.AddColor(nc.GetColor3ub('gold_ochre'))
myColors.AddColor(nc.GetColor3ub('greenish_umber'))
myColors.AddColor(nc.GetColor3ub('khaki'))
myColors.AddColor(nc.GetColor3ub('khaki_dark'))
myColors.AddColor(nc.GetColor3ub('light_beige'))
myColors.AddColor(nc.GetColor3ub('peru'))
myColors.AddColor(nc.GetColor3ub('rosy_brown'))
myColors.AddColor(nc.GetColor3ub('raw_sienna'))
myColors.AddColor(nc.GetColor3ub('raw_umber'))
myColors.AddColor(nc.GetColor3ub('sepia'))
myColors.AddColor(nc.GetColor3ub('sienna'))
myColors.AddColor(nc.GetColor3ub('saddle_brown'))
myColors.AddColor(nc.GetColor3ub('sandy_brown'))
myColors.AddColor(nc.GetColor3ub('tan'))
myColors.AddColor(nc.GetColor3ub('van_dyke_brown'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKRed(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKRedColors')
myColors.AddColor(nc.GetColor3ub('alizarin_crimson'))
myColors.AddColor(nc.GetColor3ub('brick'))
myColors.AddColor(nc.GetColor3ub('cadmium_red_deep'))
myColors.AddColor(nc.GetColor3ub('coral'))
myColors.AddColor(nc.GetColor3ub('coral_light'))
myColors.AddColor(nc.GetColor3ub('deep_pink'))
myColors.AddColor(nc.GetColor3ub('english_red'))
myColors.AddColor(nc.GetColor3ub('firebrick'))
myColors.AddColor(nc.GetColor3ub('geranium_lake'))
myColors.AddColor(nc.GetColor3ub('hot_pink'))
myColors.AddColor(nc.GetColor3ub('indian_red'))
myColors.AddColor(nc.GetColor3ub('light_salmon'))
myColors.AddColor(nc.GetColor3ub('madder_lake_deep'))
myColors.AddColor(nc.GetColor3ub('maroon'))
myColors.AddColor(nc.GetColor3ub('pink'))
myColors.AddColor(nc.GetColor3ub('pink_light'))
myColors.AddColor(nc.GetColor3ub('raspberry'))
myColors.AddColor(nc.GetColor3ub('red'))
myColors.AddColor(nc.GetColor3ub('rose_madder'))
myColors.AddColor(nc.GetColor3ub('salmon'))
myColors.AddColor(nc.GetColor3ub('tomato'))
myColors.AddColor(nc.GetColor3ub('venetian_red'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKOrange(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKOrangeColors')
myColors.AddColor(nc.GetColor3ub('cadmium_orange'))
myColors.AddColor(nc.GetColor3ub('cadmium_red_light'))
myColors.AddColor(nc.GetColor3ub('carrot'))
myColors.AddColor(nc.GetColor3ub('dark_orange'))
myColors.AddColor(nc.GetColor3ub('mars_orange'))
myColors.AddColor(nc.GetColor3ub('mars_yellow'))
myColors.AddColor(nc.GetColor3ub('orange'))
myColors.AddColor(nc.GetColor3ub('orange_red'))
myColors.AddColor(nc.GetColor3ub('yellow_ochre'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKWhite(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKWhiteColors')
myColors.AddColor(nc.GetColor3ub('antique_white'))
myColors.AddColor(nc.GetColor3ub('azure'))
myColors.AddColor(nc.GetColor3ub('bisque'))
myColors.AddColor(nc.GetColor3ub('blanched_almond'))
myColors.AddColor(nc.GetColor3ub('cornsilk'))
myColors.AddColor(nc.GetColor3ub('eggshell'))
myColors.AddColor(nc.GetColor3ub('floral_white'))
myColors.AddColor(nc.GetColor3ub('gainsboro'))
myColors.AddColor(nc.GetColor3ub('ghost_white'))
myColors.AddColor(nc.GetColor3ub('honeydew'))
myColors.AddColor(nc.GetColor3ub('ivory'))
myColors.AddColor(nc.GetColor3ub('lavender'))
myColors.AddColor(nc.GetColor3ub('lavender_blush'))
myColors.AddColor(nc.GetColor3ub('lemon_chiffon'))
myColors.AddColor(nc.GetColor3ub('linen'))
myColors.AddColor(nc.GetColor3ub('mint_cream'))
myColors.AddColor(nc.GetColor3ub('misty_rose'))
myColors.AddColor(nc.GetColor3ub('moccasin'))
myColors.AddColor(nc.GetColor3ub('navajo_white'))
myColors.AddColor(nc.GetColor3ub('old_lace'))
myColors.AddColor(nc.GetColor3ub('papaya_whip'))
myColors.AddColor(nc.GetColor3ub('peach_puff'))
myColors.AddColor(nc.GetColor3ub('seashell'))
myColors.AddColor(nc.GetColor3ub('snow'))
myColors.AddColor(nc.GetColor3ub('thistle'))
myColors.AddColor(nc.GetColor3ub('titanium_white'))
myColors.AddColor(nc.GetColor3ub('wheat'))
myColors.AddColor(nc.GetColor3ub('white'))
myColors.AddColor(nc.GetColor3ub('white_smoke'))
myColors.AddColor(nc.GetColor3ub('zinc_white'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKGrey(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKGreyColors')
myColors.AddColor(nc.GetColor3ub('cold_grey'))
myColors.AddColor(nc.GetColor3ub('dim_grey'))
myColors.AddColor(nc.GetColor3ub('grey'))
myColors.AddColor(nc.GetColor3ub('light_grey'))
myColors.AddColor(nc.GetColor3ub('slate_grey'))
myColors.AddColor(nc.GetColor3ub('slate_grey_dark'))
myColors.AddColor(nc.GetColor3ub('slate_grey_light'))
myColors.AddColor(nc.GetColor3ub('warm_grey'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKMagenta(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKMagentaColors')
myColors.AddColor(nc.GetColor3ub('blue_violet'))
myColors.AddColor(nc.GetColor3ub('cobalt_violet_deep'))
myColors.AddColor(nc.GetColor3ub('magenta'))
myColors.AddColor(nc.GetColor3ub('orchid'))
myColors.AddColor(nc.GetColor3ub('orchid_dark'))
myColors.AddColor(nc.GetColor3ub('orchid_medium'))
myColors.AddColor(nc.GetColor3ub('permanent_red_violet'))
myColors.AddColor(nc.GetColor3ub('plum'))
myColors.AddColor(nc.GetColor3ub('purple'))
myColors.AddColor(nc.GetColor3ub('purple_medium'))
myColors.AddColor(nc.GetColor3ub('ultramarine_violet'))
myColors.AddColor(nc.GetColor3ub('violet'))
myColors.AddColor(nc.GetColor3ub('violet_dark'))
myColors.AddColor(nc.GetColor3ub('violet_red'))
myColors.AddColor(nc.GetColor3ub('violet_red_medium'))
myColors.AddColor(nc.GetColor3ub('violet_red_pale'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKCyan(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKCyanColors')
myColors.AddColor(nc.GetColor3ub('aquamarine'))
myColors.AddColor(nc.GetColor3ub('aquamarine_medium'))
myColors.AddColor(nc.GetColor3ub('cyan'))
myColors.AddColor(nc.GetColor3ub('cyan_white'))
myColors.AddColor(nc.GetColor3ub('turquoise'))
myColors.AddColor(nc.GetColor3ub('turquoise_dark'))
myColors.AddColor(nc.GetColor3ub('turquoise_medium'))
myColors.AddColor(nc.GetColor3ub('turquoise_pale'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKYellow(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKYellowColors')
myColors.AddColor(nc.GetColor3ub('aureoline_yellow'))
myColors.AddColor(nc.GetColor3ub('banana'))
myColors.AddColor(nc.GetColor3ub('cadmium_lemon'))
myColors.AddColor(nc.GetColor3ub('cadmium_yellow'))
myColors.AddColor(nc.GetColor3ub('cadmium_yellow_light'))
myColors.AddColor(nc.GetColor3ub('gold'))
myColors.AddColor(nc.GetColor3ub('goldenrod'))
myColors.AddColor(nc.GetColor3ub('goldenrod_dark'))
myColors.AddColor(nc.GetColor3ub('goldenrod_light'))
myColors.AddColor(nc.GetColor3ub('goldenrod_pale'))
myColors.AddColor(nc.GetColor3ub('light_goldenrod'))
myColors.AddColor(nc.GetColor3ub('melon'))
myColors.AddColor(nc.GetColor3ub('naples_yellow_deep'))
myColors.AddColor(nc.GetColor3ub('yellow'))
myColors.AddColor(nc.GetColor3ub('yellow_light'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def CreateLookupTableVTKGreen(size):
nc = vtkNamedColors()
myColors = vtkColorSeries()
myColors.SetColorSchemeByName('VTKGreenColors')
myColors.AddColor(nc.GetColor3ub('chartreuse'))
myColors.AddColor(nc.GetColor3ub('chrome_oxide_green'))
myColors.AddColor(nc.GetColor3ub('cinnabar_green'))
myColors.AddColor(nc.GetColor3ub('cobalt_green'))
myColors.AddColor(nc.GetColor3ub('emerald_green'))
myColors.AddColor(nc.GetColor3ub('forest_green'))
myColors.AddColor(nc.GetColor3ub('green'))
myColors.AddColor(nc.GetColor3ub('green_dark'))
myColors.AddColor(nc.GetColor3ub('green_pale'))
myColors.AddColor(nc.GetColor3ub('green_yellow'))
myColors.AddColor(nc.GetColor3ub('lawn_green'))
myColors.AddColor(nc.GetColor3ub('lime_green'))
myColors.AddColor(nc.GetColor3ub('mint'))
myColors.AddColor(nc.GetColor3ub('olive'))
myColors.AddColor(nc.GetColor3ub('olive_drab'))
myColors.AddColor(nc.GetColor3ub('olive_green_dark'))
myColors.AddColor(nc.GetColor3ub('permanent_green'))
myColors.AddColor(nc.GetColor3ub('sap_green'))
myColors.AddColor(nc.GetColor3ub('sea_green'))
myColors.AddColor(nc.GetColor3ub('sea_green_dark'))
myColors.AddColor(nc.GetColor3ub('sea_green_medium'))
myColors.AddColor(nc.GetColor3ub('sea_green_light'))
myColors.AddColor(nc.GetColor3ub('spring_green'))
myColors.AddColor(nc.GetColor3ub('spring_green_medium'))
myColors.AddColor(nc.GetColor3ub('terre_verte'))
myColors.AddColor(nc.GetColor3ub('viridian_light'))
myColors.AddColor(nc.GetColor3ub('yellow_green'))
numberOfColors = myColors.GetNumberOfColors()
print('Number of colors:', numberOfColors)
lut = vtkLookupTable()
if size == 0:
lut.SetNumberOfTableValues(numberOfColors)
else:
lut.SetNumberOfTableValues(size)
lut.SetTableRange(0, lut.GetNumberOfTableValues())
for i in range(lut.GetNumberOfTableValues()):
color = myColors.GetColorRepeating(i)
c = [color.GetRed(), color.GetGreen(), color.GetBlue(), 255]
lut.SetTableValue(i, [x / 255.0 for x in c])
return lut
def main():
seriesName = get_program_parameters()
seriesName = seriesName.capitalize()
available_color_series = ['Blue', 'Brown', 'Red', 'Orange', 'White', 'Grey', 'Magenta', 'Cyan', 'Yellow', 'Green']
if seriesName not in available_color_series:
print('Available color maps are:', ", ".join(available_color_series))
return
colors = vtkNamedColors()
# Provide some geometry.
xResolution = 6
yResolution = 6
aPlane = vtkPlaneSource()
aPlane.SetXResolution(xResolution)
aPlane.SetYResolution(yResolution)
size = xResolution * yResolution + 1
# Create cell data.
cellData = vtkFloatArray()
for i in range(0, xResolution * yResolution):
cellData.InsertNextValue(i)
aPlane.Update() # Force an update so we can set cell data.
aPlane.GetOutput().GetCellData().SetScalars(cellData)
# Get the lookup table.
lut = eval('CreateLookupTableVTK' + seriesName + '(size)')
# Set up the actor and mapper.
mapper = vtkPolyDataMapper()
mapper.SetLookupTable(lut)
mapper.SetInputConnection(aPlane.GetOutputPort())
mapper.SetScalarModeToUseCellData()
mapper.SetScalarRange(0, size)
actor = vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().EdgeVisibilityOn()
# Setup render window, renderer, and interactor.
renderer = vtkRenderer()
renderWindow = vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindow.SetWindowName('CreateColorSeriesDemo')
renderWindowInteractor = vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)
renderer.AddActor(actor)
renderer.SetBackground(colors.GetColor3d('SlateGray'))
renderWindow.Render()
renderWindowInteractor.Start()
if __name__ == '__main__':
main()