The "Plot Over Line" filter isn't working for your dataset since you are producing a data with 0 width and 0 height. So when it tries to probe with the line, it's failing since the points on the line never falls within any cells.
Utkarsh On Mon, Oct 5, 2009 at 4:07 PM, Christine Corbett Moran <[email protected]> wrote: > By "plotting setup" I mean that I first want to make a filter which > plots X vs. Y for a very simple case, so that when I try to make the > filter do something more complicated I don't have to worry about basic > bugs/conceptual issues (e.g. if I have a wrong understanding about > structured extents or which algorithm to derive from to automatically > create a plot in the XY view of my desired variables after execution > of a filter). > > Thanks for the vtkTable idea, it does seem I may have the wrong idea > about which type of data to produce, I had read a number of posts on > the mailing list that said that the way to get ParaView to > automatically plot the results from a filter in the XY view was to > produce vtkRectilinearGrid. I will try vtkTable and see if it is > suitable. In the meantime if anyone can help with the > vtkRectilinearGrid simple XY plot example, it may come in handy if > vtkTable is not suitable, for others, or for the next time I work with > vtkRectilinearGrid. > > Cheers, > Christine > > > On Mon, Oct 5, 2009 at 9:53 PM, Utkarsh Ayachit > <[email protected]> wrote: >> I am not sure what you mean by "plotting setup for the filter". Is >> this filter supposed to produce data that can plotted directly? In >> that case you might want to simply create a vtkTableAlgorithm >> subclassand produce vtkTable (instead of vtkRectilinearGrid) that has >> data rows/columns which can easily be plotted by ParaView. vtkTable is >> also easier to deal with since you don't have to worry about >> structured extents. >> >> Utkarsh >> >> On Mon, Oct 5, 2009 at 3:38 PM, Christine Corbett Moran >> <[email protected]> wrote: >>> Hi Utkarsh, >>> >>> Yes that works but I actually want to do more complicated things than >>> just plot the data values, so first am doing something simple to make >>> sure I have the plotting setup for the filter correct. >>> >>> Cheers, >>> Christine >>> >>> On Mon, Oct 5, 2009 at 9:34 PM, Utkarsh Ayachit >>> <[email protected]> wrote: >>>> Since you simply want to plot the data_values from your rectilinear >>>> grid, try applying the "Plot Data" filter instead. Does that work? >>>> >>>> Utkarsh >>>> >>>> On Mon, Oct 5, 2009 at 3:30 PM, Christine Corbett Moran >>>> <[email protected]> wrote: >>>>> Hi, >>>>> >>>>> I want to begin adding some non-trivial 2d plotting capabilities to my >>>>> ParaView plugin; in that interest I've implemented a filter which is >>>>> derived from vtkRectilinearGridAlgorithm. For now, I am trying only a >>>>> simple example, where my X coordinates are the particle ids, my Y and >>>>> Z coordinates are dummy arrays with one element, and my data is the id >>>>> to the power 2. When I act my filter, the XY plot view and a new 3D >>>>> view appear. However the XY plot is empty, as is the 3D view. I can >>>>> get something to appear in the 3D view by adding a glyph to the >>>>> pipeline (and the result makes sense), but nothing I do seems to get >>>>> it the XY plot view to actually plot. >>>>> >>>>> I have included the RequestData portion of my filter at the end of the >>>>> message as well as the information tab of the object inspector of the >>>>> filter. Everything looks normal to me (except I am not sure why the >>>>> number of cells is less than the number of points?). Can anyone see >>>>> the problem? Is there something more I need to do? I've already done a >>>>> lot of searching of the archives, playing around with the parameters, >>>>> and reading the vtk documentation but haven't found the bug or the >>>>> missing call. >>>>> >>>>> The information tab of the object inspector displays: >>>>> Type: Rectilinear Grid >>>>> Number of Cells: 1000 >>>>> Number of Points: 1001 >>>>> Data Arrays: >>>>> Name | Data Type | Data Ranges >>>>> data values | int | [0,1e+06] >>>>> Extents >>>>> X Extent: 0 to 1000 (dimension: 1001) >>>>> Y Extent: 0 to 0 (dimension: 1) >>>>> Z Extent: 0 to 0 (dimension: 1) >>>>> Bounds >>>>> X range: 0 to 1e+03 >>>>> Y range: 0 to 0 >>>>> Z range 0 to 0 >>>>> >>>>> And my request data method is: >>>>> //---------------------------------------------------------------------------- >>>>> int vtkMassFunctionFilter::RequestData(vtkInformation*, >>>>> vtkInformationVector** inputVector, >>>>> vtkInformationVector* outputVector) >>>>> { >>>>> // Get input and output data. >>>>> vtkPointSet* input = vtkPointSet::GetData(inputVector[0]); >>>>> vtkRectilinearGrid* output = vtkRectilinearGrid::GetData(outputVector); >>>>> // Setting the dimensions of this to be equal to our number of points, >>>>> // in X, and equal to 1 in the Y and Z directions, >>>>> // as these are dummy arrays. >>>>> output->SetDimensions(input->GetPoints()->GetNumberOfPoints(),1,1); >>>>> output->SetWholeExtent(0,input->GetPoints()->GetNumberOfPoints(),\ >>>>> 0,0,\ >>>>> 0,0); >>>>> // Allocate the arrays for the X,Y, and Z coordinates, and inserts a >>>>> // single value for the dummy arrays, as well as allocate the array >>>>> // for the scalar data >>>>> vtkSmartPointer<vtkDoubleArray> >>>>> XArray=vtkSmartPointer<vtkDoubleArray>::New(); >>>>> XArray->SetNumberOfComponents(1); >>>>> XArray->SetNumberOfTuples(input->GetPoints()->GetNumberOfPoints()); >>>>> vtkSmartPointer<vtkDoubleArray> >>>>> DummyYArray=vtkSmartPointer<vtkDoubleArray>::New(); >>>>> DummyYArray->SetNumberOfComponents(1); >>>>> DummyYArray->SetNumberOfTuples(1); >>>>> DummyYArray->InsertValue(0,0); >>>>> vtkSmartPointer<vtkDoubleArray> >>>>> DummyZArray=vtkSmartPointer<vtkDoubleArray>::New(); >>>>> DummyZArray->SetNumberOfComponents(1); >>>>> DummyZArray->SetNumberOfTuples(1); >>>>> DummyZArray->InsertValue(0,0); >>>>> vtkSmartPointer<vtkIntArray> >>>>> dataValues=vtkSmartPointer<vtkIntArray>::New(); >>>>> dataValues->SetNumberOfComponents(1); >>>>> dataValues->SetNumberOfTuples(input->GetPoints()->GetNumberOfPoints()); >>>>> dataValues->SetName("data values"); >>>>> for(int nextPointId = 0;\ >>>>> nextPointId < input->GetPoints()->GetNumberOfPoints();\ >>>>> ++nextPointId) >>>>> { >>>>> XArray->InsertValue(nextPointId,nextPointId); >>>>> dataValues->InsertValue(nextPointId,pow(nextPointId,2)); >>>>> } >>>>> // Updating the output >>>>> output->SetXCoordinates(XArray); >>>>> output->SetYCoordinates(DummyYArray); >>>>> output->SetZCoordinates(DummyZArray); >>>>> output->GetPointData()->SetScalars(dataValues); >>>>> return 1; >>>>> } >>>>> _______________________________________________ >>>>> 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 ParaView Wiki at: >>>>> http://paraview.org/Wiki/ParaView >>>>> >>>>> Follow this link to subscribe/unsubscribe: >>>>> http://www.paraview.org/mailman/listinfo/paraview >>>>> >>>> >>> >> > _______________________________________________ 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 ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview
