[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [labplot/histogram_chart] src:  removed Y column option, Gsl implementation for histogram
From:       Anu Mittal <anu22mittal () gmail ! com>
Date:       2016-07-24 17:10:48
Message-ID: E1bRMvQ-0002ij-2F () code ! kde ! org
[Download RAW message or body]

Git commit de1bcb7098b84f07edaef0fb5d170de1d366a3c4 by Anu Mittal.
Committed on 24/07/2016 at 14:42.
Pushed by anumittal into branch 'histogram_chart'.

removed Y column option, Gsl implementation for histogram

M  +0    -17   src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
M  +38   -61   src/backend/worksheet/plots/cartesian/Histogram.cpp
M  +0    -1    src/backend/worksheet/plots/cartesian/Histogram.h
M  +3    -4    src/backend/worksheet/plots/cartesian/HistogramPrivate.h
M  +4    -32   src/kdefrontend/dockwidgets/HistogramDock.cpp
M  +0    -3    src/kdefrontend/dockwidgets/HistogramDock.h

http://commits.kde.org/labplot/de1bcb7098b84f07edaef0fb5d170de1d366a3c4

diff --git a/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp \
b/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp index 8577f01..f336166 \
                100644
--- a/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
+++ b/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
@@ -1042,23 +1042,6 @@ void CartesianPlot::scaleAutoY(){
 					d->curvesYMax = curve->yColumn()->maximum();
 			}
 		}
-		QList<const Histogram*> childrenHistogram = this->children<const Histogram>();
-		foreach(const Histogram* curve, childrenHistogram) {
-			if (!curve->isVisible())
-				continue;
-			if (!curve->yColumn())
-				continue;
-
-			if (curve->yColumn()->minimum() != INFINITY){
-				if (curve->yColumn()->minimum() < d->curvesYMin)
-					d->curvesYMin = curve->yColumn()->minimum();
-			}
-
-			if (curve->yColumn()->maximum() != -INFINITY){
-				if (curve->yColumn()->maximum() > d->curvesYMax)
-					d->curvesYMax = curve->yColumn()->maximum();
-			}
-		}
 		d->curvesYMinMaxIsDirty = false;
 	}
 
diff --git a/src/backend/worksheet/plots/cartesian/Histogram.cpp \
b/src/backend/worksheet/plots/cartesian/Histogram.cpp index 225db05..35a975b 100644
--- a/src/backend/worksheet/plots/cartesian/Histogram.cpp
+++ b/src/backend/worksheet/plots/cartesian/Histogram.cpp
@@ -60,6 +60,7 @@
 #include <KConfigGroup>
 #include <KLocale>
 
+#include <gsl/gsl_histogram.h>
 #include <gsl/gsl_spline.h>
 #include <gsl/gsl_errno.h>
 #include <math.h>
