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

List:       kde-commits
Subject:    [labplot/histogram_chart] src: Cummulative histogram added
From:       Anu Mittal <anu22mittal () gmail ! com>
Date:       2016-08-02 18:57:15
Message-ID: E1bUesN-0003Ia-NX () code ! kde ! org
[Download RAW message or body]

Git commit 01f46c66a15ecaacc07489684a159a66fa6f70c5 by Anu Mittal.
Committed on 02/08/2016 at 18:56.
Pushed by anumittal into branch 'histogram_chart'.

Cummulative histogram added

M  +96   -33   src/backend/worksheet/plots/cartesian/Histogram.cpp
M  +17   -14   src/kdefrontend/ui/dockwidgets/histogramdockgeneraltab.ui

http://commits.kde.org/labplot/01f46c66a15ecaacc07489684a159a66fa6f70c5

diff --git a/src/backend/worksheet/plots/cartesian/Histogram.cpp \
b/src/backend/worksheet/plots/cartesian/Histogram.cpp index b9eed94..5b3f093 100644
--- a/src/backend/worksheet/plots/cartesian/Histogram.cpp
+++ b/src/backend/worksheet/plots/cartesian/Histogram.cpp
@@ -439,8 +439,25 @@ QRectF HistogramPrivate::boundingRect() const {
 }
 double HistogramPrivate::getYMaximum() {
 	if (histogram){
-		size_t maxYAddes= gsl_histogram_max_bin(histogram);
-		return gsl_histogram_get(histogram, maxYAddes);
+		double yMaxRange=0.0;
+		switch(histogramType) {
+			case Histogram::Ordinary:
+			{
+				size_t maxYAddes= gsl_histogram_max_bin(histogram);
+				yMaxRange = gsl_histogram_get(histogram, maxYAddes);
+				break;
+			}
+			case Histogram::Cummulative:
+			{
+				yMaxRange = xColumn->rowCount();
+				break;
+			}
+			case Histogram::AvgShift:
+			{
+				//TODO
+			}
+		}
+		return yMaxRange;
 	}
 	return -INFINITY;
 }
