JKQTPlotter trunk/v5.0.0
an extensive Qt5+Qt6 Plotter framework (including a feature-richt plotter widget, a speed-optimized, but limited variant and a LaTeX equation renderer!), written fully in C/C++ and without external dependencies
Loading...
Searching...
No Matches

class for a contour plot More...

#include <jkqtpcontour.h>

Inheritance diagram for JKQTPContourPlot:
[legend]
Collaboration diagram for JKQTPContourPlot:
[legend]

Public Types

enum  ContourColoringMode {
  SingleColorContours ,
  ColorContoursFromPaletteByValue ,
  ColorContoursFromPalette
}
 options of how the colors for the contours are chosen (note that all images in the documentation show the same graph, just with different coloring modes!) More...
 
- Public Types inherited from JKQTPPlotElement
enum  HitTestMode {
  HitTestXY ,
  HitTestXOnly ,
  HitTestYOnly
}
 modes of operation for the function hitTest() More...
 

Public Member Functions

 JKQTPContourPlot (JKQTBasePlotter *parent=nullptr)
 class constructor
 
 JKQTPContourPlot (JKQTPlotter *parent)
 class constructor
 
void addContourLevel (double level)
 add another level for which to draw a contour
 
void addContourLevel (double level, QColor overrideColor)
 add another level for which to draw a contour and define an override color for this line
 
void clearCachedContours ()
 overrides the caching strategy and forces a recalculation of the contours
 
void clearContourLevel ()
 clear all currently defined contour levels
 
void createContourLevels (int nLevels=3)
 creates at nLevels contour levels linearly spaced between the data's minimum and maximum values
 
void createContourLevelsLog (int nLevels=3, int m=2)
 creates at least nLevels contour levels with logarithmic spacing. FIXME: Has not been tested yet
 
virtual void draw (JKQTPEnhancedPainter &painter) override
 plots the graph to the plotter object specified as parent
 
ContourColoringMode getContourColoringMode () const
 defines how the colors for the contours are chosen
 
QVector< double > getContourLevels () const
 the list of contour levels
 
bool getIgnoreOnPlane () const
 if true, vertices that all lie on the contour plane will be ignored
 
int getNumberOfLevels () const
 the list of contour levels
 
QColor getOverrideColor (int level) const
 returns the override color for contour level level
 
bool getRelativeLevels () const
 indicates wether the contour levels are absolute values or relative to the maximum (max-min)
 
bool hasOverrideColor (int level) const
 returns the override color for contour level level
 
void removeOverrideColor (int level)
 removes the override color for contour level level
 
void setContourColoringMode (ContourColoringMode __value)
 defines how the colors for the contours are chosen
 
template<class TContainer >
void setContourLevels (const TContainer &levels)
 sets new contour levels from a container levels
 
template<class TContainer , class TColorContainer >
void setContourLevels (const TContainer &levels, const TColorContainer &colors)
 sets new contour levels from a container levels
 
void setIgnoreOnPlane (bool __value)
 if true, vertices that all lie on the contour plane will be ignored
 
void setOverrideColor (double level, QColor overrideColor)
 define an override color for the contour line at the given level
 
void setRelativeLevels (bool __value)
 indicates wether the contour levels are absolute values or relative to the maximum (max-min)
 
- Public Member Functions inherited from JKQTPMathImage
 JKQTPMathImage (double x, double y, double width, double height, JKQTPMathImageDataType datatype, const void *data, int Nx, int Ny, JKQTPMathImageColorPalette palette, JKQTPlotter *parent)
 class constructor
 
 JKQTPMathImage (double x, double y, double width, double height, JKQTPMathImageDataType datatype, const void *data, int Nx, int Ny, JKQTPMathImageColorPalette palette=JKQTPMathImageGRAY, JKQTBasePlotter *parent=nullptr)
 class constructor
 
 JKQTPMathImage (JKQTBasePlotter *parent=nullptr)
 class constructor
 
 JKQTPMathImage (JKQTPlotter *parent)
 class constructor
 
virtual void cbGetDataMinMax (double &imin, double &imax) override
 determine min/max data value of the image
 
virtual void cbGetModifierDataMinMax (double &imin, double &imax) override
 determine min/max data value of the modifier image
 
virtual QImage drawImage ()
 return the plotted image only as a QImage

 
virtual void drawKeyMarker (JKQTPEnhancedPainter &painter, const QRectF &rect) override
 plots a key marker inside the specified rectangle rect
 
virtual void drawOutside (JKQTPEnhancedPainter &painter, QRect leftSpace, QRect rightSpace, QRect topSpace, QRect bottomSpace) override
 plots outside the actual plot field of view (e.g. color bars, scale bars, ...)
 
virtual QImage drawOutsidePalette (uint8_t steps=200)
 returns a QImage, which contains the plaette drawn outside the plot. steps is the number of data-setps (and the size of the output image) used for the palette image.

 
virtual void getDataMinMax (double &imin, double &imax) override
 determine min/max data value of the image
 
double getModifierPixelValue (int xIdx, int yIdx) const
 retrieve modifier image data at a given position as double
 
int getModifierSampleSize () const
 retrieve size of a single sample in the modifier image data (i.e. size of the datatype)
 
double getModifierValueAt (double x, double y)
 return the value (raw data!) of the contained modifier image at the given coordinate
 
virtual void getOutsideSize (JKQTPEnhancedPainter &painter, int &leftSpace, int &rightSpace, int &topSpace, int &bottomSpace) override
 if the graph plots outside the actual plot field of view (e.g. color bars, scale bars, ...)
 
double getPixelValue (int xIdx, int yIdx) const
 retrieve image data at a given position as double
 
int getSampleSize () const
 retrieve size of a single sample in the image data (i.e. size of the datatype)
 
