# Qwt User's Guide: QwtPlotSpectrogram Class Reference

QwtPlotSpectrogram Class Reference

A plot item, which displays a spectrogram. More...

`#include <qwt_plot_spectrogram.h>`

Inheritance diagram for QwtPlotSpectrogram:

## Public Types

enum | DisplayMode { ImageMode = 0x01 , ContourMode = 0x02 }
typedef QFlags< DisplayMode > | DisplayModes
Public Types inherited from QwtPlotRasterItem
enum | CachePolicy { NoCache , PaintCache }
| Cache policy The default policy is NoCache. More...
enum | PaintAttribute { PaintInDeviceResolution = 1 }
typedef QFlags< PaintAttribute > | PaintAttributes
Public Types inherited from QwtPlotItem

enum

RttiValues {
Rtti_PlotItem = 0 , Rtti_PlotGrid , Rtti_PlotScale , Rtti_PlotLegend ,
Rtti_PlotMarker , Rtti_PlotCurve , Rtti_PlotSpectroCurve , Rtti_PlotIntervalCurve ,
Rtti_PlotHistogram , Rtti_PlotSpectrogram , Rtti_PlotGraphic , Rtti_PlotTradingCurve ,
Rtti_PlotBarChart , Rtti_PlotMultiBarChart , Rtti_PlotShape , Rtti_PlotTextLabel ,
Rtti_PlotZone , Rtti_PlotVectorField , Rtti_PlotUserItem = 1000
}

| Runtime type information. More...
enum | ItemAttribute { Legend = 0x01 , AutoScale = 0x02 , Margins = 0x04 }
| Plot Item Attributes. More...
enum | ItemInterest { ScaleInterest = 0x01 , LegendInterest = 0x02 }
| Plot Item Interests. More...
enum | RenderHint { RenderAntialiased = 0x1 }
| Render hints. More...
typedef QFlags< ItemAttribute > | ItemAttributes
typedef QFlags< ItemInterest > | ItemInterests
typedef QFlags< RenderHint > | RenderHints

## Public Member Functions

