[vtkusers] plotting one array of scalars as a dependent variable of another array of scalars using vtkXYPlotActor
Steve Chall
stevec at renci.org
Mon Sep 28 13:06:15 EDT 2009
Several issues:
1) Getting the first array (dependent variable "num": number of particles
per unit volume) into the vtkXYPlotActor. Here's how I'm doing it now and I
have to believe there's a more direct way:
int nPoints = 1000;
double *num = new double[nPoints]; // dependent variable: number of
particles per unit volume for each of nPoints diameters
double *diam = new double[nPoints]; // independent variable: nPoints
diameters, values monotonically increasing from 0th elt
RunProcessToPopulateNumAndDiamArraysWithValues(num, diam) // Just assume
the array element values are correct
vtkXYPlotActor *plot = vtkXYPlotActor::New();
vtkDoubleArray *numArray = vtkDoubleArray::New();
numArray->SetArray(num, nPoints, 1); // put the straight C array of
doubles into a vtkDoubleArray
vtkPointData *numPointData = vtkPointData::New();
numPointData->SetScalars(numArray); // put the vtkDoubleArray into a
vtkPointData object
vtkPolyData *numPolyData = vtkPolyData::New();
numPolyData->SetFieldData(numPointData); // put the vtkPointData object
into a vtkPolyData object
plot->AddDataObjectInput(numPolyData); // Add the vtkPolyData object to
the plot as a vtkDataObject
When I do this, I can see the plotted data, with num as the y (dependent
variable) and array index by default as the independent variable.
Question 1: Why can't I see the plotted values when I add numPolyData as
input (instead of as data object input), as in:
plot->AddInput(numPolyData); // this builds and runs but doesn't display
the data
????
Question 2: Isn't there an easier way to get an array of doubles into the
plot than array of doubles to vtkDoubleArray to vtkPointData to vtkPolyData
and then into the plot as a data object? This seem so circuitous.
Question 3: How can I introduce the diam double array into the plot and use
its elements for the values for the independent variable, i.e., the x axis?
By doing exactly the same thing with diam as I did with num, I can get it
in, but I can't see it, on the x- axis or anywhere else:
vtkDoubleArray *diamArray = vtkDoubleArray::New();
diamArray->SetArray(diam, nPoints, 1); // put the straight C array of
doubles into a vtkDoubleArray
vtkPointData *diamPointData = vtkPointData::New();
diamPointData->SetScalars(diamArray); // put the vtkDoubleArray into a
vtkPointData object
vtkPolyData *diamPolyData = vtkPolyData::New();
diamPolyData->SetFieldData(diamPointData); // put the vtkPointData object
into a vtkPolyData object
plot->AddDataObjectInput(diamPolyData); // Add the vtkPolyData object to
the plot as a vtkDataObject
So, to summarize:
QUESTION 1: Why does AddDataObjectInput(.) work when AddInput(.) doesn't?
QUESTION 2: Is there a more straightforward way to load values into a plot?
QUESTION 3: How can I load a second array of doubles to use as the
independent variable, and see their values displayed along the x axis?
Thank you.
-Steve Chall
Senior Research Software Developer
Renaissance Computing Institute
Phone: 919-515-0051
Email: stevec at renci.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090928/10e044d9/attachment.htm>
More information about the vtkusers
mailing list