[Paraview] XY plotting via filter extending vtkRectilinearGridAlgorithm, resulting plot always empty

Utkarsh Ayachit utkarsh.ayachit at kitware.com
Mon Oct 5 15:34:23 EDT 2009


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
<corbett at physik.uzh.ch> 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
>


More information about the ParaView mailing list