| QwtPlotSpectrogram (const QString &title=QString())
virtual | ~QwtPlotSpectrogram ()
| Destructor.
void | setDisplayMode (DisplayMode, bool on=true)
bool | testDisplayMode (DisplayMode) const
void | setData (QwtRasterData *data)
const QwtRasterData * | data () const
QwtRasterData * | data ()
void | setColorMap (QwtColorMap *)
const QwtColorMap * | colorMap () const
void | setColorTableSize (int numColors)
int | colorTableSize () const
virtual QwtInterval | interval (Qt::Axis) const override
virtual QRectF | pixelHint (const QRectF &) const override
| Pixel hint. More...
void | setDefaultContourPen (const QColor &, qreal width=0.0, Qt::PenStyle=Qt::SolidLine)
void | setDefaultContourPen (const QPen &)
| Set the default pen for the contour lines. More...
QPen | defaultContourPen () const
virtual QPen | contourPen (double level) const
| Calculate the pen for a contour line. More...
void | setConrecFlag (QwtRasterData::ConrecFlag, bool on)
bool | testConrecFlag (QwtRasterData::ConrecFlag) const
void | setContourLevels (const QList< double > &)
QList< double > | contourLevels () const
virtual int | rtti () const override
virtual void | draw (QPainter *, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect) const override
| Draw the spectrogram. More...
Public Member Functions inherited from QwtPlotRasterItem
| QwtPlotRasterItem (const QString &title=QString())
| Constructor.
| QwtPlotRasterItem (const QwtText &title)
| Constructor.
virtual | ~QwtPlotRasterItem ()
| Destructor.
void | setPaintAttribute (PaintAttribute, bool on=true)
bool | testPaintAttribute (PaintAttribute) const
void | setAlpha (int alpha)
| Set an alpha value for the raster data. More...
int | alpha () const
void | setCachePolicy (CachePolicy)
CachePolicy | cachePolicy () const
void | invalidateCache ()
virtual QRectF | boundingRect () const override
Public Member Functions inherited from QwtPlotItem
| QwtPlotItem ()
| QwtPlotItem (const QString &title)
| QwtPlotItem (const QwtText &title)
virtual | ~QwtPlotItem ()
| Destroy the QwtPlotItem.
void | attach (QwtPlot *plot)
| Attach the item to a plot. More...
void | detach ()
| This method detaches a QwtPlotItem from any QwtPlot it has been associated with. More...
QwtPlot * | plot () const
| Return attached plot.
void | setTitle (const QString &title)
void | setTitle (const QwtText &title)
const QwtText & | title () const
void | setItemAttribute (ItemAttribute, bool on=true)
bool | testItemAttribute (ItemAttribute) const
void | setItemInterest (ItemInterest, bool on=true)
bool | testItemInterest (ItemInterest) const
void | setRenderHint (RenderHint, bool on=true)
bool | testRenderHint (RenderHint) const
void | setRenderThreadCount (uint numThreads)
uint | renderThreadCount () const
void | setLegendIconSize (const QSize &)
QSize | legendIconSize () const
double | z () const
void | setZ (double z)
| Set the z value. More...
void | show ()
| Show the item.
void | hide ()
| Hide the item.
virtual void | setVisible (bool)
bool | isVisible () const
void | setAxes (QwtAxisId xAxis, QwtAxisId yAxis)
void | setXAxis (QwtAxisId)
QwtAxisId | xAxis () const
| Return xAxis.
void | setYAxis (QwtAxisId)
QwtAxisId | yAxis () const
| Return yAxis.
virtual void | itemChanged ()
virtual void | legendChanged ()
virtual void | getCanvasMarginHint (const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, double &left, double &top, double &right, double &bottom) const
| Calculate a hint for the canvas margin. More...
virtual void | updateScaleDiv (const QwtScaleDiv &, const QwtScaleDiv &)
| Update the item to changes of the axes scale division. More...
virtual void | updateLegend (const QwtPlotItem *, const QList< QwtLegendData > &)
| Update the item to changes of the legend info. More...
QRectF | scaleRect (const QwtScaleMap &, const QwtScaleMap &) const
| Calculate the bounding scale rectangle of 2 maps. More...
QRectF | paintRect (const QwtScaleMap &, const QwtScaleMap &) const
| Calculate the bounding paint rectangle of 2 maps. More...
virtual QList< QwtLegendData > | legendData () const
| Return all information, that is needed to represent the item on the legend. More...
virtual QwtGraphic | legendIcon (int index, const QSizeF &) const

## Protected Member Functions

virtual QImage | renderImage (const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &area, const QSize &imageSize) const override
| Render an image from data and color map. More...
virtual QSize | contourRasterSize (const QRectF &, const QRect &) const
| Return the raster to be used by the CONREC contour algorithm. More...
virtual QwtRasterData::ContourLines | renderContourLines (const QRectF &rect, const QSize &raster) const
virtual void | drawContourLines (QPainter *, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QwtRasterData::ContourLines &) const
void | renderTile (const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRect &tile, QImage *) const
| Render a tile of an image. More...
Protected Member Functions inherited from QwtPlotRasterItem
virtual QwtScaleMap | imageMap (Qt::Orientation, const QwtScaleMap &map, const QRectF &area, const QSize &imageSize, double pixelSize) const
| Calculate a scale map for painting to an image. More...
Protected Member Functions inherited from QwtPlotItem
QwtGraphic | defaultIcon (const QBrush &, const QSizeF &) const
| Return a default icon from a brush. More...

## Detailed Description

A plot item, which displays a spectrogram.

A spectrogram displays 3-dimensional data, where the 3rd dimension ( the intensity ) is displayed using colors. The colors are calculated from the values using a color map.

On multi-core systems the performance of the image composition can often be improved by dividing the area into tiles - each of them rendered in a different thread ( see QwtPlotItem::setRenderThreadCount() ).

In ContourMode contour lines are painted for the contour levels.

See also
  QwtRasterData, QwtColorMap, QwtPlotItem::setRenderThreadCount()

Definition at line 36 of file qwt_plot_spectrogram.h.

## Member Typedef Documentation

## DisplayModes

typedef QFlags<DisplayMode > QwtPlotSpectrogram::DisplayModes

An ORed combination of DisplayMode values.

Definition at line 53 of file qwt_plot_spectrogram.h.

## Member Enumeration Documentation

## DisplayMode

enum QwtPlotSpectrogram::DisplayMode

The display mode controls how the raster data will be represented.

See also
  setDisplayMode(), testDisplayMode()

