[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