double getValueAt (double x, double y)
 return the value (raw data!) of the contained image at the given coordinate
 
virtual void setParent (JKQTBasePlotter *parent) override
 sets the parent painter class
 
virtual void setTitle (const QString &title) override
 sets the title of the plot (for display in key!).
 
- Public Member Functions inherited from JKQTPMathImageBase
 JKQTPMathImageBase (double x, double y, double width, double height, JKQTBasePlotter *parent=nullptr)
 class constructor
 
 JKQTPMathImageBase (double x, double y, double width, double height, JKQTPlotter *parent=nullptr)
 class constructor
 
 JKQTPMathImageBase (double x, double y, double width, double height, JKQTPMathImageDataType datatype, const void *data, int Nx, int Ny, JKQTBasePlotter *parent=nullptr)
 class constructor
 
 JKQTPMathImageBase (double x, double y, double width, double height, JKQTPMathImageDataType datatype, const void *data, int Nx, int Ny, JKQTPlotter *parent)
 class constructor
 
 JKQTPMathImageBase (JKQTBasePlotter *parent=nullptr)
 class constructor
 
 JKQTPMathImageBase (JKQTPlotter *parent)
 class constructor
 
virtual const void * getData () const
 points to the data array, holding the image
 
QVector< double > getDataAsDoubleVector () const
 returns the contents of the internal data image as a QVector<double>
 
virtual const void * getDataModifier () const
 points to the data array, holding the modifier image
 
QVector< double > getDataModifierAsDoubleVector () const
 returns the contents of the internal modifier image as a QVector<double>
 
virtual JKQTPMathImageDataType getDatatype () const
 datatype of the data array data
 
virtual JKQTPMathImageDataType getDatatypeModifier () const
 datatype of the data array data
 
int getNx () const
 width of the data array data in pt
 
int getNy () const
 height of the data array data in pt
 
virtual void setData (const void *__value)
 points to the data array, holding the image
 
virtual void setData (const void *data, int Nx, int Ny)
 sets data ( points to the data array, holding the image ), as well as the size of data (Nx: width of the data array data in pt and Ny: height of the data array data in pt )
 
virtual void setData (const void *data, int Nx, int Ny, JKQTPMathImageDataType datatype)
 sets data ( points to the data array, holding the image ) and datatype ( datatype of the data array data ), as well as the size of data (Nx: width of the data array data in pt and Ny: height of the data array data in pt )
 
virtual void setDataModifier (const void *__value)
 points to the data array, holding the modifier image
 
virtual void setDataModifier (const void *data, JKQTPMathImageDataType datatype)
 sets dataModifier ( points to the data array, holding the modifier image ) and datatypeModifier ( datatype of the data array data )
 
virtual void setDatatype (JKQTPMathImageDataType __value)
 datatype of the data array data
 
virtual void setDatatypeModifier (JKQTPMathImageDataType __value)
 datatype of the data array data
 
void setNx (int __value)
 width of the data array data in pt
 
void setNx (size_t __value)
 width of the data array data in pt
 
void setNy (int __value)
 height of the data array data in pt
 
void setNy (size_t __value)
 height of the data array data in pt
 
- Public Member Functions inherited from JKQTPImageBase
 JKQTPImageBase (double x, double y, double width, double height, JKQTBasePlotter *parent=nullptr)
 class constructor
 
 JKQTPImageBase (double x, double y, double width, double height, JKQTPlotter *parent)
 class constructor
 
 JKQTPImageBase (JKQTBasePlotter *parent=nullptr)
 class constructor
 
 JKQTPImageBase (JKQTPlotter *parent)
 class constructor
 
double getHeight () const
 height of image
 
virtual QColor getKeyLabelColor () const override
 returns the color to be used for the key label
 
double getWidth () const
 width of image
 
double getX () const
 x coordinate of lower left corner
 
virtual bool getXMinMax (double &minx, double &maxx, double &smallestGreaterZero) override
 get the maximum and minimum x-value of the graph
 
double getY () const
 y coordinate of lower left corner
 
virtual bool getYMinMax (double &miny, double &maxy, double &smallestGreaterZero) override
 get the maximum and minimum y-value of the graph
 
- Public Member Functions inherited from JKQTPGraph
 JKQTPGraph (JKQTBasePlotter *parent=nullptr)
 class constructor
 
virtual ~JKQTPGraph ()=default
 default wirtual destructor
 
virtual bool usesColumn (int column) const
 returns true if the given column is used by the graph
 
- Public Member Functions inherited from JKQTPPlotElement
 JKQTPPlotElement (JKQTBasePlotter *parent=nullptr)
 class constructor
 
virtual ~JKQTPPlotElement ()=default
 default wirtual destructor
 
QPointF backTransform (const QPointF &x) const
 tool routine that back-transforms a QPointF according to the parent's transformation rules (pixels --> plot coordinate)
 
QPointF backTransform (double x, double y) const
 tool routine that back-transforms a QPointF according to the parent's transformation rules (pixels --> plot coordinate)
 
double backtransformX (double x) const
 tool routine that backtransforms an x-coordinate (pixels --> plot coordinate) for this plot element, uses the axis referenced in xAxisRef
 
double backtransformY (double y) const
 tool routine that backtransforms a y-coordinate (pixels --> plot coordinate) for this plot element, uses the axis referenced in yAxisRef
 
QImage generateKeyMarker (QSize size=QSize(16, 16))
 returns an image with a key marker inside

 
JKQTBasePlottergetParent ()
 returns the parent painter class
 
const JKQTBasePlottergetParent () const
 returns the parent painter class
 
QString getTitle () const
 returns the the title of the plot

 
const JKQTPCoordinateAxisgetXAxis () const
 returns the actual x-Axis-object from the parent plotter, referenced in xAxisRef
 
JKQTPCoordinateAxisRef getXAxisRef () const
 indicates which coordinate axis to use for coordinate transforms in x-direction
 