Enumerator
ImageMode | The values are mapped to colors using a color map.
ContourMode | The data is displayed using contour lines.

Definition at line 44 of file qwt_plot_spectrogram.h.

## Constructor & Destructor Documentation

## QwtPlotSpectrogram()

QwtPlotSpectrogram::QwtPlotSpectrogram | ( | const QString & | title = `QString()` | ) |

explicit

Sets the following item attributes:

- QwtPlotItem::AutoScale: true
- QwtPlotItem::Legend: false

The z value is initialized by 8.0.

Parameters

  title | Title

See also
  QwtPlotItem::setItemAttribute(), QwtPlotItem::setZ()

Definition at line 108 of file qwt_plot_spectrogram.cpp.

## Member Function Documentation

## colorMap()

const QwtColorMap * QwtPlotSpectrogram::colorMap | ( |  | ) | const

Returns
  Color Map used for mapping the intensity values to colors

See also
  setColorMap()

Definition at line 200 of file qwt_plot_spectrogram.cpp.

## colorTableSize()

int QwtPlotSpectrogram::colorTableSize | ( |  | ) | const

Returns
  Size of the color table, 0 means not using a color table

See also
  QwtColorMap::colorTable(), setColorTableSize()

Definition at line 238 of file qwt_plot_spectrogram.cpp.

## contourLevels()

QList< double > QwtPlotSpectrogram::contourLevels | ( |  | ) | const

Returns
  Levels of the contour lines.

The levels are sorted in increasing order.

See also
  contourLevels(), renderContourLines(), QwtRasterData::contourLines()

Definition at line 382 of file qwt_plot_spectrogram.cpp.

## contourPen()

QPen QwtPlotSpectrogram::contourPen | ( | double | level | ) | const

virtual

Calculate the pen for a contour line.

The color of the pen is the color for level calculated by the color map

Parameters

  level | Contour level

Returns
  Pen for the contour line

Note
  contourPen is only used if defaultContourPen().style() == Qt::NoPen

See also
  setDefaultContourPen(), setColorMap(), setContourLevels()

Definition at line 303 of file qwt_plot_spectrogram.cpp.

## contourRasterSize()

QSize QwtPlotSpectrogram::contourRasterSize | ( | const QRectF & | area,
|  | const QRect & | rect
| ) |  | const

protectedvirtual

Return the raster to be used by the CONREC contour algorithm.

A larger size will improve the precision of the CONREC algorithm, but will slow down the time that is needed to calculate the lines.

The default implementation returns rect.size() / 2 bounded to the resolution depending on pixelSize().

Parameters

  area | Rectangle, where to calculate the contour lines
  rect | Rectangle in pixel coordinates, where to paint the contour lines

Returns
  Raster to be used by the CONREC contour algorithm.

Note
  The size will be bounded to rect.size().

See also
  drawContourLines(), QwtRasterData::contourLines()

Definition at line 663 of file qwt_plot_spectrogram.cpp.

## data() [1/2]

QwtRasterData * QwtPlotSpectrogram::data | ( |  | ) |

Returns
  Spectrogram data

See also
  setData()

Definition at line 418 of file qwt_plot_spectrogram.cpp.

## data() [2/2]

const QwtRasterData * QwtPlotSpectrogram::data | ( |  | ) | const

Returns
  Spectrogram data

See also
  setData()

Definition at line 409 of file qwt_plot_spectrogram.cpp.

## defaultContourPen()

QPen QwtPlotSpectrogram::defaultContourPen | ( |  | ) | const

Returns
  Default contour pen

See also
  setDefaultContourPen()

Definition at line 287 of file qwt_plot_spectrogram.cpp.

## draw()

void QwtPlotSpectrogram::draw | ( | QPainter * | painter,
|  | const QwtScaleMap & | xMap,
|  | const QwtScaleMap & | yMap,
|  | const QRectF & | canvasRect
| ) |  | const

overridevirtual

Draw the spectrogram.

Parameters

  painter | Painter
  xMap | Maps x-values into pixel coordinates.
  yMap | Maps y-values into pixel coordinates.
  canvasRect | Contents rectangle of the canvas in painter coordinates

See also
  setDisplayMode(), renderImage(), QwtPlotRasterItem::draw(), drawContourLines()

Reimplemented from QwtPlotRasterItem.

