[vtkusers] Parallel coordinates Extraction
Eric E. Monson
emonson at cs.duke.edu
Tue Mar 29 19:40:09 EDT 2011
Hey Darshan,
How recent is your version of VTK? Marcus checked in a bug fix a week or two ago that may fix this. If you're using a very recent version then maybe you can post your test code and we can take a look.
-Eric
On Mar 29, 2011, at 7:24 PM, Darshan Pai wrote:
> Working on it some more I see some more problems .
> I have 5 rows ans select the 5th row for color which is the category value 0 and 1 .
> I make a lookup table with 2 values having green and blue . I select the range from 0 -1 .
> So ideally the plot should show the category value 0 with green and 1 with blue .
>
> Instead I see that some of the lines of category zero are blue while some lines with category 1 are transparent . Also some lines change color in between . I don't understand what is wrong here .
>
> added snapshot
>
>
> On Mon, Mar 28, 2011 at 2:50 PM, Darshan Pai <darshanpai at gmail.com> wrote:
> Yes that was the problem . Got it working . Thanks
>
> Darshan
>
>
> On Mon, Mar 28, 2011 at 2:41 PM, Eric E. Monson <emonson at cs.duke.edu> wrote:
> Those methods aren't defined in vtkPlot, but in vtkPlotPoints and vtkPlotParallelCoordinates separately. You'll have to cast the GetPlot() to the correct type.
>
> -E
>
> On Mar 28, 2011, at 2:39 PM, Darshan Pai wrote:
>
>> .\PC.cpp(77) : error C2039: 'SetScalarVisibility' : is not a member of 'vtkPlot'
>> 1> C:\vtkcvs\VTK\Charts\vtkPlot.h(42) : see declaration of 'vtkPlot'
>> 1>..\PC.cpp(78) : error C2039: 'SetLookupTable' : is not a member of 'vtkPlot'
>> 1> C:\vtkcvs\VTK\Charts\vtkPlot.h(42) : see declaration of 'vtkPlot'
>> 1>..\PC.cpp(79) : error C2039: 'SelectColorArray' : is not a member of 'vtkPlot'
>> 1> C:\vtkcvs\VTK\Charts\vtkPlot.h(42) : see declaration of 'vtkPlot'
>>
>> Not sure if I am missing an include
>>
>> On Mon, Mar 28, 2011 at 2:22 PM, Eric E. Monson <emonson at cs.duke.edu> wrote:
>> That's strange since the Python is just a wrapper around the C++...
>>
>> -E
>>
>> On Mar 28, 2011, at 2:15 PM, Darshan Pai wrote:
>>
>>> Thanks I get it .
>>>
>>> BTW I cannot convert it for C++ . Is there a way to port it to C++. Esp ScalarVisibility and SelectColorArray is not defined in C++
>>>
>>> On Mon, Mar 28, 2011 at 9:44 AM, Eric E. Monson <emonson at cs.duke.edu> wrote:
>>> Hey Darshan,
>>>
>>> I don't remember if there's a way to color the lines in the older parallel coordinates view (and don't have time to look right now), but in the new Charts classes you can color plots by another array. This will be in 5.8 and it's been in git master for a while, but it wasn't in 5.6.
>>>
>>> (There is a little bug lingering in the parallel coordinates charts plot which causes it to use the plot's pen opacity instead of the opacity of the lookup table you've passed it, but I think Marcus is trying to get around to checking in a fix sometime soon.)
>>>
>>> Here's an example that uses categorical colors with the parallel coordinates:
>>>
>>> Talk to you later,
>>> -Eric
>>>
>>> · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
>>> Eric E Monson
>>> Duke Visualization Technology Group
>>>
>>> <ParallelCoordinatesCatsColors.png>
>>>
>>>
>>>
>>> # Translated to Python from [VTK]/Charts/Testing/Cxx/TestPCPlot.cxx
>>>
>>> import vtk
>>> import math
>>>
>>> # Set up a 2D scene, add an XY chart to it
>>> view = vtk.vtkContextView()
>>> view.GetRenderer().SetBackground(1.0, 1.0, 1.0)
>>> view.GetRenderWindow().SetSize(600,300)
>>>
>>> chart = vtk.vtkChartParallelCoordinates()
>>> view.GetScene().AddItem(chart)
>>>
>>> # Test charting with a few more points...
>>> numPoints = 100
>>> numCats = 8
>>> inc = 7.5 / (numPoints-1)
>>>
>>> # Create arrays that will end up as table columns
>>> arrX = vtk.vtkFloatArray()
>>> arrX.SetName("XAxis")
>>> arrX.SetNumberOfComponents(1)
>>> arrX.SetNumberOfTuples(numPoints)
>>> arrC = vtk.vtkFloatArray()
>>> arrC.SetName("Cosine")
>>> arrC.SetNumberOfComponents(1)
>>> arrC.SetNumberOfTuples(numPoints)
>>> arrS = vtk.vtkFloatArray()
>>> arrS.SetName("Sine")
>>> arrS.SetNumberOfComponents(1)
>>> arrS.SetNumberOfTuples(numPoints)
>>>
>>> arrCat = vtk.vtkIntArray()
>>> arrCat.SetName("Category_ids")
>>> arrCat.SetNumberOfComponents(1)
>>> arrCat.SetNumberOfTuples(numPoints)
>>>
>>> # For some reason table.SetValue() is not wrapped
>>> # so need to build arrays and then add as columns
>>> # Would be more elegant to use numpy, but wanted to keep it out for now...
>>> for i in range(numPoints):
>>> arrX.SetTuple1(i, i * inc)
>>> arrC.SetTuple1(i, math.cos(i * inc) + 0.0)
>>> arrS.SetTuple1(i, math.sin(i * inc) + 0.0)
>>> arrCat.SetTuple1(i, int(float(numCats)*float(i)/float(numPoints)))
>>>
>>> # Create a table with some points in it...
>>> table = vtk.vtkTable()
>>> table.AddColumn(arrX)
>>> table.AddColumn(arrC)
>>> table.AddColumn(arrS)
>>> table.AddColumn(arrCat)
>>>
>>> cl = []
>>> cl.append([float(cc)/255.0 for cc in [27, 158, 119]]) # Colorbrewer Dark2
>>> cl.append([float(cc)/255.0 for cc in [217, 95, 2]])
>>> cl.append([float(cc)/255.0 for cc in [117, 112, 179]])
>>> cl.append([float(cc)/255.0 for cc in [231, 41, 138]])
>>> cl.append([float(cc)/255.0 for cc in [102, 166, 30]])
>>> cl.append([float(cc)/255.0 for cc in [230, 171, 2]])
>>> cl.append([float(cc)/255.0 for cc in [166, 118, 29]])
>>> cl.append([float(cc)/255.0 for cc in [102, 102, 102]])
>>>
>>> lut = vtk.vtkLookupTable()
>>> lutNum = len(cl)
>>> lut.SetNumberOfTableValues(lutNum)
>>> lut.Build()
>>> for ii,cc in enumerate(cl):
>>> lut.SetTableValue(ii,cc[0],cc[1],cc[2],1.0)
>>> lut.SetRange(0,numCats-1)
>>> lut.SetAlpha(1.0)
>>>
>>> chart.GetPlot(0).SetInput(table)
>>> chart.GetPlot(0).SetScalarVisibility(1)
>>> chart.GetPlot(0).SetLookupTable(lut)
>>> chart.GetPlot(0).SelectColorArray("Category_ids")
>>>
>>> chart.GetPlot(0).GetPen().SetOpacityF(0.8)
>>>
>>> view.GetRenderWindow().SetMultiSamples(0)
>>> view.GetRenderWindow().Render()
>>>
>>> view.GetInteractor().Start()
>>>
>>>
>>>
>>> On Mar 26, 2011, at 1:15 AM, Darshan Pai wrote:
>>>
>>>> Oh ok , so i guess it somehow picks up the internal arrays from the RTanalyticsSOurce.
>>>> Is there anyway to have some of the lines as different colors ? I mean like categorical data.
>>>> There is also a Parallel Coordinates in the Charts too .
>>>>
>>>> On Fri, Mar 25, 2011 at 10:38 PM, David Doria <daviddoria at gmail.com> wrote:
>>>> On Fri, Mar 25, 2011 at 8:12 PM, Darshan Pai <darshanpai at gmail.com> wrote:
>>>> >
>>>> > This example
>>>> > http://www.vtk.org/Wiki/VTK/Examples/Python/Infovis/ParallelCoordinatesExtraction
>>>> > I can run it , but can someone please explain this part in the code
>>>> > rep.SetInputArrayToProcess(0,0,0,0,'RTDataGradient')
>>>> > rep.SetInputArrayToProcess(1,0,0,0,'RTData')
>>>> > rep.SetInputArrayToProcess(2,0,0,0,'Elevation')
>>>> > rep.SetInputArrayToProcess(3,0,0,0,'BrownianVectors')
>>>> >
>>>> > How is this data acquired ? I never used Infovis before so I am not clear what these lines are doing exactly
>>>> > Thanks in advance
>>>> > Darshan
>>>>
>>>> The SetInputArrayToProcess function is among the most confusing ones I
>>>> have encountered (it doesn't have anything to do with vtkInfovis)
>>>>
>>>> http://www.vtk.org/doc/nightly/html/classvtkAlgorithm.html#a6bea16e1329609dbccce0ff8d2367484
>>>>
>>>> I believe all that is happening is the arrays RTDataGradient, RTData,
>>>> Elevation, BrownianVectors are being set as vertical axes in the
>>>> parallel coordinate representation. The first parameter, 'idx', is
>>>> setting the 0th array, the 1st array, etc. I just always put 0's for
>>>> the rest of the arguments.
>>>>
>>>> It has always seemed to me that for saneness there should be a
>>>>
>>>> void SetInputArrayToProcess (int idx, const char *name)
>>>>
>>>> so the explanation of "I don't know, just put 0's" doesn't ever have to be used.
>>>>
>>>> David
>>>>
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>
>>>
>>
>>
>
>
>
> <plotoutput.jpg>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110329/a4c74a4d/attachment.htm>
More information about the vtkusers
mailing list