Class CDisplayWindowPlots

Inheritance Relationships

Base Type

Class Documentation

class CDisplayWindowPlots : public mrpt::gui::CBaseGUIWindow

Create a GUI window and display plots with MATLAB-like interfaces and commands.

For a list of supported events with the observer/observable pattern, see the discussion in mrpt::gui::CBaseGUIWindow.

See CDisplayWindowPlots::plot

../../output_staging/generated/doxygen/xml/preview_CDisplayWindowPlots.png

Public Types

using Ptr = std::shared_ptr<CDisplayWindowPlots>
using TCallbackMenu = void (*)(int menuID, float cursor_x, float cursor_y, void *userParam)

Type for the callback function used in setMenuCallback

Public Functions

CDisplayWindowPlots(const std::string &windowCaption = std::string(), unsigned int initialWidth = 350, unsigned int initialHeight = 300)

Constructor

~CDisplayWindowPlots() override

Destructor

virtual std::optional<mrpt::img::TPixelCoord> getLastMousePosition() const override

Gets the last x,y pixel coordinates of the mouse.

Returns:

nullopt if the window is closed.

virtual void setCursorCross(bool cursorIsCross) override

Set cursor style to default (cursorIsCross=false) or to a cross (cursorIsCross=true)

virtual void resize(unsigned int width, unsigned int height) override

Resizes the window, stretching the image to fit into the display area.

virtual void setPos(int x, int y) override

Changes the position of the window on the screen.

virtual void setWindowTitle(const std::string &str) override

Changes the window title text.

void enableMousePanZoom(bool enabled)

Enable/disable the feature of pan/zoom with the mouse (default=enabled)

template<typename VEC1, typename VEC2, typename = typename VEC2::Scalar>
inline void plot(const VEC1 &x, const VEC2 &y, const std::string &lineFormat = std::string("b-"), const std::string &plotName = std::string("plotXY"))

Adds a new layer with a 2D plot based on two vectors of X and Y points, using a MATLAB-like syntax. Each call to this function creates a new plot, unless the plot name coincides with an already existing plot: in this case the X & Y points are used to update this existing layer (this also applies to using the default plot name). If “hold_on” is enabled, then every call will always create a new plot, even if no “plotName” is provided.

The lineFormat string is a combination of the following characters:

  • Line styles:

    • ’.’: One point for each data point

    • ’-’: A continuous line

    • ’:’: A dashed line

  • Colors:

    • k: black

    • r: red

    • g: green

    • b: blue

    • m: magenta

    • c: cyan

  • Line width:

    • ’1’ to ‘9’: The line width (default=1)

    Examples:

Note

The vectors x & y can be of types: float or double.

Template Parameters:

VECTOR – Can be std::vector<float/double> or mrpt::dynamicsize_vector<float/double> or a column/row Eigen::Matrix<>

template<typename T>
inline void plot(const std::vector<T> &x, const std::vector<T> &y, const std::string &lineFormat = std::string("b-"), const std::string &plotName = std::string("plotXY"))
template<typename VEC>
inline void plot(const VEC &y, const std::string &lineFormat = std::string("b-"), const std::string &plotName = std::string("plotXY"))

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

void axis(float x_min, float x_max, float y_min, float y_max, bool aspectRatioFix = false)

Set the view area according to the passed coordinated.

void axis_equal(bool enable = true)

Enable/disable the fixed X/Y aspect ratio fix feature (default=disabled).

void axis_fit(bool aspectRatioFix = false)

Fix automatically the view area according to existing graphs.

template<typename T>
void plotEllipse(const T mean_x, const T mean_y, const mrpt::math::CMatrixDynamic<T> &cov22, const float quantiles, const std::string &lineFormat = std::string("b-"), const std::string &plotName = std::string("plotEllipse"), bool showName = false)

Plots a 2D ellipse given its mean, covariance matrix, and Each call to this function creates a new plot, unless the plot name coincides with an already existing plot: in this case the new values are used to update this existing layer (this also applies to using the default plot name). If “hold_on” is enabled, then every call will always create a new plot, even if no “plotName” is provided.

For a description of lineFormat see CDisplayWindowPlots::plot. The “quantiles” value determines the confidence interval for the ellipse:

Note

This method can be called with 2x2 fixed-sized or dynamic-size matrices of types: float or double.

template<typename T>
void plotEllipse(const T mean_x, const T mean_y, const mrpt::math::CMatrixFixed<T, 2, 2> &cov22, const float quantiles, const std::string &lineFormat = std::string("b-"), const std::string &plotName = std::string("plotEllipse"), bool showName = false)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

void image(const mrpt::img::CImage &img, float x_left, float y_bottom, float x_width, float y_height, const std::string &plotName = std::string("image"))

Adds a bitmap image layer. Each call to this function creates a new layer, unless the plot name coincides with an already existing plot: in this case the new values are used to update this existing layer (this also applies to using the default plot name).

void clear()

Remove all plot objects in the display.

See also

plot

inline void clf()

Remove all plot objects in the display (clear and clf do exactly the same).

See also

plot, hold_on, hold_off

void hold_on()

Enables keeping all the graphs, instead of overwriting them.

See also

hold_off, plot

void hold_off()

Disables keeping all the graphs (this is the default behavior).

See also

hold_on, plot

void addPopupMenuEntry(const std::string &label, int menuID)

Disables keeping all the graphs (this is the default behavior).

See also

setMenuCallback

Parameters:
  • label – The text that appears in the new popup menu item.

  • menuID – Any positive number (0,1,..). Used to tell which menu was selected in the user callback.

void setMenuCallback(TCallbackMenu userFunction, void *userParam = nullptr)

Must be called to have a callback when the user selects one of the user-defined entries in the popup menu.

Public Static Functions

static CDisplayWindowPlots::Ptr Create(const std::string &windowCaption, unsigned int initialWindowWidth = 400, unsigned int initialWindowHeight = 300)

Class factory returning a smart pointer, equivalent to std::make_shared<>(...)

Protected Functions

void internal_plot(mrpt::math::CVectorFloat &x, mrpt::math::CVectorFloat &y, const std::string &lineFormat, const std::string &plotName)
template<typename VECTOR1, typename VECTOR2>
inline void internal_plot_interface(const VECTOR1 &x, const VECTOR2 &y, const std::string &lineFormat, const std::string &plotName)
template<typename VECTOR1>
inline void internal_plot_interface(const VECTOR1 &y, const std::string &lineFormat, const std::string &plotName)

Protected Attributes

bool m_holdon = {false}

Whether hold_on is enabled

bool m_holdon_just_disabled = {false}
uint32_t m_holdon_cnt = {0}

Counter for hold_on

TCallbackMenu m_callback = {nullptr}
void *m_callback_param = {nullptr}

Friends

friend class CWindowDialogPlots