Definition at line 754 of file qwt_plot_spectrogram.cpp.

## drawContourLines()

void QwtPlotSpectrogram::drawContourLines | ( | QPainter * | painter,
|  | const QwtScaleMap & | xMap,
|  | const QwtScaleMap & | yMap,
|  | const QwtRasterData::ContourLines & | contourLines
| ) |  | const

protectedvirtual

Paint the contour lines

Parameters

  painter | Painter
  xMap | Maps x-values into pixel coordinates.
  yMap | Maps y-values into pixel coordinates.
  contourLines | Contour lines

See also
  renderContourLines(), defaultContourPen(), contourPen()

Definition at line 709 of file qwt_plot_spectrogram.cpp.

## interval()

QwtInterval QwtPlotSpectrogram::interval | ( | Qt::Axis | axis | ) | const

overridevirtual

Returns
  Bounding interval for an axis

The default implementation returns the interval of the associated raster data object.

Parameters

  axis | X, Y, or Z axis

See also
  QwtRasterData::interval()

Reimplemented from QwtPlotRasterItem.

Definition at line 432 of file qwt_plot_spectrogram.cpp.

## pixelHint()

QRectF QwtPlotSpectrogram::pixelHint | ( | const QRectF & | area | ) | const

overridevirtual

Pixel hint.

The geometry of a pixel is used to calculated the resolution and alignment of the rendered image.

The default implementation returns data()->pixelHint( rect );

Parameters

  area | In most implementations the resolution of the data doesn't depend on the requested area.

Returns
  Bounding rectangle of a pixel

See also
  QwtPlotRasterItem::pixelHint(), QwtRasterData::pixelHint(), render(), renderImage()

Reimplemented from QwtPlotRasterItem.

Definition at line 456 of file qwt_plot_spectrogram.cpp.

## renderContourLines()

QwtRasterData::ContourLines QwtPlotSpectrogram::renderContourLines | ( | const QRectF & | rect,
|  | const QSize & | raster
| ) |  | const

protectedvirtual

Calculate contour lines

Parameters

  rect | Rectangle, where to calculate the contour lines
  raster | Raster, used by the CONREC algorithm

Returns
  Calculated contour lines

See also
  contourLevels(), setConrecFlag(), QwtRasterData::contourLines()

Definition at line 689 of file qwt_plot_spectrogram.cpp.

## renderImage()

QImage QwtPlotSpectrogram::renderImage | ( | const QwtScaleMap & | xMap,
|  | const QwtScaleMap & | yMap,
|  | const QRectF & | area,
|  | const QSize & | imageSize
| ) |  | const

overrideprotectedvirtual

Render an image from data and color map.

For each pixel of area the value is mapped into a color.

Parameters

  xMap | X-Scale Map
  yMap | Y-Scale Map
  area | Requested area for the image in scale coordinates
  imageSize | Size of the requested image

Returns
  A QImage::Format_Indexed8 or QImage::Format_ARGB32 depending on the color map.

See also
  QwtRasterData::value(), QwtColorMap::rgb(), QwtColorMap::colorIndex()

Implements QwtPlotRasterItem.

Definition at line 480 of file qwt_plot_spectrogram.cpp.

## renderTile()

void QwtPlotSpectrogram::renderTile | ( | const QwtScaleMap & | xMap,
|  | const QwtScaleMap & | yMap,
|  | const QRect & | tile,
|  | QImage * | image
| ) |  | const

protected

Render a tile of an image.

Rendering in tiles can be used to composite an image in parallel threads.

Parameters

  xMap | X-Scale Map
  yMap | Y-Scale Map
  tile | Geometry of the tile in image coordinates
  image | Image to be rendered

Definition at line 572 of file qwt_plot_spectrogram.cpp.

## rtti()

int QwtPlotSpectrogram::rtti | ( |  | ) | const

overridevirtual

Returns
  QwtPlotItem::Rtti_PlotSpectrogram

Reimplemented from QwtPlotItem.

Definition at line 126 of file qwt_plot_spectrogram.cpp.

## setColorMap()

void QwtPlotSpectrogram::setColorMap | ( | QwtColorMap * | colorMap | ) |

Change the color map

Often it is useful to display the mapping between intensities and colors as an additional plot axis, showing a color bar.

Parameters

  colorMap | Color Map

See also
  colorMap(), QwtScaleWidget::setColorBarEnabled(), QwtScaleWidget::setColorMap()

Definition at line 177 of file qwt_plot_spectrogram.cpp.

## setColorTableSize()

void QwtPlotSpectrogram::setColorTableSize | ( | int | numColors | ) |

Limit the number of colors being used by the color map

When using a color table the mapping from the value into a color is usually faster as it can be done by simple lookups into a precalculated color table.

Setting a table size > 0 enables using a color table, while setting the size to 0 disables it.

The default size = 0, and no color table is used.

Parameters

  numColors | Number of colors. 0 means not using a color table

Note
  The colorTableSize has no effect when using a color table of QwtColorMap::Indexed, where the size is always 256.

See also
  QwtColorMap::colorTable(), colorTableSize()

Definition at line 224 of file qwt_plot_spectrogram.cpp.

## setConrecFlag()

void QwtPlotSpectrogram::setConrecFlag | ( | QwtRasterData::ConrecFlag | flag,
|  | bool | on
| ) |  |

Modify an attribute of the CONREC algorithm, used to calculate the contour lines.

Parameters

  flag | CONREC flag
  on | On/Off

See also
  testConrecFlag(), renderContourLines(), QwtRasterData::contourLines()

Definition at line 324 of file qwt_plot_spectrogram.cpp.

## setContourLevels()

void QwtPlotSpectrogram::setContourLevels | ( | const QList< double > & | levels | ) |

Set the levels of the contour lines

Parameters

  levels | Values of the contour levels

See also
  contourLevels(), renderContourLines(), QwtRasterData::contourLines()

Note
  contourLevels returns the same levels but sorted.

Definition at line 365 of file qwt_plot_spectrogram.cpp.

## setData()

void QwtPlotSpectrogram::setData | ( | QwtRasterData * | data | ) |

Set the data to be displayed

Parameters

  data | Spectrogram Data

See also
  data()

Definition at line 393 of file qwt_plot_spectrogram.cpp.

## setDefaultContourPen() [1/2]

void QwtPlotSpectrogram::setDefaultContourPen | ( | const QColor & | color,
|  | qreal | width = `0.0`,
|  | Qt::PenStyle | style = `Qt::SolidLine`
| ) |  |

Build and assign the default pen for the contour lines

In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic ( see QPen::isCosmetic() ). This method has been introduced to hide this incompatibility.

Parameters

  color | Pen color
  width | Pen width
  style | Pen style

See also
  pen(), brush()

Definition at line 256 of file qwt_plot_spectrogram.cpp.

## setDefaultContourPen() [2/2]

void QwtPlotSpectrogram::setDefaultContourPen | ( | const QPen & | pen | ) |

Set the default pen for the contour lines.

If the spectrogram has a valid default contour pen a contour line is painted using the default contour pen. Otherwise (pen.style() == Qt::NoPen) the pen is calculated for each contour level using contourPen().

See also
  defaultContourPen(), contourPen()

Definition at line 272 of file qwt_plot_spectrogram.cpp.

## setDisplayMode()

void QwtPlotSpectrogram::setDisplayMode | ( | DisplayMode | mode,
|  | bool | on = `true`
| ) |  |

The display mode controls how the raster data will be represented.

Parameters

  mode | Display mode
  on | On/Off

The default setting enables ImageMode.

See also
  DisplayMode, displayMode()

Definition at line 141 of file qwt_plot_spectrogram.cpp.

## testConrecFlag()

bool QwtPlotSpectrogram::testConrecFlag | ( | QwtRasterData::ConrecFlag | flag | ) | const

Test an attribute of the CONREC algorithm, used to calculate the contour lines.

Parameters

  flag | CONREC flag

Returns
  true, is enabled

The default setting enables QwtRasterData::IgnoreAllVerticesOnLevel

See also
  setConrecClag(), renderContourLines(), QwtRasterData::contourLines()

Definition at line 350 of file qwt_plot_spectrogram.cpp.

## testDisplayMode()

bool QwtPlotSpectrogram::testDisplayMode | ( | DisplayMode | mode | ) | const

The display mode controls how the raster data will be represented.

Parameters

  mode | Display mode

Returns
  true if mode is enabled

Definition at line 161 of file qwt_plot_spectrogram.cpp.