const JKQTPCoordinateAxisgetYAxis () const
 returns the actual y-Axis-object from the parent plotter, referenced in yAxisRef
 
JKQTPCoordinateAxisRef getYAxisRef () const
 indicates which coordinate axis to use for coordinate transforms in y-direction
 
virtual double hitTest (const QPointF &posSystem, QPointF *closestSpotSystem=nullptr, QString *label=nullptr, HitTestMode mode=HitTestXY) const
 returns the closest distance of the plot element to the (screen pixel) position pos, or NAN
 
bool isHighlighted () const
 returns whether the graph is shown in a highlighted style in the plot

 
bool isVisible () const
 returns whether the graph is visible in the plot

 
void setAxes (JKQTPCoordinateAxisRef ref)
 set the coordinate axes to use for this plot element
 
virtual void setParent (JKQTPlotter *parent)
 sets the parent painter class
 
void setXAxis (JKQTPCoordinateAxisRef ref)
 indicates which coordinate axis to use for coordinate transforms in x-direction
 
void setYAxis (JKQTPCoordinateAxisRef ref)
 indicates which coordinate axis to use for coordinate transforms in y-direction
 
QPointF transform (const QPointF &x) const
 tool routine that transforms a QPointF according to the parent's transformation rules (plot coordinate --> pixels)
 
QPolygonF transform (const QPolygonF &x) const
 tool routine that transforms a QPolygonF according to the parent's transformation rules (plot coordinate --> pixels)
 
QPointF transform (double x, double y) const
 tool routine that transforms a QPointF according to the parent's transformation rules (plot coordinate --> pixels)
 
QPainterPath transformToLinePath (const QPolygonF &x) const
 tool routine that transforms a QPolygonF according to the parent's transformation rules and returns a (non-closed) path consisting of lines (plot coordinate --> pixels)
 
QVector< double > transformX (const QVector< double > &x) const
 transform all x-coordinates in a vector x
 
double transformX (double x) const
 tool routine that transforms an x-coordinate (plot coordinate --> pixels) for this plot element, uses the axis referenced in xAxisRef
 
QVector< double > transformY (const QVector< double > &x) const
 transform all y-coordinates in a vector x
 
double transformY (double y) const
 tool routine that transforms a y-coordinate (plot coordinate --> pixels) for this plot element, uses the axis referenced in yAxisRef
 
- Public Member Functions inherited from JKQTPColorPaletteWithModifierStyleAndToolsMixin
 JKQTPColorPaletteWithModifierStyleAndToolsMixin (JKQTBasePlotter *parent)
 
virtual ~JKQTPColorPaletteWithModifierStyleAndToolsMixin ()=default
 
virtual void cbDrawOutside (JKQTPEnhancedPainter &painter, QRect leftSpace, QRect rightSpace, QRect topSpace, QRect bottomSpace) override
 plots outside the actual plot field of view (e.g. color bars, scale bars, ...)
 
virtual void cbGetOutsideSize (JKQTPEnhancedPainter &painter, int &leftSpace, int &rightSpace, int &topSpace, int &bottomSpace) override
 if the graph plots outside the actual plot field of view (e.g. color bars, scale bars, ...)
 
virtual void cbSetParent (JKQTBasePlotter *parent) override
 set the parent class for internal objects (e.g. color bars)
 
bool getAutoModifierRange () const
 indicates whether to estimate min/max of the modifier automatically
 
double getColorBarModifiedWidth () const
 width of the color bar when modifier is on
 
JKQTPHorizontalIndependentAxisgetModifierColorBarRightAxis ()
 object used for color bar axes (top border, modifier image data)
 
const JKQTPHorizontalIndependentAxisgetModifierColorBarRightAxis () const
 object used for color bar axes (top border, modifier image data)
 
JKQTPVerticalIndependentAxisgetModifierColorBarTopAxis ()
 object used for color bar axes (right border, modifier image data)
 
const JKQTPVerticalIndependentAxisgetModifierColorBarTopAxis () const
 object used for color bar axes (right border, modifier image data)
 
double getModifierMax () const
 modifier value range maximum
 
double getModifierMin () const
 modifier value range minimum
 
JKQTPMathImageModifierMode getModifierMode () const
 how to apply the modifier column dataModifier
 
void modifyImage (QImage &img, const void *dataModifier, JKQTPMathImageDataType datatypeModifier, int Nx, int Ny, double internalModifierMin, double internalModifierMax)
 modify the given image img, using modifier image dataModifier (of type datatypeModifier and size Nx * Ny), using values in the range internalModifierMin ... internalModifierMax
 
void setAutoModifierRange (bool __value)
 indicates whether to estimate min/max of the modifier automatically
 
void setColorBarModifiedWidth (double __value)
 width of the color bar when modifier is on
 
void setModifierMax (double __value)
 modifier value range maximum
 
void setModifierMin (double __value)
 modifier value range minimum
 
void setModifierMode (const JKQTPMathImageModifierMode &__value)
 how to apply the modifier column dataModifier
 
- Public Member Functions inherited from JKQTPColorPaletteStyleAndToolsMixin
 JKQTPColorPaletteStyleAndToolsMixin (JKQTBasePlotter *parent)
 
virtual ~JKQTPColorPaletteStyleAndToolsMixin ()
 
JKQTPMathImageColorRangeFailAction getActionRangeMaxFail () const
 which action to take if a color is above imageMax and autoImageRange ==false
 
JKQTPMathImageColorRangeFailAction getActionRangeMinFail () const
 which action to take if a color is below imageMin and autoImageRange ==false
 
bool getAutoImageRange () const
 indicates whether to estimate min/max of the image automatically
 
int getColorBarOffset () const
 offset between outside space border and color bar
 
