[vtkusers] Change Contour Colors
Andrew Maclean
andrew.amaclean at gmail.com
Sun Jul 8 05:30:06 EDT 2012
I am glad you found the information useful!
Regards
Andrew
Sent from an Android tablet.
On Jul 8, 2012 3:22 PM, "Derek Gaston" <friedmud at gmail.com> wrote:
> Just in case someone else hits this thread later... all I needed for a
> blue-to-red rainbow lookuptable was:
>
> lut = vtk.vtkLookupTable()
> lut.SetHueRange(0.667, 0.0)
> lut.SetNumberOfColors(256)
> lut.Build()
>
> Now... since Andrew pointed me to that great paper by Ken let's discuss
> colormaps a bit! Firstly, that was a great paper... definitely well done.
> Unfortunately, I can't agree completely with the conclusions.
>
> If every person on earth was a scientist or engineer... then we should all
> take Ken's advice and use Blue-to-Red Diverging for our colormaps.
> Unfortunately, that's not the case! So while a diverging colormap might
> convey detail better to a scientist or engineer who is familiar with the
> domain... many times visualizations are shown to people who have no real
> background on the material... and in those cases they want to see
> _color_... and I don't just mean a bit of red and a bit of blue with some
> grey in between... they want to see a LOT of color.
>
> The people I'm talking about here are the program managers and senators
> and bosses and even customers.... the people we depend on to give us money
> so we can continue to do science! When those people are in the room I want
> to catch their eye with over saturated rainbows of color... even if a bit
> of detail is lost in the green areas ;-)
>
> Only after catching their eye can I even attempt to explain the science
> behind what they're seeing and convince them to give me more money to study
> it further. If they're turned off by boring colors from the start I might
> never get the chance....
>
> Just my 2 cents ;-)
>
> Derek
>
> On Mon, Jul 2, 2012 at 4:37 PM, Andrew Maclean <andrew.amaclean at gmail.com>wrote:
>
>> Hi Derek,
>> You might like to look at:
>> http://www.vtk.org/Wiki/VTK/Examples/Python/CurvaturesDemo
>> This shows you how to use a diverging colour space very nicely!
>> To choose other colour spaces and to extend this look at the C++ code
>> referred to in the document
>> http://www.cs.unm.edu/~kmorel/documents/ColorMaps/ColorMapsExpanded.pdf by Kenneth Moreland,
>> this is a very good article.
>>
>> Regards
>> Andrew
>>
>>
>> ---------- Forwarded message ----------
>>> From: Derek Gaston <friedmud at gmail.com>
>>> To: vtkusers at vtk.org
>>> Cc:
>>> Date: Sun, 1 Jul 2012 15:15:53 -0600
>>> Subject: [vtkusers] Change Contour Colors
>>> Hello all.
>>>
>>> I'm writing a bit of custom Python with Qt and VTK to add some
>>> visualization to a small PyQt GUI we have.
>>>
>>> I need to read ExodusII and just do some simple contour plotting of
>>> what's in there with a color scale/legend (I also draw the edges so you can
>>> see the mesh). I have it basically working at this point (although
>>> hardcoded to a specific variable name... but I'll change that later). But
>>> I'm hung up at trying to change the colors of the contours.
>>>
>>> All I want is very simple. Right now it generates from Red to Blue (low
>>> to high)... all I need is for it to go from Blue to Red (BTW - why the heck
>>> is Red to Blue the default... shouldn't Blue to Red be the default? I
>>> think most people associate Red with a high color... especially if you are
>>> plotting temperature... but that's beside the point).
>>>
>>> I've looked at vtkLookupTable and vtkColorTransferFunction... but I
>>> can't seem to come up with the right magic. Basically, what I want is just
>>> the simple Blue to Red HSV color bar that you can get in Paraview by
>>> choosing that preset. Any help would be awesome!
>>>
>>> Here is my current code (it's in a Python class that inherits from
>>> QWidget and uses a QVTKWidget2 that is initialized elsewhere):
>>>
>>>
>>>
>>> self.file_name = file_name
>>> reader = vtk.vtkExodusIIReader()
>>> reader.SetFileName(self.file_name)
>>> reader.UpdateInformation()
>>> reader.SetAllArrayStatus(vtk.vtkExodusIIReader.NODAL, 1)
>>> reader.SetAllArrayStatus(vtk.vtkExodusIIReader.NODAL_TEMPORAL, 1)
>>> reader.SetTimeStep(1)
>>> reader.Update()
>>>
>>> cdp = vtk.vtkCompositeDataPipeline()
>>> vtk.vtkAlgorithm.SetDefaultExecutivePrototype(cdp)
>>>
>>> geom = vtk.vtkCompositeDataGeometryFilter()
>>> geom.SetInputConnection(0,reader.GetOutputPort(0));
>>> geom.Update()
>>>
>>> data = geom.GetOutput()
>>> data.GetPointData().SetScalars(data.GetPointData().GetArray("u"))
>>> mapper = vtk.vtkPolyDataMapper()
>>> mapper.SetInput(data)
>>> mapper.ScalarVisibilityOn()
>>> mapper.SetColorModeToMapScalars()
>>> mapper.SetColorMode(2)
>>> mapper.SetScalarRange(0,1.0)
>>>
>>> actor = vtk.vtkActor()
>>> actor.SetMapper(mapper)
>>> self.renderer.AddActor(actor)
>>>
>>> edge_geom = vtk.vtkCompositeDataGeometryFilter()
>>> edge_geom.SetInputConnection(0,reader.GetOutputPort(0));
>>> edge_geom.Update()
>>>
>>> edges = vtk.vtkExtractEdges()
>>> edges.SetInput(edge_geom.GetOutput())
>>> edge_mapper = vtk.vtkPolyDataMapper()
>>> edge_mapper.SetInput(edges.GetOutput())
>>>
>>> edge_actor = vtk.vtkActor()
>>> edge_actor.SetMapper(edge_mapper)
>>> edge_actor.GetProperty().SetColor(0,0,0)
>>>
>>> self.renderer.AddActor(edge_actor)
>>>
>>> scalar_bar = vtk.vtkScalarBarActor()
>>> scalar_bar.SetLookupTable(mapper.GetLookupTable())
>>> scalar_bar.SetTitle("u")
>>> scalar_bar.SetNumberOfLabels(4)
>>>
>>> self.renderer.AddActor2D(scalar_bar)
>>>
>>> # Avoid z-buffer fighting
>>> vtk.vtkPolyDataMapper().SetResolveCoincidentTopologyToPolygonOffset()
>>>
>>>
>>> self.renderer.ResetCamera()
>>> self.vtkwidget.updateGL()
>>>
>>>
>>
>> --
>> ___________________________________________
>> Andrew J. P. Maclean
>>
>> ___________________________________________
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120708/55463d14/attachment.htm>
More information about the vtkusers
mailing list