[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