[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