Vespucci  1.0.0
QCPColorScale Class Reference

A color scale for use with color coding data such as QCPColorMap. More...

#include <qcustomplot.h>

Inheritance diagram for QCPColorScale:
QCPLayoutElement QCPLayerable


void dataRangeChanged (QCPRange newRange)
void dataScaleTypeChanged (QCPAxis::ScaleType scaleType)
void gradientChanged (QCPColorGradient newGradient)
- Signals inherited from QCPLayerable
void layerChanged (QCPLayer *newLayer)

Public Member Functions

 QCPColorScale (QCustomPlot *parentPlot)
virtual ~QCPColorScale ()
QCPAxisaxis () const
QCPAxis::AxisType type () const
QCPRange dataRange () const
QCPAxis::ScaleType dataScaleType () const
QCPColorGradient gradient () const
QString label () const
int barWidth () const
bool rangeDrag () const
bool rangeZoom () const
void setType (QCPAxis::AxisType type)
Q_SLOT void setDataRange (const QCPRange &dataRange)
Q_SLOT void setDataScaleType (QCPAxis::ScaleType scaleType)
Q_SLOT void setGradient (const QCPColorGradient &gradient)
void setLabel (const QString &str)
void setBarWidth (int width)
void setRangeDrag (bool enabled)
void setRangeZoom (bool enabled)
QList< QCPColorMap * > colorMaps () const
void rescaleDataRange (bool onlyVisibleMaps)
virtual void update (UpdatePhase phase)
- Public Member Functions inherited from QCPLayoutElement
 QCPLayoutElement (QCustomPlot *parentPlot=0)
virtual ~QCPLayoutElement ()
QCPLayoutlayout () const
QRect rect () const
QRect outerRect () const
QMargins margins () const
QMargins minimumMargins () const
QCP::MarginSides autoMargins () const
QSize minimumSize () const
QSize maximumSize () const
QCPMarginGroupmarginGroup (QCP::MarginSide side) const
QHash< QCP::MarginSide, QCPMarginGroup * > marginGroups () const
void setOuterRect (const QRect &rect)
void setMargins (const QMargins &margins)
void setMinimumMargins (const QMargins &margins)
void setAutoMargins (QCP::MarginSides sides)
void setMinimumSize (const QSize &size)
void setMinimumSize (int width, int height)
void setMaximumSize (const QSize &size)
void setMaximumSize (int width, int height)
void setMarginGroup (QCP::MarginSides sides, QCPMarginGroup *group)
virtual QSize minimumSizeHint () const
virtual QSize maximumSizeHint () const
virtual QList< QCPLayoutElement * > elements (bool recursive) const
virtual double selectTest (const QPointF &pos, bool onlySelectable, QVariant *details=0) const
- Public Member Functions inherited from QCPLayerable
 QCPLayerable (QCustomPlot *plot, QString targetLayer=QString(), QCPLayerable *parentLayerable=0)
 ~QCPLayerable ()
bool visible () const
QCustomPlotparentPlot () const
QCPLayerableparentLayerable () const
QCPLayerlayer () const
bool antialiased () const
void setVisible (bool on)
Q_SLOT bool setLayer (QCPLayer *layer)
bool setLayer (const QString &layerName)
void setAntialiased (bool enabled)
bool realVisibility () const

Protected Member Functions

