Git commit 58a6afd1cb0ac882891fb2724783f353474bd7eb by Anu Mittal. Committed on 31/07/2016 at 19:39. Pushed by anumittal into branch 'histogram_chart'. adding switch cases for bins option M +22 -5 src/backend/worksheet/plots/cartesian/Histogram.cpp M +3 -2 src/backend/worksheet/plots/cartesian/Histogram.h M +6 -2 src/backend/worksheet/plots/cartesian/HistogramPrivate.h M +10 -14 src/kdefrontend/dockwidgets/HistogramDock.cpp http://commits.kde.org/labplot/58a6afd1cb0ac882891fb2724783f353474bd7eb diff --git a/src/backend/worksheet/plots/cartesian/Histogram.cpp b/src/back= end/worksheet/plots/cartesian/Histogram.cpp index 69e8d21..b9eed94 100644 --- a/src/backend/worksheet/plots/cartesian/Histogram.cpp +++ b/src/backend/worksheet/plots/cartesian/Histogram.cpp @@ -89,7 +89,8 @@ void Histogram::init(){ = d->xColumn =3D NULL; = - d->histogramType =3D (Histogram::TypeHistogram) group.readEntry("histogra= mType", (int)Histogram::Ordinary); + d->histogramType =3D (Histogram::HistogramType) group.readEntry("histogra= mType", (int)Histogram::Ordinary); + d->binsOption =3D (Histogram::BinsOption) group.readEntry("binOption", (i= nt)Histogram::Number); d->lineSkipGaps =3D group.readEntry("SkipLineGaps", false); d->lineInterpolationPointsCount =3D group.readEntry("LineInterpolationPoi= ntsCount", 1); d->linePen.setStyle( (Qt::PenStyle) group.readEntry("LineStyle", (int)Qt:= :SolidLine) ); @@ -163,10 +164,14 @@ void Histogram::setPrinting(bool on) { d->m_printing =3D on; } = -void Histogram::setHistrogramType(Histogram::TypeHistogram histogramType) { +void Histogram::setHistrogramType(Histogram::HistogramType histogramType) { d_ptr->histogramType =3D histogramType; } = +void Histogram::setbinsOption(Histogram::BinsOption binsOption) { + d_ptr->binsOption =3D binsOption; +} + //########################################################################= ###### //########################## getter methods ############################= ###### //########################################################################= ###### @@ -548,8 +553,20 @@ void HistogramPrivate::updateLines(){ = double xAxisMin=3D xColumn->minimum(); double xAxisMax=3D xColumn->maximum(); - - bins =3D 10; //temprary + switch (binsOption) { + case Histogram::Number: + bins =3D (size_t)binValue; + break; + case Histogram::RiceRule: + bins =3D (size_t)2*cbrt(binValue); + break; + case Histogram::Width: + bins =3D (size_t) (xAxisMax-xAxisMin)/binValue; + break; + case Histogram::SturgisRule: + bins =3D(size_t) 1 + 3.33*log(binValue); + break; = + } = double width =3D (xAxisMax-xAxisMin)/bins; = @@ -614,7 +631,7 @@ void HistogramPrivate::updateLines(){ if (!lineSkipGaps && !connectedPointsLogical[i]) continue; lines.append(QLineF(symbolPointsLogical.at(i), symbolPointsLogical.at(= i+1))); } - = + //map the lines to scene coordinates const CartesianPlot* plot =3D dynamic_cast(q->paren= tAspect()); const AbstractCoordinateSystem* cSystem =3D plot->coordinateSystem(); diff --git a/src/backend/worksheet/plots/cartesian/Histogram.h b/src/backen= d/worksheet/plots/cartesian/Histogram.h index 404f408..287cc1e 100644 --- a/src/backend/worksheet/plots/cartesian/Histogram.h +++ b/src/backend/worksheet/plots/cartesian/Histogram.h @@ -46,7 +46,7 @@ class Histogram: public WorksheetElement { enum ValuesType {NoValues, ValuesX, ValuesY, ValuesXY, ValuesXYBracketed= , ValuesCustomColumn}; enum ValuesPosition {ValuesAbove, ValuesUnder, ValuesLeft, ValuesRight}; enum FillingPosition {NoFilling, FillingAbove, FillingBelow, FillingZero= Baseline, FillingLeft, FillingRight}; - enum TypeHistogram {Ordinary,Cummulative, AvgShift}; + enum HistogramType {Ordinary,Cummulative, AvgShift}; explicit Histogram(const QString &name); virtual ~Histogram(); = @@ -94,7 +94,8 @@ class Histogram: public WorksheetElement { virtual void setPrinting(bool on); void suppressRetransform(bool); double getYMaximum() const; - void setHistrogramType(Histogram::TypeHistogram); + void setHistrogramType(Histogram::HistogramType); + void setbinsOption(Histogram::BinsOption); = typedef WorksheetElement BaseClass; typedef HistogramPrivate Private; diff --git a/src/backend/worksheet/plots/cartesian/HistogramPrivate.h b/src= /backend/worksheet/plots/cartesian/HistogramPrivate.h index c829b5a..355eeb9 100644 --- a/src/backend/worksheet/plots/cartesian/HistogramPrivate.h +++ b/src/backend/worksheet/plots/cartesian/HistogramPrivate.h @@ -63,7 +63,8 @@ class HistogramPrivate: public QGraphicsItem { void updatePixmap(); double getYMaximum(); bool autoScaleX, autoScaleY; - Histogram::TypeHistogram histogramType; + Histogram::HistogramType histogramType; + Histogram::BinsOption binsOption; = virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget* = widget =3D 0); = @@ -103,7 +104,7 @@ class HistogramPrivate: public QGraphicsItem { qreal fillingOpacity; = QPainterPath linePath; - long long int bins; + //long long int bins; QPainterPath valuesPath; QRectF boundingRectangle; QPainterPath curveShape; @@ -130,6 +131,9 @@ class HistogramPrivate: public QGraphicsItem { = private: gsl_histogram * histogram; + size_t bins; + int binValue=3D10; + = void contextMenuEvent(QGraphicsSceneContextMenuEvent*); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*); diff --git a/src/kdefrontend/dockwidgets/HistogramDock.cpp b/src/kdefronten= d/dockwidgets/HistogramDock.cpp index 9c22996..ffbd093 100644 --- a/src/kdefrontend/dockwidgets/HistogramDock.cpp +++ b/src/kdefrontend/dockwidgets/HistogramDock.cpp @@ -107,7 +107,7 @@ HistogramDock::HistogramDock(QWidget *parent): QWidget(= parent), connect( ui.cbFillingColorStyle, SIGNAL(currentIndexChanged(int)), this, = SLOT(fillingColorStyleChanged(int)) ); connect( ui.cbFillingImageStyle, SIGNAL(currentIndexChanged(int)), this, = SLOT(fillingImageStyleChanged(int)) ); connect( ui.cbFillingBrushStyle, SIGNAL(currentIndexChanged(int)), this, = SLOT(fillingBrushStyleChanged(int)) ); - connect(ui.bFillingOpen, SIGNAL(clicked(bool)), this, SLOT(selectFile())); + connect( ui.bFillingOpen, SIGNAL(clicked(bool)), this, SLOT(selectFile())= ); connect( ui.kleFillingFileName, SIGNAL(returnPressed()), this, SLOT(fileN= ameChanged()) ); connect( ui.kleFillingFileName, SIGNAL(clearButtonClicked()), this, SLOT(= fileNameChanged()) ); connect( ui.kcbFillingFirstColor, SIGNAL(changed(QColor)), this, SLOT(fil= lingFirstColorChanged(QColor)) ); @@ -480,15 +480,6 @@ void HistogramDock::curveValuesColorChanged(QColor col= or) { ui.kcbValuesColor->setColor(color); m_initializing =3D false; } -//Values-tab -void HistogramDock::binsOptionChanged(int index){ - Histogram::BinsOption binOption =3D Histogram::BinsOption(index); - if(binOption=3D=3DHistogram::Number) - { - - } - -} /*! called when the type of the values (none, x, y, (x,y) etc.) was changed. */ @@ -671,8 +662,8 @@ void HistogramDock::curveFillingOpacityChanged(float op= acity){ void HistogramDock::initTabs() { //if there are more then one curve in the list, disable the tab "general" if (m_curvesList.size()=3D=3D1){ - /*this->setModelIndexFromColumn(cbValuesColumn, m_curve->valuesColumn()); - */}else { + this->setModelIndexFromColumn(cbValuesColumn, m_curve->valuesColumn()); + }else { cbValuesColumn->setCurrentModelIndex(QModelIndex()); } = @@ -946,14 +937,19 @@ void HistogramDock::setupGeneral() { connect( uiGeneralTab.chkVisible, SIGNAL(clicked(bool)), this, SLOT(visib= ilityChanged(bool)) ); connect( cbXColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, = SLOT(xColumnChanged(QModelIndex)) ); connect( uiGeneralTab.cbHistogramType, SIGNAL(currentIndexChanged(int)), = this, SLOT(histogramTypeChanged(int)) ); - + connect( uiGeneralTab.cbBins, SIGNAL(currentIndexChanged(int)), this, SLO= T(binsOptionChanged(int)) ); } = void HistogramDock::histogramTypeChanged(int index) { - Histogram::TypeHistogram histogramType =3D Histogram::TypeHistogram(index= ); + Histogram::HistogramType histogramType =3D Histogram::HistogramType(index= ); m_curve->setHistrogramType(histogramType); } = +void HistogramDock::binsOptionChanged(int index){ + Histogram::BinsOption binsOption =3D Histogram::BinsOption(index); + m_curve->setbinsOption(binsOption); +} + void HistogramDock::xColumnChanged(const QModelIndex& index) { = if (m_initializing)