double getColorBarRelativeHeight () const
 height of the color bar, as multiple of plotHeight
 
JKQTPVerticalIndependentAxisgetColorBarRightAxis ()
 object used for color bar axes at the right
 
const JKQTPVerticalIndependentAxisgetColorBarRightAxis () const
 object used for color bar axes at the right
 
bool getColorBarRightVisible () const
 right color bar visible
 
JKQTPHorizontalIndependentAxisgetColorBarTopAxis ()
 object used for color bar axes at the top
 
const JKQTPHorizontalIndependentAxisgetColorBarTopAxis () const
 object used for color bar axes at the top
 
bool getColorBarTopVisible () const
 top color bar visible
 
int getColorBarWidth () const
 width of the color bar
 
JKQTPMathImageColorPalette getColorPalette () const
 palette for plotting an image
 
double getImageMax () const
 image value range maximum
 
double getImageMin () const
 image value range minimum
 
QString getImageName () const
 name of the image displayed above color bar (may contain LaTeX markup!)
 
QString getImageNameFontName () const
 font name when displaying imageName
 
double getImageNameFontSize () const
 font size in points when displaying imageName
 
QColor getInfColor () const
 color to use for an infinity value
 
QColor getNanColor () const
 color to use for a not-a-number value
 
QColor getRangeMaxFailColor () const
 color to use for some settings of rangeMaxFailAction
 
QColor getRangeMinFailColor () const
 color to use for some settings of rangeMinFailAction
 
bool getShowColorBar () const
 indicate whether to display a color bar
 
void setAutoImageRange (bool __value)
 indicates whether to estimate min/max of the image automatically
 
void setColorBarOffset (int __value)
 offset between outside space border and color bar
 
void setColorBarRelativeHeight (double __value)
 height of the color bar, as multiple of plotHeight
 
void setColorBarRightVisible (bool __value)
 right color bar visible
 
void setColorBarTopVisible (bool __value)
 top color bar visible
 
void setColorBarWidth (int __value)
 width of the color bar
 
void setColorPalette (const JKQTPMathImageColorPalette &__value)
 palette for plotting an image
 
void setColorPalette (int pal)
 palette for plotting an image
 
void setImageMax (double __value)
 image value range maximum
 
void setImageMin (double __value)
 image value range minimum
 
void setImageName (const QString &__value)
 name of the image displayed above color bar (may contain LaTeX markup!)
 
void setImageNameFontName (const QString &__value)
 font name when displaying imageName
 
void setImageNameFontSize (double __value)
 font size in points when displaying imageName
 
void setInfColor (const QColor &__value)
 color to use for an infinity value
 
void setNanColor (const QColor &__value)
 color to use for a not-a-number value
 
void setRangeMaxFailAction (const JKQTPMathImageColorRangeFailAction &__value)
 which action to take if a color is above imageMax and autoImageRange ==false
 
void setRangeMaxFailColor (const QColor &__value)
 color to use for some settings of rangeMaxFailAction
 
void setRangeMinFailAction (const JKQTPMathImageColorRangeFailAction &__value)
 which action to take if a color is below imageMin and autoImageRange ==false
 
void setRangeMinFailColor (const QColor &__value)
 color to use for some settings of rangeMinFailAction
 
void setShowColorBar (bool __value)
 indicate whether to display a color bar
 
- Public Member Functions inherited from JKQTPGraphLineStyleMixin
 JKQTPGraphLineStyleMixin ()
 class constructor
 
virtual ~JKQTPGraphLineStyleMixin ()
 
QColor getHighlightingLineColor () const
 get the color of the graph line when highlighted
 