virtual void applyDefaultAntialiasingHint (QCPPainter *painter) const
virtual void mousePressEvent (QMouseEvent *event)
virtual void mouseMoveEvent (QMouseEvent *event)
virtual void mouseReleaseEvent (QMouseEvent *event)
virtual void wheelEvent (QWheelEvent *event)
- Protected Member Functions inherited from QCPLayoutElement
virtual int calculateAutoMargin (QCP::MarginSide side)
virtual void mouseDoubleClickEvent (QMouseEvent *event)
virtual void draw (QCPPainter *painter)
virtual void parentPlotInitialized (QCustomPlot *parentPlot)
- Protected Member Functions inherited from QCPLayerable
virtual QCP::Interaction selectionCategory () const
virtual QRect clipRect () const
virtual void selectEvent (QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged)
virtual void deselectEvent (bool *selectionStateChanged)
void initializeParentPlot (QCustomPlot *parentPlot)
void setParentLayerable (QCPLayerable *parentLayerable)
bool moveToLayer (QCPLayer *layer, bool prepend)
void applyAntialiasingHint (QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const

Protected Attributes

QCPAxis::AxisType mType
QCPRange mDataRange
QCPAxis::ScaleType mDataScaleType
QCPColorGradient mGradient
int mBarWidth
QPointer< QCPColorScaleAxisRectPrivatemAxisRect
QPointer< QCPAxismColorAxis
- Protected Attributes inherited from QCPLayoutElement
QSize mMinimumSize
QSize mMaximumSize
QRect mRect
QRect mOuterRect
QMargins mMargins
QMargins mMinimumMargins
QCP::MarginSides mAutoMargins
QHash< QCP::MarginSide, QCPMarginGroup * > mMarginGroups
- Protected Attributes inherited from QCPLayerable
bool mVisible
QPointer< QCPLayerablemParentLayerable
bool mAntialiased


class QCPColorScaleAxisRectPrivate

Additional Inherited Members

- Public Types inherited from QCPLayoutElement
enum  UpdatePhase { upPreparation, upMargins, upLayout }

Detailed Description

A color scale for use with color coding data such as QCPColorMap.

This layout element can be placed on the plot to correlate a color gradient with data values. It is usually used in combination with one or multiple QCPColorMaps.


The color scale can be either horizontal or vertical, as shown in the image above. The orientation and the side where the numbers appear is controlled with setType.

Use QCPColorMap::setColorScale to connect a color map with a color scale. Once they are connected, they share their gradient, data range and data scale type (setGradient, setDataRange, setDataScaleType). Multiple color maps may be associated with a single color scale, to make them all synchronize these properties.

To have finer control over the number display and axis behaviour, you can directly access the axis. See the documentation of QCPAxis for details about configuring axes. For example, if you want to change the number of automatically generated ticks, call


Placing a color scale next to the main axis rect works like with any other layout element:

QCPColorScale *colorScale = new QCPColorScale(customPlot);
customPlot->plotLayout()->addElement(0, 1, colorScale);
colorScale->setLabel("Some Label Text");

In this case we have placed it to the right of the default axis rect, so it wasn't necessary to call setType, since QCPAxis::atRight is already the default. The text next to the color scale can be set with setLabel.

For optimum appearance (like in the image above), it may be desirable to line up the axis rect and the borders of the color scale. Use a QCPMarginGroup to achieve this:

QCPMarginGroup *group = new QCPMarginGroup(customPlot);
customPlot->axisRect()->setMarginGroup(QCP::msTop|QCP::msBottom, group);

Color scales are initialized with a non-zero minimum top and bottom margin (setMinimumMargins), because vertical color scales are most common and the minimum top/bottom margin makes sure it keeps some distance to the top/bottom widget border. So if you change to a horizontal color scale by setting setType to QCPAxis::atBottom or QCPAxis::atTop, you might want to also change the minimum margins accordingly, e.g. setMinimumMargins(QMargins(6, 0, 6, 0)).

Definition at line 2436 of file qcustomplot.h.

Constructor & Destructor Documentation

QCPColorScale::QCPColorScale ( QCustomPlot parentPlot)

Constructs a new QCPColorScale.

Definition at line 14328 of file qcustomplot.cpp.

QCPColorScale::~QCPColorScale ( )

Definition at line 14340 of file qcustomplot.cpp.

Member Function Documentation

void QCPColorScale::applyDefaultAntialiasingHint ( QCPPainter painter) const

Reimplemented from QCPLayoutElement.

Definition at line 14675 of file qcustomplot.cpp.

QCPAxis * QCPColorScale::axis ( ) const

Returns the internal QCPAxis instance of this color scale. You can access it to alter the appearance and behaviour of the axis. QCPColorScale duplicates some properties in its interface for convenience. Those are setDataRange (QCPAxis::setRange), setDataScaleType (QCPAxis::setScaleType), and the method setLabel (QCPAxis::setLabel). As they each are connected, it does not matter whether you use the method on the QCPColorScale or on its QCPAxis.

If the type of the color scale is changed with setType, the axis returned by this method will change, too, to either the left, right, bottom or top axis, depending on which type was set.

Definition at line 2454 of file qcustomplot.h.

int QCPColorScale::barWidth ( ) const

Definition at line 2460 of file qcustomplot.h.

QList< QCPColorMap * > QCPColorScale::colorMaps ( ) const

Returns a list of all the color maps associated with this color scale.

Definition at line 14561 of file qcustomplot.cpp.

QCPRange QCPColorScale::dataRange ( ) const

Definition at line 2456 of file qcustomplot.h.

void QCPColorScale::dataRangeChanged ( QCPRange  newRange)

This signal is emitted when the data range changes.

See also
QCPAxis::ScaleType QCPColorScale::dataScaleType ( ) const

Definition at line 2457 of file qcustomplot.h.

void QCPColorScale::dataScaleTypeChanged ( QCPAxis::ScaleType  scaleType)

This signal is emitted when the data scale type changes.

See also
QCPColorGradient QCPColorScale::gradient ( ) const

Definition at line 2458 of file qcustomplot.h.

void QCPColorScale::gradientChanged ( QCPColorGradient  newGradient)

This signal is emitted when the gradient changes.

See also
QString QCPColorScale::label ( ) const

Definition at line 14346 of file qcustomplot.cpp.

void QCPColorScale::mouseMoveEvent ( QMouseEvent *  event)

This event is called, if the mouse is moved inside the outer rect of this layout element.

Reimplemented from QCPLayoutElement.

Definition at line 14692 of file qcustomplot.cpp.

void QCPColorScale::mousePressEvent ( QMouseEvent *  event)

This event is called, if the mouse was pressed while being inside the outer rect of this layout element.

Reimplemented from QCPLayoutElement.

Definition at line 14681 of file qcustomplot.cpp.

void QCPColorScale::mouseReleaseEvent ( QMouseEvent *  event)

This event is called, if the mouse was previously pressed inside the outer rect of this layout element and is now released.

Reimplemented from QCPLayoutElement.

Definition at line 14703 of file qcustomplot.cpp.

bool QCPColorScale::rangeDrag ( ) const

Definition at line 14358 of file qcustomplot.cpp.

bool QCPColorScale::rangeZoom ( ) const

Definition at line 14372 of file qcustomplot.cpp.

void QCPColorScale::rescaleDataRange ( bool  onlyVisibleMaps)

Changes the data range such that all color maps associated with this color scale are fully mapped to the gradient in the data dimension.

See also

Definition at line 14579 of file qcustomplot.cpp.

void QCPColorScale::setBarWidth ( int  width)

Sets the width (or height, for horizontal color scales) the bar where the gradient is displayed will have.

Definition at line 14513 of file qcustomplot.cpp.

void QCPColorScale::setDataRange ( const QCPRange dataRange)

Sets the range spanned by the color gradient and that is shown by the axis in the color scale.

It is equivalent to calling QCPColorMap::setDataRange on any of the connected color maps. It is also equivalent to directly accessing the axis and setting its range with QCPAxis::setRange.

See also
setDataScaleType, setGradient, rescaleDataRange

Definition at line 14442 of file qcustomplot.cpp.

void QCPColorScale::setDataScaleType ( QCPAxis::ScaleType  scaleType)

Sets the scale type of the color scale, i.e. whether values are linearly associated with colors or logarithmically.

It is equivalent to calling QCPColorMap::setDataScaleType on any of the connected color maps. It is also equivalent to directly accessing the axis and setting its scale type with QCPAxis::setScaleType.

See also
setDataRange, setGradient

Definition at line 14463 of file qcustomplot.cpp.

void QCPColorScale::setGradient ( const QCPColorGradient gradient)

Sets the color gradient that will be used to represent data values.

It is equivalent to calling QCPColorMap::setGradient on any of the connected color maps.

See also
setDataRange, setDataScaleType

Definition at line 14483 of file qcustomplot.cpp.

void QCPColorScale::setLabel ( const QString &  str)

Sets the axis label of the color scale. This is equivalent to calling QCPAxis::setLabel on the internal axis.

Definition at line 14498 of file qcustomplot.cpp.

void QCPColorScale::setRangeDrag ( bool  enabled)

Sets whether the user can drag the data range (setDataRange).

Note that QCP::iRangeDrag must be in the QCustomPlot's interactions (QCustomPlot::setInteractions) to allow range dragging.

Definition at line 14524 of file qcustomplot.cpp.

void QCPColorScale::setRangeZoom ( bool  enabled)

Sets whether the user can zoom the data range (setDataRange) by scrolling the mouse wheel.

Note that QCP::iRangeZoom must be in the QCustomPlot's interactions (QCustomPlot::setInteractions) to allow range dragging.

Definition at line 14544 of file qcustomplot.cpp.

void QCPColorScale::setType ( QCPAxis::AxisType  type)

Sets at which side of the color scale the axis is placed, and thus also its orientation.

Note that after setting type to a different value, the axis returned by axis() will be a different one. The new axis will adopt the following properties from the previous axis: The range, scale type, log base and label.

Definition at line 14392 of file qcustomplot.cpp.

QCPAxis::AxisType QCPColorScale::type ( ) const

Definition at line 2455 of file qcustomplot.h.

void QCPColorScale::update ( UpdatePhase  phase)

Updates the layout element and sub-elements. This function is automatically called before every replot by the parent layout element. It is called multiple times, once for every UpdatePhase. The phases are run through in the order of the enum values. For details about what happens at the different phases, see the documentation of UpdatePhase.

Layout elements that have child elements should call the update method of their child elements, and pass the current phase unchanged.

The default implementation executes the automatic margin mechanism in the upMargins phase. Subclasses should make sure to call the base class implementation.

Reimplemented from QCPLayoutElement.

Definition at line 14639 of file qcustomplot.cpp.

void QCPColorScale::wheelEvent ( QWheelEvent *  event)

This event is called, if the mouse wheel is scrolled while the cursor is inside the rect of this layout element.

Reimplemented from QCPLayoutElement.

Definition at line 14714 of file qcustomplot.cpp.

Friends And Related Function Documentation

friend class QCPColorScaleAxisRectPrivate

Definition at line 2509 of file qcustomplot.h.

Member Data Documentation

QPointer<QCPColorScaleAxisRectPrivate> QCPColorScale::mAxisRect

Definition at line 2495 of file qcustomplot.h.

int QCPColorScale::mBarWidth

Definition at line 2492 of file qcustomplot.h.

QPointer<QCPAxis> QCPColorScale::mColorAxis

Definition at line 2496 of file qcustomplot.h.

QCPRange QCPColorScale::mDataRange

Definition at line 2489 of file qcustomplot.h.

QCPAxis::ScaleType QCPColorScale::mDataScaleType

Definition at line 2490 of file qcustomplot.h.

QCPColorGradient QCPColorScale::mGradient

Definition at line 2491 of file qcustomplot.h.

QCPAxis::AxisType QCPColorScale::mType

Definition at line 2488 of file qcustomplot.h.

The documentation for this class was generated from the following files: