[Paraview] Changing Chart Series Visibilities from Python

Greg Schussman schussman at slac.stanford.edu
Thu Oct 6 16:07:09 EDT 2011


Hi, Pat.

Here is an example that recreates the problem.  Using this as a CSV file:

AAA,BBB,CCC,DDD
0.0,1.0,2.0,3.0
0.0,2.0,4.0,8.0
0.0,3.5,2.5,1.5

and this (modified python trace) as a script run from the python shell 
in paraview:
----------------------------------------------------------------
try: paraview.simple
except: from paraview.simple import *
paraview.simple._DisableFirstRenderCameraReset()

test_csv = CSVReader( FileName=['test.csv'] )

AnimationScene1 = GetAnimationScene()
RenderView1 = GetRenderView()
Delete(RenderView1)
SpreadSheetView1 = CreateRenderView()
SpreadSheetView1.ViewTime = 0.0

AnimationScene1.ViewModules = SpreadSheetView1

PlotData1 = PlotData()

XYChartView1 = CreateXYPlotView()
XYChartView1.ViewTime = 0.0

DataRepresentation2 = Show()
DataRepresentation2.XArrayName = 'AAA'
DataRepresentation2.AttributeType = 'Row Data'
DataRepresentation2.SeriesVisibility = ['vtkOriginalIndices', '0']

AnimationScene1.ViewModules = [ SpreadSheetView1, XYChartView1 ]

Render()

p = DataRepresentation2.SMProxy.GetProperty("SeriesNamesInfo")
series_names = [p.GetElement(i) for i in xrange(p.GetNumberOfElements())]
print "series_names:", series_names
----------------------------------------------------------------

I get back

   series_names: []

Thanks for any suggestions.

Greg


On 10/06/2011 12:46 PM, Greg Schussman wrote:
> Hi, Pat.
>
> On further checking, there's still some sort of problem.
>
> When I use your example below, it works in ParaView's Python Shell, if 
> the PlotData filter was created via the ParaView gui.   However, if it 
> was created in the macro (using the text from a python trace of how it 
> was created via the gui), then your example produces an empty list.   
> The PlotData filter created in the macro does show up on the screen 
> and look correct; but the series names aren't accessible.
>
> Does this provide any useful clues?
>
> Thanks.
>
> Greg
>
> On 10/06/2011 11:49 AM, pat marion wrote:
>> Hi Greg,
>>
>> I think I found a bug, or else I don't quite understand what is 
>> happening.  It seems that under certain circumstances the python 
>> layer fails to wrap all the properties of a proxy.  I look into this, 
>> but for now you can work around the issue by accessing the c++ api:
>>
>> >>> p =
>> rep.SMProxy.GetProperty("SeriesNamesInfo")
>>
>> >>> series_names = [p.GetElement(i) for i in
>> xrange(p.GetNumberOfElements())]
>>
>>
>>
>> Pat
>>
>> On Thu, Oct 6, 2011 at 2:34 PM, Greg Schussman 
>> <schussman at slac.stanford.edu <mailto:schussman at slac.stanford.edu>> wrote:
>>
>>     Hi, Pat.
>>
>>     I tried plotting directly from the CSVReader, and then it all
>>     works.   But when my programmable filter is in between, there's a
>>     problem.  When I apply the plot filter  (via ParaView's GUI) to
>>     my programmable filter, the plot works fine in the gui, but the
>>     GetProperty("SeriesNameInfo") returns None.   However, if I skip
>>     the programmable filter, and plot the CSV reader directly, then
>>     GetProperty("SeriesNameInfo") does what you say it should.
>>
>>     Anyway, I think I can skip my programmable filter for now, and
>>     get this working dircetly.
>>
>>     Thanks so much for what you've provided.
>>
>>
>>     Greg
>>
>>
>>     On 10/06/2011 11:10 AM, pat marion wrote:
>>>     Are you sure that the chart view is the active view when you
>>>     call GetDisplayProperties(p)?   If the render view is active,
>>>     you'll get the wrong representation.  I verified that this works
>>>     for Wavelet --> Plot Data filter using PV 3.10.1.
>>>
>>>     Pat
>>>
>>>     On Thu, Oct 6, 2011 at 2:03 PM, Greg Schussman
>>>     <schussman at slac.stanford.edu
>>>     <mailto:schussman at slac.stanford.edu>> wrote:
>>>
>>>         On 10/06/2011 07:33 AM, pat marion wrote:
>>>>         series_names = [name for name in
>>>>         d.GetProperty("SeriesNamesInfo")]
>>>
>>>         Hi, Pat.
>>>
>>>         Thanks for the helpful pointers.
>>>
>>>         After setting everything up in ParaView (3.10.1, 64-bit),
>>>         I'm not getting results.  Here is what I did from the
>>>         ParaView Python Shell:
>>>
>>>         >>> p
>>>         =
>>>
>>>         FindSource("PlotData1")
>>>
>>>         >>> rep
>>>         =
>>>
>>>         GetDisplayProperties(p)
>>>
>>>         >>>
>>>
>>>         rep.GetProperty("SeriesNamesInfo")
>>>
>>>         None
>>>
>>>         >>>
>>>
>>>
>>>         While, at the same time, the Object Inspector shows 27
>>>         series, each with the correct name.
>>>
>>>         Does something need to be updated or refreshed first?  I
>>>         notice in the pvblot script, there is a
>>>
>>>           rep.Update()
>>>
>>>         but when I try that in ParaView's python shell (after
>>>         getting the representation the way I showed above), it tells me:
>>>
>>>         >>>
>>>         rep.Update()
>>>
>>>         Traceback
>>>         (most recent call last):
>>>
>>>         File
>>>         "<console>", line 1, in
>>>
>>>         <module>
>>>
>>>         File
>>>
>>>         "/usr/lib64/paraview/site-packages/paraview/servermanager.py",
>>>
>>>         line 370, in __getattr__
>>>
>>>         return
>>>         getattr(self.SMProxy, name)
>>>
>>>         AttributeError:
>>>         Update
>>>
>>>         >>>
>>>
>>>
>>>         Thanks!
>>>
>>>         Greg
>>>
>>>
>>>
>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20111006/f7f4e0d0/attachment-0001.htm>


More information about the ParaView mailing list