@@ -573,57 +590,103 @@ void HistogramPrivate::updateLines(){
 	histogram = gsl_histogram_alloc (bins); // demo- number of bins
 	gsl_histogram_set_ranges_uniform (histogram, xAxisMin,xAxisMax+1);
 
-	for (int row = startRow; row <= endRow; row++ ){
-		if ( xColumn->isValid(row) && !xColumn->isMasked(row) )
-			gsl_histogram_increment(histogram,xColumn->valueAt(row));
-	}
-
 	//checking height of each column
 	/*for(int i=0;i < bins; ++i) {
 		qDebug() <<i<< " height "<< gsl_histogram_get(histogram,i);
 	}
 	*/
 	switch(histogramType) {
-		case Histogram::Ordinary:
-	for(int i=0;i < bins; ++i) {
-		tempPoint.setX(xAxisMin);
-		tempPoint.setY(0.0);
+		case Histogram::Ordinary: {
+		for (int row = startRow; row <= endRow; row++ ){
+			if ( xColumn->isValid(row) && !xColumn->isMasked(row) )
+				gsl_histogram_increment(histogram,xColumn->valueAt(row));
+		}
+		for(int i=0;i < bins; ++i) {
+			tempPoint.setX(xAxisMin);
+			tempPoint.setY(0.0);
 
-		tempPoint1.setX(xAxisMin);
-		tempPoint1.setY(gsl_histogram_get(histogram,i));
+			tempPoint1.setX(xAxisMin);
+			tempPoint1.setY(gsl_histogram_get(histogram,i));
 
-		lines.append(QLineF(tempPoint, tempPoint1));
+			lines.append(QLineF(tempPoint, tempPoint1));
 
-		tempPoint.setX(xAxisMin);
-		tempPoint.setY(gsl_histogram_get(histogram,i));
+			tempPoint.setX(xAxisMin);
+			tempPoint.setY(gsl_histogram_get(histogram,i));
 
-		tempPoint1.setX(xAxisMin+width);
-		tempPoint1.setY(gsl_histogram_get(histogram,i));
+			tempPoint1.setX(xAxisMin+width);
+			tempPoint1.setY(gsl_histogram_get(histogram,i));
 
-		lines.append(QLineF(tempPoint,tempPoint1));
+			lines.append(QLineF(tempPoint,tempPoint1));
 
-		tempPoint.setX(xAxisMin+width);
-		tempPoint.setY(gsl_histogram_get(histogram,i));
+			tempPoint.setX(xAxisMin+width);
+			tempPoint.setY(gsl_histogram_get(histogram,i));
 
-		tempPoint1.setX(xAxisMin+width);
-		tempPoint1.setY(0.0);
+			tempPoint1.setX(xAxisMin+width);
+			tempPoint1.setY(0.0);
 
-		lines.append(QLineF(tempPoint, tempPoint1));
+			lines.append(QLineF(tempPoint, tempPoint1));
 
-		tempPoint.setX(xAxisMin+width);
-		tempPoint.setY(0.0);
+			tempPoint.setX(xAxisMin+width);
+			tempPoint.setY(0.0);
+		
+			tempPoint1.setX(xAxisMin);
+			tempPoint1.setY(0.0);
 
-		tempPoint1.setX(xAxisMin);
-		tempPoint1.setY(0.0);
+			lines.append(QLineF(tempPoint, tempPoint1));
+			xAxisMin+= width;
+			}
+		break;
+		}
+		case Histogram::Cummulative: {
+		double point =0.0;
+		for (int row = startRow; row <= endRow; row++ ){
+			if ( xColumn->isValid(row) && !xColumn->isMasked(row))
+				{ 
+					gsl_histogram_increment(histogram,xColumn->valueAt(row));
+				}
+			}
+			for(int i=0;i < bins; ++i) {
+				point+= gsl_histogram_get(histogram,i);
+				tempPoint.setX(xAxisMin);
+				tempPoint.setY(0.0);
 
-		lines.append(QLineF(tempPoint, tempPoint1));
-		xAxisMin+= width;
-	}
-	break;
-		case Histogram::Cummulative:
+				tempPoint1.setX(xAxisMin);
+				tempPoint1.setY(point);
+
+				lines.append(QLineF(tempPoint, tempPoint1));
+
+				tempPoint.setX(xAxisMin);
+				tempPoint.setY(point);
+
+				tempPoint1.setX(xAxisMin+width);
+				tempPoint1.setY(point);
+
+				lines.append(QLineF(tempPoint,tempPoint1));
+
+				tempPoint.setX(xAxisMin+width);
+				tempPoint.setY(point);
+
+				tempPoint1.setX(xAxisMin+width);
+				tempPoint1.setY(0.0);
+
+				lines.append(QLineF(tempPoint, tempPoint1));
+
+				tempPoint.setX(xAxisMin+width);
+				tempPoint.setY(0.0);
+
+				tempPoint1.setX(xAxisMin);
+				tempPoint1.setY(0.0);
+
+				lines.append(QLineF(tempPoint, tempPoint1));
+				xAxisMin+= width;
+			}		
 			break;
+		}
 		case Histogram::AvgShift:
+		{
+			//TODO
 			break;
+		}
 	}
 
 	//calculate the lines connecting the data points
diff --git a/src/kdefrontend/ui/dockwidgets/histogramdockgeneraltab.ui \
b/src/kdefrontend/ui/dockwidgets/histogramdockgeneraltab.ui index 8cce06c..990ec05 \
                100644
--- a/src/kdefrontend/ui/dockwidgets/histogramdockgeneraltab.ui
+++ b/src/kdefrontend/ui/dockwidgets/histogramdockgeneraltab.ui
@@ -85,10 +85,10 @@
      </property>
     </widget>
    </item>
-   <item row="10" column="0">
-    <widget class="QCheckBox" name="chkVisible">
+   <item row="7" column="0">
+    <widget class="QLabel" name="lHistogramColour">
      <property name="text">
-      <string>visible</string>
+      <string>Color</string>
      </property>
     </widget>
    </item>
@@ -99,14 +99,14 @@
      </property>
     </widget>
    </item>
-   <item row="6" column="0">
-    <widget class="QLabel" name="lHistogramColour">
+   <item row="11" column="0">
+    <widget class="QCheckBox" name="chkVisible">
      <property name="text">
-      <string>Color</string>
+      <string>visible</string>
      </property>
     </widget>
    </item>
-   <item row="6" column="2">
+   <item row="7" column="2">
     <widget class="KColorButton" name="kcbLineColor">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@@ -116,7 +116,10 @@
      </property>
     </widget>
    </item>
-   <item row="9" column="0">
+   <item row="9" column="2">
+    <widget class="QComboBox" name="cbHistogramType"/>
+   </item>
+   <item row="10" column="0">
     <spacer name="verticalSpacerGeneral">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
@@ -145,10 +148,10 @@
      </property>
     </widget>
    </item>
-   <item row="8" column="2">
-    <widget class="QComboBox" name="cbHistogramType"/>
+   <item row="5" column="2">
+    <widget class="QComboBox" name="cbBins"/>
    </item>
-   <item row="8" column="0">
+   <item row="9" column="0">
     <widget class="QLabel" name="lType">
      <property name="font">
       <font>
@@ -161,7 +164,7 @@
      </property>
     </widget>
    </item>
-   <item row="7" column="0">
+   <item row="8" column="0">
     <spacer name="verticalSpacerHT">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
@@ -177,8 +180,8 @@
      </property>
     </spacer>
    </item>
-   <item row="5" column="2">
-    <widget class="QComboBox" name="cbBins"/>
+   <item row="6" column="2">
+    <widget class="QLineEdit" name="leBins"/>
    </item>
   </layout>
  </widget>


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

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