KPlotting 5.109.0
|
Generic data plotting widget. More...
#include <kplotwidget.h>
Public Types | |
enum | Axis { LeftAxis = 0 , BottomAxis , RightAxis , TopAxis } |
The four types of plot axes. More... | |
Properties | |
QColor | backgroundColor |
int | bottomPadding |
QColor | foregroundColor |
bool | grid |
QColor | gridColor |
int | leftPadding |
bool | objectToolTip |
int | rightPadding |
int | topPadding |
Public Slots | |
void | setObjectToolTipShown (bool show) |
Toggle the display of a tooltip for point objects. | |
void | setShowGrid (bool show) |
Toggle whether grid lines are drawn at major tickmarks. | |
Public Member Functions | |
KPlotWidget (QWidget *parent=nullptr) | |
Constructor. | |
~KPlotWidget () override | |
Destructor. | |
void | addPlotObject (KPlotObject *object) |
Add an item to the list of KPlotObjects to be plotted. | |
void | addPlotObjects (const QList< KPlotObject * > &objects) |
Add more than one KPlotObject at one time. | |
bool | antialiasing () const |
KPlotAxis * | axis (Axis type) |
const KPlotAxis * | axis (Axis type) const |
QColor | backgroundColor () const |
int | bottomPadding () const |
void | clearSecondaryLimits () |
Unset the secondary limits, so the top and right axes show the same tickmarks as the bottom and left axes (no tickmark labels will be drawn for the top and right axes in this case) | |
QRectF | dataRect () const |
QColor | foregroundColor () const |
QColor | gridColor () const |
bool | isGridShown () const |
bool | isObjectToolTipShown () const |
int | leftPadding () const |
QPointF | mapToWidget (const QPointF &p) const |
Map a coordinate. | |
void | maskAlongLine (const QPointF &p1, const QPointF &p2, float value=1.0f) |
Indicate that object labels should try to avoid the line joining the two given points (in pixel coordinates). | |
void | maskRect (const QRectF &r, float value=1.0f) |
Indicate that object labels should try to avoid the given rectangle in the plot. | |
QSize | minimumSizeHint () const override |
QRect | pixRect () const |
void | placeLabel (QPainter *painter, KPlotPoint *pp) |
Place an object label optimally in the plot. | |
QList< KPlotObject * > | plotObjects () const |
void | removeAllPlotObjects () |
Removes all plot objects that were added to the widget. | |
void | replacePlotObject (int i, KPlotObject *o) |
Replace an item in the KPlotObject list. | |
void | resetPlot () |
Clear the object list, reset the data limits, and remove axis labels If auto-delete was not disabled, the plot objects are deleted. | |
void | resetPlotMask () |
Reset the mask used for non-overlapping labels so that all regions of the plot area are considered empty. | |
int | rightPadding () const |
QRectF | secondaryDataRect () const |
void | setAntialiasing (bool b) |
Toggle antialiased drawing. | |
void | setAutoDeletePlotObjects (bool autoDelete) |
Enables auto-deletion of plot objects if autoDelete is true; otherwise auto-deletion is disabled. | |
void | setBackgroundColor (const QColor &bg) |
Set the background color. | |
void | setBottomPadding (int padding) |
Set the number of pixels below the plot area. | |
void | setDefaultPaddings () |
Revert all four padding values to -1, so that they will be automatically determined. | |
void | setForegroundColor (const QColor &fg) |
Set the foreground color. | |
void | setGridColor (const QColor &gc) |
Set the grid color. | |
void | setLeftPadding (int padding) |
Set the number of pixels to the left of the plot area. | |
void | setLimits (double x1, double x2, double y1, double y2) |
Set new data limits for the plot. | |
void | setRightPadding (int padding) |
Set the number of pixels to the right of the plot area. | |
void | setSecondaryLimits (double x1, double x2, double y1, double y2) |
Reset the secondary data limits, which control the values displayed along the top and right axes. | |
void | setTopPadding (int padding) |
Set the number of pixels above the plot area. | |
QSize | sizeHint () const override |
int | topPadding () const |
Protected Member Functions | |
virtual void | drawAxes (QPainter *p) |
Draws the plot axes and axis labels. | |
bool | event (QEvent *) override |
Generic event handler. | |
void | paintEvent (QPaintEvent *) override |
The paint event handler, executed when update() or repaint() is called. | |
QList< KPlotPoint * > | pointsUnderPoint (const QPoint &p) const |
void | resizeEvent (QResizeEvent *) override |
The resize event handler, called when the widget is resized. | |
void | setPixRect () |
Synchronize the PixRect with the current widget size and padding settings. | |
Generic data plotting widget.
Widget for drawing plots. The basic idea behind KPlotWidget is that you don't have to worry about any transformation from your data's natural units to screen pixel coordinates; this is handled internally by the widget.
Data to be plotted are represented by one or more instances of KPlotObject. KPlotObject contains a list of QPointFs to be plotted (again, in the data's natural units), as well as information about how the data are to be rendered in the plot (i.e., as separate points or connected by lines? With what color and point style? etc). See KPlotObject for more information.
KPlotWidget automatically adds axis labels with tickmarks and tick labels. These are encapsulated in the KPlotAxis class. All you have to do is set the limits of the plotting area in data units, and KPlotWidget will figure out the optimal positions and labels for the tickmarks on the axes.
Example of usage:
enum KPlotWidget::Axis |
|
explicit |
Constructor.
parent | the parent widget |
|
override |
Destructor.
void KPlotWidget::addPlotObject | ( | KPlotObject * | object | ) |
Add an item to the list of KPlotObjects to be plotted.
The widget takes ownership of the plot object, unless auto-delete was disabled.
object | the KPlotObject to be added |
void KPlotWidget::addPlotObjects | ( | const QList< KPlotObject * > & | objects | ) |
Add more than one KPlotObject at one time.
The widget takes ownership of the plot object, unless auto-delete was disabled.
objects | the list of KPlotObjects to be added |
bool KPlotWidget::antialiasing | ( | ) | const |
type
, or 0 if no axis has been set. type
, or 0 if no axis has been set. QColor KPlotWidget::backgroundColor | ( | ) | const |
The default color is black.
int KPlotWidget::bottomPadding | ( | ) | const |
void KPlotWidget::clearSecondaryLimits | ( | ) |
Unset the secondary limits, so the top and right axes show the same tickmarks as the bottom and left axes (no tickmark labels will be drawn for the top and right axes in this case)
QRectF KPlotWidget::dataRect | ( | ) | const |
|
protectedvirtual |
Draws the plot axes and axis labels.
|
overrideprotected |
Generic event handler.
QColor KPlotWidget::foregroundColor | ( | ) | const |
The default color is white.
QColor KPlotWidget::gridColor | ( | ) | const |
The default color is gray.
bool KPlotWidget::isGridShown | ( | ) | const |
bool KPlotWidget::isObjectToolTipShown | ( | ) | const |
int KPlotWidget::leftPadding | ( | ) | const |
Padding values are set to -1 by default; if unchanged, this function will try to guess a good value, based on whether ticklabels and/or axis labels need to be drawn.
QPointF KPlotWidget::mapToWidget | ( | const QPointF & | p | ) | const |
Map a coordinate.
p | from the data rect to the physical pixel rect. Used mainly when drawing. |
p | the point to be converted, in natural data units |
void KPlotWidget::maskAlongLine | ( | const QPointF & | p1, |
const QPointF & | p2, | ||
float | value = 1.0f |
||
) |
Indicate that object labels should try to avoid the line joining the two given points (in pixel coordinates).
p1 | the starting point for the line |
p2 | the ending point for the line |
value | Allows you to determine how strongly the line should be avoided. Larger values are avoided more strongly. |
void KPlotWidget::maskRect | ( | const QRectF & | r, |
float | value = 1.0f |
||
) |
Indicate that object labels should try to avoid the given rectangle in the plot.
The rectangle is in pixel coordinates.
r | the rectangle defining the region in the plot that text labels should avoid (in pixel coordinates) |
value | Allows you to determine how strongly the rectangle should be avoided. Larger values are avoided more strongly. |
|
override |
|
overrideprotected |
The paint event handler, executed when update() or repaint() is called.
QRect KPlotWidget::pixRect | ( | ) | const |
void KPlotWidget::placeLabel | ( | QPainter * | painter, |
KPlotPoint * | pp | ||
) |
Place an object label optimally in the plot.
This function will attempt to place the label as close as it can to the point to which the label belongs, while avoiding overlap with regions of the plot that have been masked.
painter | Pointer to the painter on which to draw the label |
pp | pointer to the KPlotPoint whose label is to be drawn. |
QList< KPlotObject * > KPlotWidget::plotObjects | ( | ) | const |
|
protected |
p | The screen position from which to check for plot points. |
void KPlotWidget::removeAllPlotObjects | ( | ) |
Removes all plot objects that were added to the widget.
If auto-delete was not disabled, the plot objects are deleted.
void KPlotWidget::replacePlotObject | ( | int | i, |
KPlotObject * | o | ||
) |
Replace an item in the KPlotObject list.
i | the index of the item to be replaced |
o | pointer to the replacement KPlotObject |
void KPlotWidget::resetPlot | ( | ) |
Clear the object list, reset the data limits, and remove axis labels If auto-delete was not disabled, the plot objects are deleted.
void KPlotWidget::resetPlotMask | ( | ) |
Reset the mask used for non-overlapping labels so that all regions of the plot area are considered empty.
|
overrideprotected |
The resize event handler, called when the widget is resized.
int KPlotWidget::rightPadding | ( | ) | const |
QRectF KPlotWidget::secondaryDataRect | ( | ) | const |
void KPlotWidget::setAntialiasing | ( | bool | b | ) |
Toggle antialiased drawing.
b | if true, the plot graphics will be antialiased. |
void KPlotWidget::setAutoDeletePlotObjects | ( | bool | autoDelete | ) |
Enables auto-deletion of plot objects if autoDelete is true; otherwise auto-deletion is disabled.
Auto-deletion is enabled by default.
void KPlotWidget::setBackgroundColor | ( | const QColor & | bg | ) |
Set the background color.
bg | the new background color |
void KPlotWidget::setBottomPadding | ( | int | padding | ) |
Set the number of pixels below the plot area.
Set this to -1 to revert to automatic determination of padding values.
void KPlotWidget::setDefaultPaddings | ( | ) |
Revert all four padding values to -1, so that they will be automatically determined.
void KPlotWidget::setForegroundColor | ( | const QColor & | fg | ) |
Set the foreground color.
fg | the new foreground color |
void KPlotWidget::setGridColor | ( | const QColor & | gc | ) |
Set the grid color.
gc | the new grid color |
void KPlotWidget::setLeftPadding | ( | int | padding | ) |
Set the number of pixels to the left of the plot area.
Set this to -1 to revert to automatic determination of padding values.
void KPlotWidget::setLimits | ( | double | x1, |
double | x2, | ||
double | y1, | ||
double | y2 | ||
) |
Set new data limits for the plot.
x1 | the minimum X value in data units |
x2 | the maximum X value in data units |
y1 | the minimum Y value in data units |
y2 | the maximum Y value in data units |
|
slot |
Toggle the display of a tooltip for point objects.
show | whether show the tooltip. |
|
protected |
Synchronize the PixRect with the current widget size and padding settings.
void KPlotWidget::setRightPadding | ( | int | padding | ) |
Set the number of pixels to the right of the plot area.
Set this to -1 to revert to automatic determination of padding values.
void KPlotWidget::setSecondaryLimits | ( | double | x1, |
double | x2, | ||
double | y1, | ||
double | y2 | ||
) |
Reset the secondary data limits, which control the values displayed along the top and right axes.
All data points are plotted using the coordinates defined by setLimits(), so this function is only useful for showing alternate tickmark labels along the top and right edges. For example, if you were plotting temperature on the X-axis, you could use Centigrade units for the primary (bottom) axis, using setLimits( 0.0, 100.0, 0.0, 1.0 ). If you also wanted to show Fahrenheit units along the secondary (top) axis, you would additionally use setSecondaryLimits( 32.0, 212.0, 0.0, 1.0 ). The data added to the plot would have x-coordinates in Centigrade degrees.
x1 | the minimum X value in secondary data units |
x2 | the maximum X value in secondary data units |
y1 | the minimum Y value in secondary data units |
y2 | the maximum Y value in secondary data units |
|
slot |
Toggle whether grid lines are drawn at major tickmarks.
show | if true, grid lines will be drawn. |
void KPlotWidget::setTopPadding | ( | int | padding | ) |
Set the number of pixels above the plot area.
Set this to -1 to revert to automatic determination of padding values.
|
override |
int KPlotWidget::topPadding | ( | ) | const |