/*************************************************************************** testplot_widget.cpp - description ------------------- begin : Thu Oct 26 2006 copyright : (C) 2006 by Jason Harris email : kstars@30doradus.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include #include #include "kplotwidget.h" #include "kplotobject.h" #include "kplotaxis.h" #include "testplot_widget.h" TestPlot::TestPlot( QWidget *p ) : KMainWindow( p ), po1(0), po2(0) { QWidget *w = new QWidget(this); vlay = new QVBoxLayout(w); PlotSelector = new QComboBox( w ); PlotSelector->addItem( "Points plot" ); PlotSelector->addItem( "Lines plot" ); PlotSelector->addItem( "Bars plot" ); PlotSelector->addItem( "Points plot with labels" ); PlotSelector->addItem( "Points, lines and bars" ); PlotSelector->addItem( "Points, lines and bars with labels" ); plot = new KPlotWidget( w ); plot->setMinimumSize( 400,400 ); plot->setAntialiasing( true ); vlay->addWidget( PlotSelector ); vlay->addWidget( plot ); setCentralWidget( w ); connect( PlotSelector, SIGNAL(activated(int)), this, SLOT(slotSelectPlot(int)) ); slotSelectPlot( PlotSelector->currentIndex() ); } void TestPlot::slotSelectPlot( int n ) { plot->resetPlot(); switch ( n ) { case 0: //Points plot { plot->setLimits( -6.0, 11.0, -10.0, 110.0 ); po1 = new KPlotObject( Qt::white, KPlotObject::Points, 4, KPlotObject::Asterisk ); po2 = new KPlotObject( Qt::green, KPlotObject::Points, 4, KPlotObject::Triangle ); for ( float x=-5.0; x<=10.0; x+=1.0 ) { po1->addPoint( x, x*x ); po2->addPoint( x, 50.0 - 5.0*x ); } plot->addPlotObject( po1 ); plot->addPlotObject( po2 ); plot->update(); break; } case 1: //Lines plot { plot->setLimits( -0.1, 6.38, -1.1, 1.1 ); plot->setSecondaryLimits( -5.73, 365.55, -1.1, 1.1 ); plot->axis(KPlotWidget::TopAxis)->setTickLabelsShown( true ); plot->axis(KPlotWidget::BottomAxis)->setLabel("Angle [radians]"); plot->axis(KPlotWidget::TopAxis)->setLabel("Angle [degrees]"); po1 = new KPlotObject( Qt::red, KPlotObject::Lines, 2 ); po2 = new KPlotObject( Qt::cyan, KPlotObject::Lines, 2 ); for ( float t=0.0; t<=6.28; t+=0.04 ) { po1->addPoint( t, sin(t) ); po2->addPoint( t, cos(t) ); } plot->addPlotObject( po1 ); plot->addPlotObject( po2 ); plot->update(); break; } case 2: //Bars plot { plot->setLimits( -7.0, 7.0, -5.0, 105.0 ); po1 = new KPlotObject( Qt::white, KPlotObject::Bars, 2 ); po1->setBarBrush( QBrush(Qt::green, Qt::Dense4Pattern) ); for ( float x=-6.5; x<=6.5; x+=0.5 ) { po1->addPoint( x, 100*exp( -0.5*x*x ), "", 0.5 ); } plot->addPlotObject( po1 ); plot->update(); break; } case 3: //Points plot with labels { plot->setLimits( -1.1, 1.1, -1.1, 1.1 ); po1 = new KPlotObject( Qt::yellow, KPlotObject::Points, 10, KPlotObject::Star ); po1->setLabelPen( QPen(Qt::green) ); po1->addPoint( 0.0, 0.8, "North" ); po1->addPoint( 0.57, 0.57, "Northeast" ); po1->addPoint( 0.8, 0.0, "East" ); po1->addPoint( 0.57, -0.57, "Southeast" ); po1->addPoint( 0.0, -0.8, "South" ); po1->addPoint( -0.57, -0.57, "Southwest" ); po1->addPoint( -0.8, 0.0, "West" ); po1->addPoint( -0.57, 0.57, "Northwest" ); plot->addPlotObject( po1 ); plot->update(); break; } case 4: //Points, Lines and Bars plot { plot->setLimits( -2.1, 2.1, -0.1, 4.1 ); po1 = new KPlotObject( Qt::white, KPlotObject::Points, 10, KPlotObject::Pentagon ); po1->setShowLines( true ); po1->setShowBars( true ); po1->setLabelPen( QPen( QColor( "#AA8800" ) ) ); po1->setLinePen( QPen( Qt::red, 3.0, Qt::DashDotLine ) ); po1->setBarBrush( QBrush( Qt::blue, Qt::BDiagPattern ) ); po1->addPoint( -1.75, 0.5 ); po1->addPoint( -1.25, 1.0 ); po1->addPoint( -0.75, 1.25 ); po1->addPoint( -0.25, 1.5 ); po1->addPoint( 0.25, 2.5 ); po1->addPoint( 0.75, 3.0 ); po1->addPoint( 1.25, 1.5 ); po1->addPoint( 1.75, 1.75 ); plot->addPlotObject( po1 ); update(); break; } case 5: //Points, Lines and Bars plot with labels { plot->setLimits( -2.1, 2.1, -0.1, 4.1 ); po1 = new KPlotObject( Qt::white, KPlotObject::Points, 10, KPlotObject::Pentagon ); po1->setShowLines( true ); po1->setShowBars( true ); po1->setLabelPen( QPen( QColor( "#AA8800" ) ) ); po1->setLinePen( QPen( Qt::red, 3.0, Qt::DashDotLine ) ); po1->setBarBrush( QBrush( Qt::blue, Qt::BDiagPattern ) ); po1->addPoint( -1.75, 0.5, "A" ); po1->addPoint( -1.25, 1.0, "B" ); po1->addPoint( -0.75, 1.25, "C" ); po1->addPoint( -0.25, 1.5, "D" ); po1->addPoint( 0.25, 2.5, "E" ); po1->addPoint( 0.75, 3.0, "F" ); po1->addPoint( 1.25, 1.5, "G" ); po1->addPoint( 1.75, 1.75, "H" ); plot->addPlotObject( po1 ); update(); break; } } } #include "moc_testplot_widget.cpp"