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

List:       kde-commits
Subject:    [labplot/histogram_chart] src: adding switch cases for bins option
From:       Anu Mittal <anu22mittal () gmail ! com>
Date:       2016-07-31 19:40:43
Message-ID: E1bTwbL-0003EQ-3O () code ! kde ! org
[Download RAW message or body]

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/backend/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 = NULL;
 
-	d->histogramType = (Histogram::TypeHistogram) group.readEntry("histogramType", \
(int)Histogram::Ordinary); +	d->histogramType = (Histogram::HistogramType) \
group.readEntry("histogramType", (int)Histogram::Ordinary); +	d->binsOption = \
(Histogram::BinsOption) group.readEntry("binOption", (int)Histogram::Number);  \
d->lineSkipGaps = group.readEntry("SkipLineGaps", false);  \
d->lineInterpolationPointsCount = group.readEntry("LineInterpolationPointsCount", 1); \
d->linePen.setStyle( (Qt::PenStyle) group.readEntry("LineStyle", (int)Qt::SolidLine) \
); @@ -163,10 +164,14 @@ void Histogram::setPrinting(bool on) {
 	d->m_printing = on;
 }
 
-void Histogram::setHistrogramType(Histogram::TypeHistogram histogramType) {
+void Histogram::setHistrogramType(Histogram::HistogramType histogramType) {
 	d_ptr->histogramType = histogramType;
 }
 
+void Histogram::setbinsOption(Histogram::BinsOption binsOption) {
+	d_ptr->binsOption = binsOption;
+}
+
 //##############################################################################
 //##########################  getter methods  ##################################
 //##############################################################################
@@ -548,8 +553,20 @@ void HistogramPrivate::updateLines(){
 
 	double xAxisMin= xColumn->minimum();
 	double xAxisMax= xColumn->maximum();
-
-	bins = 10; //temprary
+	switch (binsOption) {
+		case Histogram::Number:
+			bins = (size_t)binValue;
+			break;
+		case Histogram::RiceRule:
+			bins = (size_t)2*cbrt(binValue);
+			break;
+		case Histogram::Width:
+			bins = (size_t) (xAxisMax-xAxisMin)/binValue;
+			break;
+		case Histogram::SturgisRule:
+			bins =(size_t) 1 + 3.33*log(binValue);
+			break;	
+	}
 
 	double width = (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 = dynamic_cast<const CartesianPlot*>(q->parentAspect());
 	const AbstractCoordinateSystem* cSystem = plot->coordinateSystem();
diff --git a/src/backend/worksheet/plots/cartesian/Histogram.h \
b/src/backend/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, \
                FillingZeroBaseline, 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 = \
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=10;
+		
         void contextMenuEvent(QGraphicsSceneContextMenuEvent*);
 		virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*);
 		virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*);
diff --git a/src/kdefrontend/dockwidgets/HistogramDock.cpp \
b/src/kdefrontend/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(fileNameChanged()) );  connect( ui.kleFillingFileName, \
SIGNAL(clearButtonClicked()), this, SLOT(fileNameChanged()) );  connect( \
ui.kcbFillingFirstColor, SIGNAL(changed(QColor)), this, \
SLOT(fillingFirstColorChanged(QColor)) ); @@ -480,15 +480,6 @@ void \
HistogramDock::curveValuesColorChanged(QColor color) {  \
ui.kcbValuesColor->setColor(color);  m_initializing = false;
 }
-//Values-tab
-void HistogramDock::binsOptionChanged(int index){
-	Histogram::BinsOption binOption = Histogram::BinsOption(index);
-	if(binOption==Histogram::Number)
-	{
-
-	}
-
-}
 /*!
   called when the type of the values (none, x, y, (x,y) etc.) was changed.
 */
@@ -671,8 +662,8 @@ void HistogramDock::curveFillingOpacityChanged(float opacity){
 void HistogramDock::initTabs() {
 	//if there are more then one curve in the list, disable the tab "general"
 	if (m_curvesList.size()==1){
-		/*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(visibilityChanged(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, \
SLOT(binsOptionChanged(int)) );  }
 
 void HistogramDock::histogramTypeChanged(int index) {
-	Histogram::TypeHistogram histogramType = Histogram::TypeHistogram(index);
+	Histogram::HistogramType histogramType = Histogram::HistogramType(index);
 	m_curve->setHistrogramType(histogramType);
 }
 
+void HistogramDock::binsOptionChanged(int index){
+	Histogram::BinsOption binsOption = Histogram::BinsOption(index);
+	m_curve->setbinsOption(binsOption);
+}
+
 void HistogramDock::xColumnChanged(const QModelIndex& index) {
 
 	if (m_initializing)


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

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