@@ -87,7 +88,6 @@ void Histogram::init(){
 	KConfigGroup group = config.group("Histogram");
 
 	d->xColumn = NULL;
-	d->yColumn = NULL;
 
 	d->valuesType = (Histogram::ValuesType) group.readEntry("ValuesType", \
(int)Histogram::NoValues);  d->valuesColumn = NULL;
@@ -159,9 +159,7 @@ void Histogram::setPrinting(bool on) {
 //##########################  getter methods  ##################################
 //##############################################################################
 BASIC_SHARED_D_READER_IMPL(Histogram, const AbstractColumn*, xColumn, xColumn)
-BASIC_SHARED_D_READER_IMPL(Histogram, const AbstractColumn*, yColumn, yColumn)
 QString& Histogram::xColumnPath() const { return d_ptr->xColumnPath; }
-QString& Histogram::yColumnPath() const {	return d_ptr->yColumnPath; }
 
 //values
 BASIC_SHARED_D_READER_IMPL(Histogram, Histogram::ValuesType, valuesType, valuesType)
@@ -210,26 +208,6 @@ void Histogram::setXColumn(const AbstractColumn* column) {
 	}
 }
 
-STD_SETTER_CMD_IMPL_F_S(Histogram, SetYColumn, const AbstractColumn*, yColumn, \
                retransform)
-void Histogram::setYColumn(const AbstractColumn* column) {
-	Q_D(Histogram);
-	if (column != d->yColumn) {
-		exec(new HistogramSetYColumnCmd(d, column, i18n("%1: assign y values")));
-
-		//emit yHistogramDataChanged() in order to notify the plot about the changes
-		emit yHistogramDataChanged();
-		if (column) {
-			connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
                SIGNAL(yHistogramDataChanged()));
-
-			//update the curve itself on changes
-			connect(column, SIGNAL(dataChanged(const AbstractColumn*)), this, \
                SLOT(retransform()));
-			connect(column->parentAspect(), SIGNAL(aspectAboutToBeRemoved(const \
                AbstractAspect*)),
-					this, SLOT(yColumnAboutToBeRemoved(const AbstractAspect*)));
-			//TODO: add disconnect in the undo-function
-		}
-	}
-}
-
 //Values-Tab
 STD_SETTER_CMD_IMPL_F_S(Histogram, SetValuesType, Histogram::ValuesType, valuesType, \
updateValues)  void Histogram::setValuesType(Histogram::ValuesType type) {
@@ -404,14 +382,6 @@ void Histogram::xColumnAboutToBeRemoved(const AbstractAspect* \
aspect) {  }
 }
 