QPen getHighlightingLinePen (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const
 constructs a QPen from the line styling properties
 
QPen getHighlightingLinePenForRects (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const
 constructs a QPen from the line styling properties, suitable for drawing rectangle with sharp corners
 
QPen getKeyLinePen (JKQTPEnhancedPainter &painter, const QRectF &rect, JKQTBasePlotter *parent) const
 constructs a QPen from the line styling properties, but uses getKeyLineWidthPx() for the width, i.e. constructs a pen for drawing lines in key-symbols
 
double getKeyLineWidthPx (JKQTPEnhancedPainter &painter, const QRectF &keyRect, const JKQTBasePlotter *parent) const
 returns the linewidth for drawing lines in a key entry with keyRect for the symbol, using painter and parent .
 
QBrush getLineBrush () const
 gets the brush used to fill the line area
 
Qt::PenCapStyle getLineCapStyle () const
 gets the cap style
 
QColor getLineColor () const
 get the color of the graph line
 
qreal getLineDashOffset () const
 returns the dash offset for a custom dash style
 
QVector< qreal > getLineDashPattern () const
 gets the dash pattern for a custom dash style
 
Qt::PenJoinStyle getLineJoinStyle () const
 returns the join style
 
QPen getLinePen (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const
 constructs a QPen from the line styling properties
 
QPen getLinePenForRects (JKQTPEnhancedPainter &painter, JKQTBasePlotter *parent) const
 constructs a QPen from the line styling properties, suitable for drawing rectangles with sharp edges
 
Qt::PenStyle getLineStyle () const
 get the style of the graph line
 
double getLineWidth () const
 get the line width of the graph line (in pt)
 
void initLineStyle (JKQTBasePlotter *parent, int &parentPlotStyle, JKQTPPlotStyleType styletype=JKQTPPlotStyleType::Default)
 initiaize the line style (from the parent plotter)
 
void setHighlightingLineColor (const QColor &__value)
 set the color of the graph line when highlighted
 
void setHighlightingLineColor (const QColor &__value, double alpha)
 set the color of the graph line when highlighted
 
void setLineBrush (const QBrush &style)
 sets the brush used to fill the line area
 
void setLineCapStyle (Qt::PenCapStyle style)
 sets the cap style
 
void setLineColor (const QColor &__value)
 set the color of the graph line
 
void setLineColor (const QColor &__value, double alpha)
 set the color of the graph line
 
void setLineColorInvertedFrom (QColor __noninvertedColor)
 sets the line-color as an inverted version of the given color
 
void setLineDashOffset (qreal offset)
 sets the dash offset for a custom dash style
 
void setLineDashPattern (const QVector< qreal > &pattern)
 sets the dash pattern for a custom dash style
 
void setLineJoinStyle (Qt::PenJoinStyle style)
 sets the join style
 
void setLineStyle (Qt::PenStyle __value)
 set the style of the graph line
 
void setLineWidth (double __value)
 set the line width of the graph line (in pt)
 

Protected Member Functions

virtual void getModifierMinMax (double &imin, double &imax) override
 determine min/max data value of the image
 
double getModifierPixelValue (int xIdx, int yIdx) const
 retrieve modifier image data at a given position as double
 
int getModifierSampleSize () const
 retrieve size of a single sample in the modifier image data (i.e. size of the datatype)
 
double getModifierValueAt (double x, double y)
 return the value (raw data!) of the contained modifier image at the given coordinate
 
- Protected Member Functions inherited from JKQTPMathImage
void initJKQTPMathImage ()
 
- Protected Member Functions inherited from JKQTPMathImageBase
virtual void ensureImageData ()
 overwrite this to fill the data poiters before they are accessed (e.g. to load data from a column in the datastore
 
- Protected Member Functions inherited from JKQTPImageBase
void plotImage (JKQTPEnhancedPainter &painter, QImage &image, double x, double y, double width, double height)
 plot the given QImage onto the widget where the QImage fills the area defined by x, y (lower left corner) and width, height in the simplest case your implementation of draw() will call plotImage(painter, image, this->x, this->y, this->width, this->height);
 
- Protected Member Functions inherited from JKQTPGraph
virtual void drawErrorsAfter (JKQTPEnhancedPainter &)
 this function is used to plot error inidcators after plotting the graphs.
 
virtual void drawErrorsBefore (JKQTPEnhancedPainter &)
 this function is used to plot error inidcators before plotting the graphs.
 
bool getDataMinMax (int column, double &minx, double &maxx, double &smallestGreaterZero)
 get the maximum and minimum value of the given column
 
- Protected Member Functions inherited from JKQTPPlotElement
void addHitTestData (const HitTestLocation &loc)
 clear the internal datastore for hitTest()
 
void addHitTestData (const QPointF &pos_, const QString &label_)
 clear the internal datastore for hitTest()
 
void addHitTestData (const QPointF &pos_, int index_, const QString &label_)
 clear the internal datastore for hitTest()
 
void addHitTestData (const QPointF &pos_, int index_=-1, const JKQTPDatastore *datastore=nullptr)
 clear the internal datastore for hitTest(), this variant uses formatHitTestDefaultLabel() to auto-generate the label
 
void addHitTestData (double x_, double y_, const QString &label_)
 add a new point on the graph to the internal datastore for hitTest()
 
void addHitTestData (double x_, double y_, int index_, const QString &label_)
 clear the internal datastore for hitTest()
 
void addHitTestData (double x_, double y_, int index_=-1, const JKQTPDatastore *datastore=nullptr)
 add a new point on the graph to the internal datastore for hitTest(), this variant uses formatHitTestDefaultLabel() to auto-generate the label
 
void clearHitTestData ()
 clear the internal datastore for hitTest()
 
virtual QString formatHitTestDefaultLabel (double x, double y, int index=-1, const JKQTPDatastore *datastore=nullptr) const
 tool-function for hitTest(), which formats a default label, taking into account the x- and y-position (both provided) and optionally the errors of these positions.
 
void reserveHitTestData (int points)
 reserve list entries for up to points graph points in the internal datastore for hitTest()
 
QString xFloatToString (double v, int past_comma=-1) const
 converts a x-value v into a string, taking into account the type of x-axis
 
QString yFloatToString (double v, int past_comma=-1) const
 converts a x-value v into a string, taking into account the type of x-axis
 

Protected Attributes

ContourColoringMode contourColoringMode
 defines how the colors for the contours are chosen
 
QVector< double > contourLevels
 the list of contour levels
 
QMap< double, QColor > contourOverrideColor
 override contour level colors for specific levels, when contourColoringMode==SingleColorContours
 
bool ignoreOnPlane
 if true, vertices that all lie on the contour plane will be ignored
 
bool relativeLevels
 indicates wether the contour levels are absolute values or relative to the maximum (max-min)
 
- Protected Attributes inherited from JKQTPMathImage
QAction * actCopyImage
 QActions that copies the image into the clipboard.
 
QAction * actCopyPalette
 QActions that copies the current palette.
 
QAction * actSaveImage
 QActions that saves the image (asking the user for a filename)
 
QAction * actSavePalette
 QActions that saves the current palette.
 
- Protected Attributes inherited from JKQTPMathImageBase
const void * data
 points to the data array, holding the image
 
const void * dataModifier
 points to the data array, holding the modifier image
 
JKQTPMathImageDataType datatype
 datatype of the data array data
 
JKQTPMathImageDataType datatypeModifier
 datatype of the data array data
 
double internalDataMax
 internal storage for maximum of the image value range
 
double internalDataMin
 internal storage for minimum of the image value range
 
double internalModifierMax
 internal storage for maximum of the modifier image value range
 
double internalModifierMin
 internal storage for minimum of the modifier image value range
 
int Nx
 width of the data array data in pt
 
int Ny
 height of the data array data in pt
 
- Protected Attributes inherited from JKQTPImageBase
double height
 height of image
 
double width
 width of image
 
double x
 x coordinate of lower left corner
 
double y
 y coordinate of lower left corner
 
- Protected Attributes inherited from JKQTPPlotElement
QVector< HitTestLocationm_hitTestData
 dataset with graph-points and associated data from the function hitTest()
 
JKQTBasePlotterparent
 the plotter object this object belongs to
 
int parentPlotStyle
 internal storage for the used parent plot style
 
- Protected Attributes inherited from JKQTPColorPaletteWithModifierStyleAndToolsMixin
bool autoModifierRange
 indicates whether to estimate min/max of the modifier automatically
 
double colorBarModifiedWidth
 width of the color bar when modifier is on
 
JKQTPHorizontalIndependentAxismodifierColorBarRightAxis
 object used for color bar axes (top border, modifier image data)
 
JKQTPVerticalIndependentAxismodifierColorBarTopAxis
 object used for color bar axes (right border, modifier image data)
 
double modifierMax
 modifier value range maximum
 
double modifierMin
 modifier value range minimum
 
JKQTPMathImageModifierMode modifierMode
 how to apply the modifier column dataModifier
 
- Protected Attributes inherited from JKQTPColorPaletteStyleAndToolsMixin
bool autoImageRange
 indicates whether to estimate min/max of the image automatically
 
JKQTBasePlottercbParent
 
int colorBarOffset
 offset between outside space border and color bar
 
double colorBarRelativeHeight
 height of the color bar, as multiple of plotHeight
 
JKQTPVerticalIndependentAxiscolorBarRightAxis
 object used for color bar axes at the right
 
bool colorBarRightVisible
 right color bar visible
 
JKQTPHorizontalIndependentAxiscolorBarTopAxis
 object used for color bar axes at the top
 
bool colorBarTopVisible
 top color bar visible
 
int colorBarWidth
 width of the color bar
 
double imageMax
 image value range maximum
 
double imageMin
 image value range minimum
 
QString imageName
 name of the image displayed above color bar (may contain LaTeX markup!)
 
QString imageNameFontName
 font name when displaying imageName
 
double imageNameFontSize
 font size in points when displaying imageName
 
QColor infColor
 color to use for an infinity value
 
QColor nanColor
 color to use for a not-a-number value
 
JKQTPMathImageColorPalette palette
 palette for plotting an image
 
JKQTPMathImageColorRangeFailAction rangeMaxFailAction
 which action to take if a color is above imageMax and autoImageRange ==false
 
QColor rangeMaxFailColor
 color to use for some settings of rangeMaxFailAction
 
JKQTPMathImageColorRangeFailAction rangeMinFailAction
 which action to take if a color is below imageMin and autoImageRange ==false
 
QColor rangeMinFailColor
 color to use for some settings of rangeMinFailAction
 
bool showColorBar
 indicate whether to display a color bar
 

Private Member Functions

void calcContourLines (QList< QVector< QLineF > > &ContourLines)
 calcContourLines calculates the contour lines using the CONREC algorithm
 
int compare2level (const QVector3D &vertex, float level) const
 compare2level checks if the vertex lies above, under or on the contour plane level
 
QPointF interpolatePoint (const QVector3D &point1, const QVector3D &point2, double level) const
 interpolatePoint linear interpolation of a line to the x-y plane using the z-value relative to level
 
bool intersect (QLineF &line, const QVector3D &vertex1, const QVector3D &vertex2, const QVector3D &vertex3, double level) const
 gives the intersection line of a plane defined by three vertices with a contour level in the x-y plane of heigth level
 

Private Attributes

QList< QVector< QPolygonF > > contourLinesCache
 For Caching: the contour lines as vector of single lines (one for each triangle). the list index refers to the contour level.
 
int64_t contourLinesCachedForChecksum
 if (>=0) checksum of the column for which contours were cached in contourLinesCache
 

Additional Inherited Members

- Public Slots inherited from JKQTPMathImage
void copyColorbarPlotAsImage ()
 copies an image of the current palette into the clipboard
 
void copyImagePlotAsImage ()
 copies the image into the clipboard
 
void saveColorbarPlotAsImage (const QString &filename=QString(""), const QByteArray &outputFormat=QByteArray())
 saves an image of the current palette (asking the user for a filename, if filename is empty)
 
void saveImagePlotAsImage (const QString &filename=QString(""), const QByteArray &outputFormat=QByteArray())
 saves the image (asking the user for a filename, if filename is empty)
 
- Public Slots inherited from JKQTPImageBase
void setHeight (double __value)
 height of image
 
void setWidth (double __value)
 width of image
 
void setX (double __value)
 x coordinate of lower left corner
 
void setY (double __value)
 y coordinate of lower left corner
 
- Public Slots inherited from JKQTPPlotElement
void setHighlighted (bool __value)
 sets whether the graph is drawn in a highlighted style in the plot

 
void setVisible (bool __value)
 sets whether the graph is visible in the plot

 
- Static Public Member Functions inherited from JKQTPColorPaletteStyleAndToolsMixin
static QIcon getPaletteIcon (int i)
 get QIcon representing the given palette

 
static QIcon getPaletteIcon (JKQTPMathImageColorPalette palette)
 get QIcon representing the given palette

 
static QImage getPaletteImage (int i, size_t width)
 get QIcon representing the given palette

 
static QImage getPaletteImage (JKQTPMathImageColorPalette palette, size_t width)
 get QIcon representing the given palette

 
static QIcon getPaletteKeyIcon (int i)
 get QIcon representing the given palette

 
static QIcon getPaletteKeyIcon (JKQTPMathImageColorPalette palette)
 get QIcon representing the given palette

 
static QImage getPaletteKeyImage (int i, size_t width, size_t height)
 get QIcon representing the given palette

 
static QImage getPaletteKeyImage (JKQTPMathImageColorPalette palette, size_t width, size_t height)
 get QIcon representing the given palette

 
static QStringList getPalettes ()
 get list with all available palettes

 
static int getPalettesCount ()
 get list with all available palettes

 
- Properties inherited from JKQTPPlotElement
bool highlighted
 indicates whether the graph is shown in a "highlghted" in the plot
 
QString title
 title of the plot (for display in key!). If no title is supplied, no key entry is drawn.
 
bool visible
 indicates whether the graph is visible in the plot
 
JKQTPCoordinateAxisRef xAxisRef
 indicates which coordinate axis to use for coordinate transforms in x-direction
 
JKQTPCoordinateAxisRef yAxisRef
 indicates which coordinate axis to use for coordinate transforms in y-direction
 
- Properties inherited from JKQTPGraphLineStyleMixin
QColor highlightingLineColor
 
QColor lineColor
 
Qt::PenStyle lineStyle
 
double lineWidth
 

Detailed Description

class for a contour plot

This class calculates the contour plot for a given image $ f(x,y) $ , i.e. it finds the iso lines/polygons, connecting all neighboring points $ \{(x,y)|f(x,y)\equiv L_i\} $ that equal a given set of contour levels $ \{L_i\} $ .

For its calculations, this class implements the CONREC algorithm (see http://paulbourke.net/papers/conrec/).

In order to use this class, you first have to set an image column with the data for this plot and then define several contour levels for which to plot the contour lines. See Example (JKQTPlotter): Contour Plots for a detailed example!

Note
Although this class is derived from JKQTPColumnMathImage, which supports a modifier to the data, (see JKQTPColumnMathImage::modifierColumn), these features do not make sense for a contour plot and are not used here. The access functions are hidden in this class, but may be accessible via a down-cast! Still they do not have any effect on the plotted graph!
See also
See Example (JKQTPlotter): Contour Plots for a detailed example. See https://en.wikipedia.org/wiki/Contour_line for details on Contour Lines and Plots. The implementation for Qt is adapted from Qwt: http://qwt.sourceforge.net/
Author
Sebastian Isbaner (2013-2014) & Jan Krieger (2019)
Note
This class uses a caching strategy to determine whether contour lines need to be recalculated (which is time-consuming): Whenever contours have been calculated, these contours are stored in the member contourLinesCache and can then be used for redrawing. In addition the checksum of the data column is stored in contourLinesCachedForChecksum. On every redraw, the checksum is recalculated and compared to the value in contourLinesCachedForChecksum. If it matches, no recalculation is necessary. If it doesn't match, the contours are recalculated. In addition several methods that change certain properties of the plot will force a recalculation. Finally you can call clearCachedContours() to force a recalculation!

Member Enumeration Documentation

◆ ContourColoringMode

options of how the colors for the contours are chosen (note that all images in the documentation show the same graph, just with different coloring modes!)

Enumerator
SingleColorContours 

each contour line has the same color

ColorContoursFromPaletteByValue 

the color for each contour line is determined by the current color palette, image range and the value associated with each contour line

ColorContoursFromPalette 

the color for each contour line is chosen from the current color palette, distributing the contour lines evenly over the palette, wirhout any connection to the value associated with each contour line

Constructor & Destructor Documentation

◆ JKQTPContourPlot() [1/2]

JKQTPContourPlot::JKQTPContourPlot ( JKQTBasePlotter parent = nullptr)

class constructor

◆ JKQTPContourPlot() [2/2]

JKQTPContourPlot::JKQTPContourPlot ( JKQTPlotter parent)

class constructor

Member Function Documentation

◆ addContourLevel() [1/2]

void JKQTPContourPlot::addContourLevel ( double  level)

add another level for which to draw a contour

See also
setOverrideColor(), addContourLevel(), hasOverrideColor(), removeOverrideColor(), getOverrideColor()

◆ addContourLevel() [2/2]

void JKQTPContourPlot::addContourLevel ( double  level,
QColor  overrideColor 
)

add another level for which to draw a contour and define an override color for this line

See also
setOverrideColor(), addContourLevel(), hasOverrideColor(), removeOverrideColor(), getOverrideColor()

◆ calcContourLines()

void JKQTPContourPlot::calcContourLines ( QList< QVector< QLineF > > &  ContourLines)
private

calcContourLines calculates the contour lines using the CONREC algorithm

◆ clearCachedContours()

void JKQTPContourPlot::clearCachedContours ( )

overrides the caching strategy and forces a recalculation of the contours

◆ clearContourLevel()

void JKQTPContourPlot::clearContourLevel ( )

clear all currently defined contour levels

◆ compare2level()

int JKQTPContourPlot::compare2level ( const QVector3D &  vertex,
float  level 
) const
inlineprivate

compare2level checks if the vertex lies above, under or on the contour plane level

Parameters
vertex
levelcontour plane
Returns
above (1), on the plane (0), below (-1);

◆ createContourLevels()

void JKQTPContourPlot::createContourLevels ( int  nLevels = 3)

creates at nLevels contour levels linearly spaced between the data's minimum and maximum values

◆ createContourLevelsLog()

void JKQTPContourPlot::createContourLevelsLog ( int  nLevels = 3,
int  m = 2 
)

creates at least nLevels contour levels with logarithmic spacing. FIXME: Has not been tested yet

◆ draw()

virtual void JKQTPContourPlot::draw ( JKQTPEnhancedPainter painter)
overridevirtual

plots the graph to the plotter object specified as parent

Reimplemented from JKQTPMathImage.

◆ getContourColoringMode()

ContourColoringMode JKQTPContourPlot::getContourColoringMode ( ) const

defines how the colors for the contours are chosen

◆ getContourLevels()

QVector< double > JKQTPContourPlot::getContourLevels ( ) const

the list of contour levels

◆ getIgnoreOnPlane()

bool JKQTPContourPlot::getIgnoreOnPlane ( ) const

if true, vertices that all lie on the contour plane will be ignored

◆ getModifierMinMax()

virtual void JKQTPMathImage::getModifierMinMax ( double &  imin,
double &  imax 
)
overrideprotectedvirtual

determine min/max data value of the image

Reimplemented from JKQTPMathImage.

◆ getModifierPixelValue()

double JKQTPMathImage::getModifierPixelValue ( int  xIdx,
int  yIdx 
) const
inlineprotected

retrieve modifier image data at a given position as double

◆ getModifierSampleSize()

int JKQTPMathImage::getModifierSampleSize ( ) const
inlineprotected

retrieve size of a single sample in the modifier image data (i.e. size of the datatype)

◆ getModifierValueAt()

double JKQTPMathImage::getModifierValueAt ( double  x,
double  y 
)
inlineprotected

return the value (raw data!) of the contained modifier image at the given coordinate

◆ getNumberOfLevels()

int JKQTPContourPlot::getNumberOfLevels ( ) const

the list of contour levels

◆ getOverrideColor()

QColor JKQTPContourPlot::getOverrideColor ( int  level) const

returns the override color for contour level level

See also
setOverrideColor(), addContourLevel(), hasOverrideColor(), removeOverrideColor(), getOverrideColor()

◆ getRelativeLevels()

bool JKQTPContourPlot::getRelativeLevels ( ) const

indicates wether the contour levels are absolute values or relative to the maximum (max-min)

◆ hasOverrideColor()

bool JKQTPContourPlot::hasOverrideColor ( int  level) const

returns the override color for contour level level

See also
setOverrideColor(), addContourLevel(), hasOverrideColor(), removeOverrideColor(), getOverrideColor()

◆ interpolatePoint()

QPointF JKQTPContourPlot::interpolatePoint ( const QVector3D &  point1,
const QVector3D &  point2,
double  level 
) const
inlineprivate

interpolatePoint linear interpolation of a line to the x-y plane using the z-value relative to level

Parameters
point1start point of the line
point2end point of the line
levelthe heigth for the interpolation (this z-value is projected onto the xy-plane)
Returns
the interpolated point in the x-y plane

◆ intersect()

bool JKQTPContourPlot::intersect ( QLineF &  line,
const QVector3D &  vertex1,
const QVector3D &  vertex2,
const QVector3D &  vertex3,
double  level 
) const
inlineprivate

gives the intersection line of a plane defined by three vertices with a contour level in the x-y plane of heigth level

◆ removeOverrideColor()

void JKQTPContourPlot::removeOverrideColor ( int  level)

removes the override color for contour level level

See also
setOverrideColor(), addContourLevel(), hasOverrideColor(), removeOverrideColor(), getOverrideColor()

◆ setContourColoringMode()

void JKQTPContourPlot::setContourColoringMode ( ContourColoringMode  __value)

defines how the colors for the contours are chosen

◆ setContourLevels() [1/2]

template<class TContainer >
void JKQTPContourPlot::setContourLevels ( const TContainer &  levels)

sets new contour levels from a container levels

Template Parameters
TConatinerany standard container with c++ standard iterators. The contents needs to be convertible to double via jkqtp_todouble()
Parameters
levelsthe container to copy from

◆ setContourLevels() [2/2]

template<class TContainer , class TColorContainer >
void JKQTPContourPlot::setContourLevels ( const TContainer &  levels,
const TColorContainer &  colors 
)

sets new contour levels from a container levels

Template Parameters
TConatinerany standard container with c++ standard iterators. The contents needs to be convertible to double via jkqtp_todouble()
TColorContainerany standard container with c++ standard iterators. The contents needs to be convertible to QColor
Parameters
levelsthe container to copy from
colorsa container with QColors inside, which define the line colors

◆ setIgnoreOnPlane()

void JKQTPContourPlot::setIgnoreOnPlane ( bool  __value)

if true, vertices that all lie on the contour plane will be ignored

◆ setOverrideColor()

void JKQTPContourPlot::setOverrideColor ( double  level,
QColor  overrideColor 
)

define an override color for the contour line at the given level

See also
setOverrideColor(), addContourLevel(), hasOverrideColor(), removeOverrideColor(), getOverrideColor()

◆ setRelativeLevels()

void JKQTPContourPlot::setRelativeLevels ( bool  __value)

indicates wether the contour levels are absolute values or relative to the maximum (max-min)

Member Data Documentation

◆ contourColoringMode

ContourColoringMode JKQTPContourPlot::contourColoringMode
protected

defines how the colors for the contours are chosen

◆ contourLevels

QVector<double> JKQTPContourPlot::contourLevels
protected

the list of contour levels

◆ contourLinesCache

QList<QVector<QPolygonF > > JKQTPContourPlot::contourLinesCache
private

For Caching: the contour lines as vector of single lines (one for each triangle). the list index refers to the contour level.

This property is used to store the last result of the contour line calculation. This is done, because calculating contour lines is rather expensive. In order to determine the need for a recalculation, the data in the column is converted to a checksum, which can be compared to the sum value stored in contourLinesCachedForChecksum.

See also
contourLinesCachedForChecksum

◆ contourLinesCachedForChecksum

int64_t JKQTPContourPlot::contourLinesCachedForChecksum
private

if (>=0) checksum of the column for which contours were cached in contourLinesCache

See also
contourLinesCache

◆ contourOverrideColor

QMap<double,QColor> JKQTPContourPlot::contourOverrideColor
protected

override contour level colors for specific levels, when contourColoringMode==SingleColorContours

◆ ignoreOnPlane

bool JKQTPContourPlot::ignoreOnPlane
protected

if true, vertices that all lie on the contour plane will be ignored

◆ relativeLevels

bool JKQTPContourPlot::relativeLevels
protected

indicates wether the contour levels are absolute values or relative to the maximum (max-min)


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