[vtkusers] A Problem About vtkXYPlotActor
Adriano Gagliardi
agagliardi at ara.co.uk
Fri Jul 9 04:44:54 EDT 2010
Hi Elo,
So, you have set your y-axis range to be between 0 and 8, you then plot a curve where some of those y-values are out of this range, so it doesn't plot them (it clips them out). This appears to be normal behaviour in my opinion. If you want to see all your curves, then you'll have to rescale your y-axis to fit them in by setting the y-axis range from 0 to 15. Were you assuming it would automatically fit the axes to the data, as within ParaView? This option may still be there, but I've never used it.
Cheers,
Adriano
===================================
Adriano Gagliardi MEng PhD
Business Sector Leader
Computational Aerodynamics
Aircraft Research Association Ltd.
Manton Lane
Bedford
Tel: 01234 32 4644
E-mail: agagliardi at ara.co.uk
Url: www.ara.co.uk
_____
From: vtkusers-bounces at vtk.org [mailto:vtkusers-bounces at vtk.org] On Behalf Of LiuNiansheng
Sent: 09 July 2010 03:56
To: VTK
Subject: [vtkusers] A Problem About vtkXYPlotActor
Hi everyone:
I'm a user of vtk. When I use vtkXYPlotActor to draw some lines at a XYPlot, I found vtk miss one line.
That's my sample code of vtkXYPlotActor:
========================================================================= #include "vtkFloatArray.h" #include "vtkFieldData.h" #include "vtkDataObject.h" #include "vtkXYPlotActor.h" #include "vtkXYPlotWidget.h" #include "vtkMath.h" #include "vtkRenderWindow.h" #include "vtkRenderer.h" #include "vtkRenderWindowInteractor.h" int main() { vtkFloatArray* vtkXYValues = vtkFloatArray::New(); vtkXYValues->SetNumberOfComponents( static_cast<vtkIdType>(2) ); float xy[2]; xy[0] = static_cast<float>(0); xy[1] = static_cast<float>(0) ; vtkXYValues->InsertNextTuple( xy ); xy[0] = static_cast<float>(2); xy[1] = static_cast<float>(3) ; vtkXYValues->InsertNextTuple( xy ); xy[0] = static_cast<float>(4); xy[1] = static_cast<float>(15) ; vtkXYValues->InsertNextTuple( xy ); xy[0] = static_cast<float>(6); xy[1] = static_cast<float>(1) ; vtkXYValues->InsertNextTuple( xy ); xy[0] = static_cast<float>(7); xy[1] = static_cast<float>(0.1) ; vtkXYValues->InsertNextTuple( xy ); xy[0] = static_cast<float>(8); xy[1] = static_cast<float>(10) ; vtkXYValues->InsertNextTuple( xy ); xy[0] = static_cast<float>(9); xy[1] = static_cast<float>(9) ; vtkXYValues->InsertNextTuple( xy ); xy[0] = static_cast<float>(10); xy[1] = static_cast<float>(0) ; vtkXYValues->InsertNextTuple( xy ); vtkFieldData* vtkGraphFieldData = vtkFieldData::New(); vtkGraphFieldData->AddArray( vtkXYValues ); vtkXYValues->Delete(); vtkDataObject* vtkGraphDataObject = vtkDataObject::New(); vtkGraphDataObject->SetFieldData( vtkGraphFieldData ); vtkGraphFieldData->Delete(); vtkXYPlotActor* vtkGraph = vtkXYPlotActor::New(); vtkGraph->AddDataObjectInput( vtkGraphDataObject ); vtkGraphDataObject->Delete(); vtkGraph->SetDataObjectPlotModeToColumns(); vtkGraph->SetXValuesToValue(); int curve = 0; vtkGraph->SetDataObjectXComponent( curve, 0 ); vtkGraph->SetDataObjectYComponent( curve, 1 ); vtkGraph->SetXRange( 0, 10); vtkGraph->SetYRange( 0, 8); vtkGraph->SetPlotColor( curve, 1,0,0 ); vtkRenderer* renderer = vtkRenderer::New(); renderer->AddActor2D( vtkGraph ); vtkRenderWindow* renderWin = vtkRenderWindow::New(); renderWin->AddRenderer( renderer ); vtkRenderWindowInteractor* interactor =vtkRenderWindowInteractor::New(); interactor->SetRenderWindow( renderWin ); vtkXYPlotWidget* vtkXYPlotWidget = vtkXYPlotWidget::New(); vtkXYPlotWidget->SetXYPlotActor( vtkGraph ); vtkXYPlotWidget->SetInteractor( interactor ); vtkXYPlotWidget->SetEnabled( true ); interactor->Initialize(); interactor->Start(); return 0; } ========================================================================= I define eight points,a(0,0), b(2,3), c(4,15), d(6,1), e(7,0), f(8,10), g(9,9),h(10,0). And the range of xy axis is defined from point (0,0)
to (10,8). So there are three points(cfg) out of range. There should be six lines except the line fg which is out of range, but only five lines
have been drawn. when I change these point to test, I found the line which the value of y axis is from 0(the min value of y axis)
to a value bigger than the max value of y axis will be ignored by vtk.
I guess the problem maybe happen when clipping data. So I debugged vtkXYPlotActor source, and I found the function
named ClipPlotData() have been called in the function CreatPlotData().
The algorithm of clipping data is no problem. the number of lines which should be drawn is six.
Cause I don't have enough time to do further research. If anyone has any information about this problem, please let me know.
th anks.
sincerely yours:
Elo
_____
搜索本应是彩色的,快来体验新一代搜索引擎-必应,精美图片每天换哦! 立即试用! <http://cn.bing.com/?form=CRMADS>
_____
使用新一代 Windows Live Messenger 轻松交流和共享! 立刻下载! <http://www.windowslive.cn/messenger/>
**********************************************************************
This email contains information that is private and confidential and is intended only for the addressee.
If you are not the intended recipient please delete it and notify us immediately by e-mailing the sender.
Note: All email sent to or from this address may be accessed by someone other than the recipient, for
system management and security reasons.
Aircraft Research Association Ltd. Registered in England, Registration No 503668 Registered Office:
Manton Lane, Bedford MK41 7PF England VAT No GB 196351245
**********************************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100709/ee349478/attachment.htm>
More information about the vtkusers
mailing list