-void Histogram::yColumnAboutToBeRemoved(const AbstractAspect* aspect) {
-	Q_D(Histogram);
-	if (aspect == d->yColumn) {
-		d->yColumn = 0;
-		d->retransform();
-	}
-}
-
 void Histogram::valuesColumnAboutToBeRemoved(const AbstractAspect* aspect) {
 	Q_D(Histogram);
 	if (aspect == d->valuesColumn) {
@@ -478,7 +448,7 @@ void HistogramPrivate::retransform(){
 	symbolPointsScene.clear();
 	connectedPointsLogical.clear();
 
-	if ( (NULL == xColumn) || (NULL == yColumn) ){
+	if (NULL == xColumn){
 		valuesPath = QPainterPath();
 //		dropLinePath = QPainterPath();
 		recalcShapeAndBoundingRect();
@@ -490,12 +460,10 @@ void HistogramPrivate::retransform(){
 	QPointF tempPoint;
 
 	AbstractColumn::ColumnMode xColMode = xColumn->columnMode();
-	AbstractColumn::ColumnMode yColMode = yColumn->columnMode();
 
 	//take over only valid and non masked points.
 	for (int row = startRow; row <= endRow; row++ ){
-		if ( xColumn->isValid(row) && yColumn->isValid(row)
-			&& (!xColumn->isMasked(row)) && (!yColumn->isMasked(row)) ) {
+		if ( xColumn->isValid(row) && !xColumn->isMasked(row) ) {
 
 			switch(xColMode) {
 				case AbstractColumn::Numeric:
@@ -510,18 +478,6 @@ void HistogramPrivate::retransform(){
 					break;
 			}
 
-			switch(yColMode) {
-				case AbstractColumn::Numeric:
-						tempPoint.setY(yColumn->valueAt(row));
-						break;
-				case AbstractColumn::Text:
-					//TODO
-				case AbstractColumn::DateTime:
-				case AbstractColumn::Month:
-				case AbstractColumn::Day:
-					//TODO
-					break;
-			}
 			symbolPointsLogical.append(tempPoint);
 			connectedPointsLogical.push_back(true);
 		} else {
@@ -1112,34 +1068,56 @@ void HistogramPrivate::paint(QPainter* painter, const \
QStyleOptionGraphicsItem*  QPainterPath LinePath = QPainterPath();
     QList<QLineF> lines;
     lines.clear();
-    double bins[] = {5.0, 6.0, 2.0, 9.0, 10.0};
+    //double bins[] = {5.0, 6.0, 2.0, 9.0, 10.0};
    
     QPointF tempPoint, tempPoint1;
-   
-    for(int i=0;i < 5; ++i) {
-        tempPoint.setX((double) i);
+	double xAxisMin= xColumn->minimum();
+	double xAxisMax= xColumn->maximum();
+	
+	qDebug()<< "axis value" << xAxisMax << xAxisMin;	
+	
+	int startRow = 0;
+	int endRow = xColumn->rowCount() - 1;
+	
+	gsl_histogram * h = gsl_histogram_alloc (10); // demo- number of bins
+	gsl_histogram_set_ranges_uniform (h, xAxisMin,xAxisMax);
+	
+	for (int row = startRow; row <= endRow; row++ ){
+		if ( xColumn->isValid(row) && !xColumn->isMasked(row) )
+		gsl_histogram_increment(h,xColumn->valueAt(row));
+	}
+	
+	//checking height of each column 
+	for(int i=0;i < 10; ++i) {
+		qDebug() << gsl_histogram_get(h,i);
+	}
+	double width = (xAxisMax-xAxisMin)/10;
+	
+	for(int i=0;i < 10; ++i) {
+        tempPoint.setX(xAxisMin);
         tempPoint.setY(0.0);
        
-        tempPoint1.setX((double) i);
-        tempPoint1.setY(bins[i]);
+        tempPoint1.setX(xAxisMin);
+        tempPoint1.setY(gsl_histogram_get(h,i));
        
         lines.append(QLineF(tempPoint, tempPoint1));
        
-        tempPoint.setX((double) i);
-        tempPoint.setY(bins[i]);
+        tempPoint.setX(xAxisMin);
+        tempPoint.setY(gsl_histogram_get(h,i));
        
-        tempPoint1.setX((double) i+1);
-        tempPoint1.setY(bins[i]);
+        tempPoint1.setX(xAxisMin+width);
+        tempPoint1.setY(gsl_histogram_get(h,i));
        
         lines.append(QLineF(tempPoint,tempPoint1));
        
-        tempPoint.setX((double) i+1);
-        tempPoint.setY(bins[i]);
+        tempPoint.setX(xAxisMin+width);
+        tempPoint.setY(gsl_histogram_get(h,i));
        
-        tempPoint1.setX((double) i+1);
+        tempPoint1.setX(xAxisMin+width);
         tempPoint1.setY(0.0);
        
         lines.append(QLineF(tempPoint, tempPoint1));
+		xAxisMin+= width;
     }
    
     const CartesianPlot* plot = dynamic_cast<const \
CartesianPlot*>(q->parentAspect()); @@ -1343,7 +1321,6 @@ void \
Histogram::save(QXmlStreamWriter* writer) const{  //general
 	writer->writeStartElement( "general" );
 	WRITE_COLUMN(d->xColumn, xColumn);
-	WRITE_COLUMN(d->yColumn, yColumn);
 	writer->writeAttribute( "visible", QString::number(d->isVisible()) );
 	writer->writeEndElement();
 
diff --git a/src/backend/worksheet/plots/cartesian/Histogram.h \
b/src/backend/worksheet/plots/cartesian/Histogram.h index 50ebd36..f74d6f3 100644
--- a/src/backend/worksheet/plots/cartesian/Histogram.h
+++ b/src/backend/worksheet/plots/cartesian/Histogram.h
@@ -103,7 +103,6 @@ class Histogram: public WorksheetElement {
 	private slots:
 		void updateValues();
 		void xColumnAboutToBeRemoved(const AbstractAspect*);
-		void yColumnAboutToBeRemoved(const AbstractAspect*);
 		void valuesColumnAboutToBeRemoved(const AbstractAspect*);
 		//SLOTs for changes triggered via QActions in the context menu
 		void visibilityChanged();
diff --git a/src/backend/worksheet/plots/cartesian/HistogramPrivate.h \
b/src/backend/worksheet/plots/cartesian/HistogramPrivate.h index 86be129..10a0127 \
                100644
--- a/src/backend/worksheet/plots/cartesian/HistogramPrivate.h
+++ b/src/backend/worksheet/plots/cartesian/HistogramPrivate.h
@@ -66,7 +66,6 @@ class HistogramPrivate: public QGraphicsItem {
 
 		//data columns
 		const AbstractColumn* xColumn;
-		const AbstractColumn* yColumn;
 		QString xColumnPath;
 		QString yColumnPath;
 		
@@ -118,9 +117,9 @@ class HistogramPrivate: public QGraphicsItem {
 		bool curvesXMinMaxIsDirty, curvesYMinMaxIsDirty;
 		double curvesXMin, curvesXMax, curvesYMin, curvesYMax;
 		
-		float xMin, xMax, yMin, yMax;
-		float xMinPrev, xMaxPrev, yMinPrev, yMaxPrev;
-		bool autoScaleHistogramX, autoScaleHistogramY;
+		float xMin, xMax;
+		float xMinPrev, xMaxPrev;
+		bool autoScaleHistogramX;
 		
 		Histogram* const q;
 		
diff --git a/src/kdefrontend/dockwidgets/HistogramDock.cpp \
b/src/kdefrontend/dockwidgets/HistogramDock.cpp index f238968..a84722c 100644
--- a/src/kdefrontend/dockwidgets/HistogramDock.cpp
+++ b/src/kdefrontend/dockwidgets/HistogramDock.cpp
@@ -58,7 +58,6 @@
 HistogramDock::HistogramDock(QWidget *parent): QWidget(parent),
 	m_completion(new KUrlCompletion()),
 	cbXColumn(0),
-	cbYColumn(0),
 	m_curve(0),
 	m_aspectTreeModel(0) {
 
@@ -354,7 +353,6 @@ void HistogramDock::setModel() {
 
 	if (cbXColumn) {
 		cbXColumn->setTopLevelClasses(list);
-		cbYColumn->setTopLevelClasses(list);
 	}
 	cbValuesColumn->setTopLevelClasses(list);
 
@@ -363,12 +361,10 @@ void HistogramDock::setModel() {
 	m_aspectTreeModel->setSelectableAspects(list);
 	if (cbXColumn) {
 		cbXColumn->setSelectableClasses(list);
-		cbYColumn->setSelectableClasses(list);
 	}
 	cbValuesColumn->setSelectableClasses(list);
 	if (cbXColumn) {
 		cbXColumn->setModel(m_aspectTreeModel);
-		cbYColumn->setModel(m_aspectTreeModel);
 	}
 	cbValuesColumn->setModel(m_aspectTreeModel);
 }
@@ -394,10 +390,9 @@ void HistogramDock::initGeneralTab(){
 		uiGeneralTab.lXColumn->setEnabled(true);
 		cbXColumn->setEnabled(true);
 		uiGeneralTab.lYColumn->setEnabled(true);
-		cbYColumn->setEnabled(true);
+		//cbYColumn->setEnabled(true);
 
 		this->setModelIndexFromColumn(cbXColumn, m_curve->xColumn());
-		this->setModelIndexFromColumn(cbYColumn, m_curve->yColumn());
 
 		uiGeneralTab.leName->setText(m_curve->name());
 		uiGeneralTab.leComment->setText(m_curve->comment());
@@ -409,11 +404,8 @@ void HistogramDock::initGeneralTab(){
 
 		uiGeneralTab.lXColumn->setEnabled(false);
 		cbXColumn->setEnabled(false);
-		uiGeneralTab.lYColumn->setEnabled(false);
-		cbYColumn->setEnabled(false);
 
 		cbXColumn->setCurrentModelIndex(QModelIndex());
-		cbYColumn->setCurrentModelIndex(QModelIndex());
 
 		uiGeneralTab.leName->setText("");
 		uiGeneralTab.leComment->setText("");
@@ -526,12 +518,8 @@ void HistogramDock::valuesTypeChanged(int index){
 	}else{
 	  ui.lValuesColumn->hide();
 	  cbValuesColumn->hide();
-
-	  if (valuesType==Histogram::ValuesY){
-		column = static_cast<const Column*>(m_curve->yColumn());
-	  }else{
 		column = static_cast<const Column*>(m_curve->xColumn());
-	  }
+	  
 	}
 	this->showValuesColumnFormat(column);
   }
@@ -939,15 +927,14 @@ void HistogramDock::setupGeneral() {
 	cbXColumn = new TreeViewComboBox(generalTab);
 	gridLayout->addWidget(cbXColumn, 2, 2, 1, 1);
 
-	cbYColumn = new TreeViewComboBox(generalTab);
+/*	cbYColumn = new TreeViewComboBox(generalTab);
 	gridLayout->addWidget(cbYColumn, 3, 2, 1, 1);
-
+*/
 	//General
 	connect( uiGeneralTab.leName, SIGNAL(returnPressed()), this, SLOT(nameChanged()) );
 	connect( uiGeneralTab.leComment, SIGNAL(returnPressed()), this, \
SLOT(commentChanged()) );  connect( uiGeneralTab.chkVisible, SIGNAL(clicked(bool)), \
this, SLOT(visibilityChanged(bool)) );  connect( cbXColumn, \
SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
                SLOT(xColumnChanged(QModelIndex)) );
-	connect( cbYColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, \
SLOT(yColumnChanged(QModelIndex)) );  
 }
 
@@ -968,21 +955,6 @@ void HistogramDock::xColumnChanged(const QModelIndex& index) {
 	}
 }
 
-void HistogramDock::yColumnChanged(const QModelIndex& index) {
-	if (m_initializing)
-		return;
-
-	AbstractAspect* aspect = static_cast<AbstractAspect*>(index.internalPointer());
-	AbstractColumn* column = 0;
-	if (aspect) {
-		column = dynamic_cast<AbstractColumn*>(aspect);
-		Q_ASSERT(column);
-	}
-
-	foreach(Histogram* curve, m_curvesList)
-		curve->setYColumn(column);
-}
-
 void HistogramDock::loadConfigFromTemplate(KConfig& config) {
 	//extract the name of the template from the file name
 	QString name;
diff --git a/src/kdefrontend/dockwidgets/HistogramDock.h \
b/src/kdefrontend/dockwidgets/HistogramDock.h index 152c1a8..138906f 100644
--- a/src/kdefrontend/dockwidgets/HistogramDock.h
+++ b/src/kdefrontend/dockwidgets/HistogramDock.h
@@ -59,7 +59,6 @@ private:
 	QStringList timeStrings;
 
 	TreeViewComboBox* cbXColumn;
-	TreeViewComboBox* cbYColumn;
 	TreeViewComboBox* cbValuesColumn;
 
 	virtual void initGeneralTab();
@@ -88,7 +87,6 @@ private slots:
 	void nameChanged();
 	void commentChanged();
 	void xColumnChanged(const QModelIndex&);
-	void yColumnChanged(const QModelIndex&);
 	void visibilityChanged(bool);
 	//Histogram-types
 	//void histogramTypeChanged(int);
@@ -121,7 +119,6 @@ private slots:
 	//General-Tab
 	/*void curveDescriptionChanged(const AbstractAspect*);
 	void curveXColumnChanged(const AbstractColumn*);
-	void curveYColumnChanged(const AbstractColumn*);
 	void curveVisibilityChanged(bool);*/
 
 	//Values-Tab


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic