-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[FEATURE] Add a graphical histogram for the graduated renderer
This adds a new histogram tab to the graduated renderer, which shows an interactive histogram of the values from the assigned field or expression. Class breaks can be moved or added using the histogram widget. A base class, QgsHistogramWidget, has been created to display histograms for a field or expression. In future this could be used to show a histogram within a "selection statistics" panel. Sponsored by ADUGA (http://www.aduga.org)
- Loading branch information
1 parent
17962ef
commit 183286a
Showing
17 changed files
with
1,893 additions
and
550 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
|
||
/** \ingroup gui | ||
* \class QgsHistogramWidget | ||
* \brief Graphical histogram for displaying distributions of field values. | ||
* | ||
* \note Added in version 2.9 | ||
*/ | ||
|
||
class QgsHistogramWidget : QWidget | ||
{ | ||
%TypeHeaderCode | ||
#include <qgshistogramwidget.h> | ||
%End | ||
|
||
public: | ||
|
||
/** QgsHistogramWidget constructor. If layer and fieldOrExp are specified then the histogram | ||
* will be initially populated with the corresponding values. | ||
* @param parent parent widget | ||
* @param layer source vector layer | ||
* @param fieldOrExp field name or expression string | ||
*/ | ||
QgsHistogramWidget( QWidget *parent /TransferThis/ = 0, QgsVectorLayer* layer = 0, const QString& fieldOrExp = QString() ); | ||
|
||
~QgsHistogramWidget(); | ||
|
||
/** Returns the layer currently associated with the widget. | ||
* @see setLayer | ||
* @see sourceFieldExp | ||
*/ | ||
QgsVectorLayer* layer(); | ||
|
||
/** Returns the source field name or expression used to calculate values displayed | ||
* in the histogram. | ||
* @see setSourceFieldExp | ||
* @see layer | ||
*/ | ||
QString sourceFieldExp() const; | ||
|
||
/** Sets the pen to use when drawing histogram bars. If set to Qt::NoPen then the | ||
* pen will be automatically calculated. If ranges have been set using @link setGraduatedRanges @endlink | ||
* then the pen and brush will have no effect. | ||
* @param pen histogram pen | ||
* @see pen | ||
* @see setBrush | ||
*/ | ||
void setPen( const QPen& pen ); | ||
|
||
/** Returns the pen used when drawing histogram bars. | ||
* @see setPen | ||
* @see brush | ||
*/ | ||
QPen pen() const; | ||
|
||
/** Sets the brush used for drawing histogram bars. If ranges have been set using @link setGraduatedRanges @endlink | ||
* then the pen and brush will have no effect. | ||
* @param brush histogram brush | ||
* @see brush | ||
* @see setPen | ||
*/ | ||
void setBrush( const QBrush& brush ); | ||
|
||
/** Returns the brush used when drawing histogram bars. | ||
* @see setBrush | ||
* @see pen | ||
*/ | ||
QBrush brush() const; | ||
|
||
/** Sets the graduated ranges associated with the histogram. If set, the ranges will be used to colour the histogram | ||
* bars and for showing vertical dividers at the histogram breaks. | ||
* @param ranges graduated range list | ||
*/ | ||
void setGraduatedRanges( const QgsRangeList& ranges ); | ||
|
||
/** Returns the graduated ranges associated with the histogram. If set, the ranges will be used to colour the histogram | ||
* bars and for showing vertical dividers at the histogram breaks. | ||
* @returns graduated range list | ||
* @see setGraduatedRanges | ||
*/ | ||
QgsRangeList graduatedRanges() const; | ||
|
||
public slots: | ||
|
||
/** Triggers a refresh of the histogram when the widget is next repainted. | ||
*/ | ||
void refreshHistogram(); | ||
|
||
/** Sets the vector layer associated with the histogram. | ||
* @param layer source vector layer | ||
* @see setSourceFieldExp | ||
*/ | ||
void setLayer( QgsVectorLayer* layer ); | ||
|
||
/** Sets the source field or expression to use for values in the histogram. | ||
* @param fieldOrExp field name or expression string | ||
* @see setLayer | ||
*/ | ||
void setSourceFieldExp( const QString& fieldOrExp ); | ||
|
||
protected: | ||
|
||
/** Updates and redraws the histogram. | ||
*/ | ||
virtual void drawHistogram(); | ||
|
||
virtual void paintEvent( QPaintEvent * event ); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
|
||
/** \ingroup gui | ||
* \class QgsGraduatedHistogramWidget | ||
* \brief Graphical histogram for displaying distribution of field values and | ||
* editing range breaks for a QgsGraduatedSymbolRendererV2 renderer. | ||
* | ||
* \note Added in version 2.9 | ||
*/ | ||
|
||
class QgsGraduatedHistogramWidget : QWidget | ||
{ | ||
%TypeHeaderCode | ||
#include <qgsgraduatedhistogramwidget.h> | ||
%End | ||
|
||
public: | ||
|
||
/** QgsGraduatedHistogramWidget constructor | ||
* @param parent parent widget | ||
*/ | ||
QgsGraduatedHistogramWidget( QWidget *parent /TransferThis/ = 0 ); | ||
~QgsGraduatedHistogramWidget(); | ||
|
||
/** Sets the QgsGraduatedSymbolRendererV2 renderer associated with the histogram. | ||
* The histogram will fetch the ranges from the renderer before every refresh. | ||
* @param renderer associated QgsGraduatedSymbolRendererV2 | ||
*/ | ||
void setRenderer( QgsGraduatedSymbolRendererV2* renderer ); | ||
|
||
signals: | ||
|
||
/** Emitted when the user modifies the graduated ranges using the histogram widget. | ||
* @param rangesAdded true if the user has added ranges, false if the user has just | ||
* modified existing range breaks | ||
*/ | ||
void rangesModified( bool rangesAdded ); | ||
|
||
protected: | ||
|
||
virtual void drawHistogram(); | ||
|
||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.