Gtkmm-PLplot 3.0
A scientific plotting library for Gtkmm
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
Gtk::PLplot::PlotPolar Class Reference

a class for polar plots More...

#include <gtkmm-plplot/plotpolar.h>

Inheritance diagram for Gtk::PLplot::PlotPolar:
Inheritance graph
[legend]

Public Member Functions

 PlotPolar (PlotDataPolar &data, const Glib::ustring &axis_title_x="", const Glib::ustring &axis_title_y="", const Glib::ustring &plot_title="", const double plot_width_norm=1.0, const double plot_height_norm=1.0, const double plot_offset_horizontal_norm=0.0, const double plot_offset_vertical_norm=0.0)
 
virtual ~PlotPolar ()
 
virtual void add_data (PlotDataPolar &data)
 
virtual void remove_data (unsigned int plot_data_index) override
 
virtual void remove_data (PlotData &plot_data_member) override
 
virtual void draw_plot (const Cairo::RefPtr< Cairo::Context > &cr, const int width, const int height) override
 
- Public Member Functions inherited from Gtk::PLplot::Plot
virtual ~Plot ()
 
virtual void remove_object (unsigned int plot_object_index)
 
virtual void remove_object (PlotObject &plot_object_member)
 
virtual PlotDataget_data (unsigned int data_index=0) final
 
void set_axis_title_x (Glib::ustring title)
 
void set_axis_title_y (Glib::ustring title)
 
Glib::ustring get_axis_title_x ()
 
Glib::ustring get_axis_title_y ()
 
void set_plot_title (Glib::ustring title)
 
Glib::ustring get_plot_title ()
 
void show ()
 
void hide ()
 
bool is_showing () const
 
Gdk::RGBA get_background_color ()
 
void set_background_color (Gdk::RGBA color)
 
Gdk::RGBA get_axes_color ()
 
void set_axes_color (Gdk::RGBA color)
 
Gdk::RGBA get_titles_color ()
 
void set_titles_color (Gdk::RGBA color)
 
sigc::signal< void(void)> signal_changed ()
 
sigc::signal< void(PlotData *)> signal_data_added ()
 
sigc::signal< void(PlotData *)> signal_data_removed ()
 
sigc::signal< void(PlotObject *)> signal_object_added ()
 
sigc::signal< void(PlotObject *)> signal_object_removed ()
 
- Public Member Functions inherited from Gtk::PLplot::Object
virtual void set_manage ()
 
- Public Member Functions inherited from Gtk::PLplot::Legend
void set_legend_background_color (Gdk::RGBA legend_background_color)
 
Gdk::RGBA get_legend_background_color ()
 
void set_legend_bounding_box_color (Gdk::RGBA legend_bounding_box_color)
 
Gdk::RGBA get_legend_bounding_box_color ()
 
void set_legend_position (double legend_pos_x, double legend_pos_y)
 
void get_legend_position (double &legend_pos_x, double &legend_pos_y)
 
void set_legend_corner_position (LegendCornerPosition legend_corner_position)
 
LegendCornerPosition get_legend_corner_position ()
 
void show_legend ()
 
void hide_legend ()
 
bool is_showing_legend ()
 
- Public Member Functions inherited from Gtk::PLplot::RegionSelection
virtual ~RegionSelection ()
 
void set_region (double xmin, double xmax, double ymin, double ymax)
 
void get_region (double &xmin, double &xmax, double &ymin, double &ymax)
 
bool get_region_selectable ()
 
void set_region_selectable (bool selectable=true)
 
bool get_region_zoomable ()
 
void set_region_zoomable (bool zoomable=true)
 
double get_region_zoom_scale_factor ()
 
void set_region_zoom_scale_factor (double scale_factor)
 
Gdk::RGBA get_region_selection_color ()
 
void set_region_selection_color (Gdk::RGBA color)
 
double get_region_selection_width ()
 
void set_region_selection_width (double line_width)
 
bool get_region_pannable ()
 
void set_region_pannable (bool pannable=true)
 
sigc::signal< void(double, double, double, double)> signal_select_region ()
 
sigc::signal< void(double, double)> signal_cursor_motion ()
 
sigc::signal< void(double, double)> signal_cursor_enter ()
 
sigc::signal< void(void)> signal_cursor_leave ()
 
sigc::signal< std::vector< double >(double, double, double, double)> signal_pan ()
 
sigc::signal< void(double, double)> signal_double_press ()
 
sigc::signal< void(double, double, GdkScrollDirection)> signal_zoom_region ()
 

Protected Member Functions

virtual void plot_data_modified () override
 a method that will update the _range variables when datasets are added, modified or removed.
 
 PlotPolar (const Glib::ustring &axis_title_x, const Glib::ustring &axis_title_y, const Glib::ustring &plot_title, const double plot_width_norm, const double plot_height_norm, const double plot_offset_horizontal_norm, const double plot_offset_vertical_norm)
 
virtual void coordinate_transform_world_to_plplot (double x_old, double y_old, double &x_new, double &y_new) override
 
virtual void coordinate_transform_plplot_to_world (double x_old, double y_old, double &x_new, double &y_new) override
 
- Protected Member Functions inherited from Gtk::PLplot::Plot
virtual void on_changed ()
 
virtual void on_data_added (PlotData *new_data)
 
virtual void on_data_removed (PlotData *removed_data)
 
virtual void on_object_added (PlotObject *new_object)
 
virtual void on_object_removed (PlotObject *removed_object)
 
virtual void draw_plot_init (const Cairo::RefPtr< Cairo::Context > &cr, const int width, const int height) final
 
 Plot (const Glib::ustring &axis_title_x, const Glib::ustring &axis_title_y, const Glib::ustring &plot_title, const double plot_width_norm, const double plot_height_norm, const double plot_offset_horizontal_norm, const double plot_offset_vertical_norm)
 
- Protected Member Functions inherited from Gtk::PLplot::Object
 Object ()
 
- Protected Member Functions inherited from Gtk::PLplot::Legend
 Legend (const Legend &legend)=default
 
 Legend (LegendCornerPosition legend_corner_position=LegendCornerPosition::TOP_RIGHT, double legend_pos_x=0.0, double legend_pos_y=0.0, Gdk::RGBA legend_background_color=Gdk::RGBA("White"), Gdk::RGBA legend_bounding_box_color=Gdk::RGBA("Black"))
 
virtual ~Legend ()
 
virtual void draw_legend (const Cairo::RefPtr< Cairo::Context > &cr, std::vector< PlotData * > &plot_data, plstream *pls)
 
- Protected Member Functions inherited from Gtk::PLplot::RegionSelection
virtual void coordinate_transform_plplot_to_cairo (double x_pl, double y_pl, double &x_cr, double &y_cr) final
 
virtual void coordinate_transform_cairo_to_plplot (double x_cr, double y_cr, double &x_pl, double &y_pl) final
 
virtual void coordinate_transform_world_to_cairo (double x_wr, double y_wr, double &x_cr, double &y_cr) final
 
virtual void coordinate_transform_cairo_to_world (double x_cr, double y_cr, double &x_wr, double &y_wr) final
 
virtual void on_select_region (double xmin, double xmax, double ymin, double ymax)
 
virtual void on_zoom_region (double x, double y, GdkScrollDirection direction)
 
virtual void on_cursor_motion (double x, double y)
 
virtual void on_cursor_enter (double x, double y)
 
virtual void on_cursor_leave ()
 
virtual std::vector< double > on_pan (double old_x, double old_y, double new_x, double new_y)
 
virtual void on_double_press (double x, double y)
 
 RegionSelection ()
 
 RegionSelection (const RegionSelection &region_selection)=default
 

Static Protected Member Functions

static void coordinate_transform_world_to_plplot (double x_old, double y_old, double *x_new, double *y_new, void *object)
 
static void coordinate_transform_plplot_to_world (double x_old, double y_old, double *x_new, double *y_new, void *object)
 
- Static Protected Member Functions inherited from Gtk::PLplot::RegionSelection
static void ensure_valid_range (double &val0, double &val1)
 internal function that ensures valid ranges are always plotted, mostly avoiding case where for either x or y, data min is equal to data max.
 

Private Member Functions

 PlotPolar ()=delete
 no default constructor
 
 PlotPolar (const PlotPolar &)=delete
 no default copy constructor
 
PlotPolaroperator= (const PlotPolar &)=delete
 no assignment operator
 

Private Attributes

double max_r
 the maximum radial coordinate in the datasets
 

Friends

class Canvas
 

Additional Inherited Members

- Protected Attributes inherited from Gtk::PLplot::Plot
std::vector< PlotData * > plot_data
 vector that contains pointers to the PlotData datasets
 
std::vector< PlotObject * > plot_objects
 vector that contains pointers to the PlotObject datasets
 
Glib::ustring axis_title_x
 X-axis title.
 
Glib::ustring axis_title_y
 Y-axis title.
 
Glib::ustring plot_title
 Plot title.
 
plstream * pls
 the plstream object that will ensure the connection with PLplot
 
int canvas_width
 the width of the canvas in Cairo units
 
int canvas_height
 the height of the canvas in Cairo units
 
int plot_offset_x
 the offset of the plot with respect to the top left corner of the canvas, measured along the horizontal (X-) axis in Cairo units
 
int plot_offset_y
 the offset of the plot with respect to the top left corner of the canvas, measured along the vertical (Y-) axis in Cairo units
 
int plot_width
 the current width of the plot in Cairo units
 
int plot_height
 the current height of the plot in Cairo units
 
bool shown
 true means the plot is currently visible, false means it is not plotted
 
Gdk::RGBA background_color
 the currently used background color of the plot (default = fully transparent white, meaning that the background will be determined by the canvas)
 
const double plot_width_norm
 the normalized plot width, calculated relative to the canvas width
 
const double plot_height_norm
 the normalized plot height, calculated relative to the canvas height
 
const double plot_offset_horizontal_norm
 the normalized horizontal offset from the canvas top left corner, calculated relative to the canvas width
 
const double plot_offset_vertical_norm
 the normalized vertical offset from the canvas top left corner, calculated relative to the canvas height
 
Gdk::RGBA axes_color
 the currently used color to draw the axes, the box and gridlines. Default is opaque black
 
Gdk::RGBA titles_color
 the currently used color to draw the axes and plot titles. Default is opaque black
 
sigc::signal< void(void)> _signal_changed
 signal that gets emitted whenever any of the plot parameters, or any of the contained PlotData datasets is changed.
 
sigc::signal< void(PlotData *)> _signal_data_added
 signal emitted whenever a PlotData dataset is added to the plot
 
sigc::signal< void(PlotData *)> _signal_data_removed
 signal emitted whenever data is removed from the plot.
 
sigc::signal< void(PlotObject *)> _signal_object_added
 signal emitted whenever a PlotObject is added to the plot
 
sigc::signal< void(PlotObject *)> _signal_object_removed
 signal emitted whenever a PlotObject is removed from the plot.
 
- Protected Attributes inherited from Gtk::PLplot::RegionSelection
double cairo_range_x [2]
 the current range shown on the plot for the X-axis in Cairo coordinates
 
double cairo_range_y [2]
 the current range shown on the plot for the Y-axis in Cairo coordinates
 
double plotted_range_x [2]
 the current range shown on the plot for the X-axis in PLplot coordinates (NOT world!!!)
 
double plotted_range_y [2]
 the current range shown on the plot for the Y-axis in PLplot coordinates (NOT world!!!)
 
double plot_data_range_x [2]
 the maximum range covered by the X-values of the datasets in PLplot coordinates (NOT world!!!)
 
double plot_data_range_y [2]
 the maximum range covered by the Y-values of the datasets in PLplot coordinates (NOT world!!!)
 
sigc::signal< void(double, double, double, double)> _signal_select_region
 signal that gets emitted whenever a new region was selected using the mouse pointer in Canvas::on_button_release_event()
 
sigc::signal< void(double, double, GdkScrollDirection)> _signal_zoom_region
 signal that gets emitted whenever one zooms in on the plot using the mouse scroll wheel in Canvas::on_scroll_event()
 
sigc::signal< void(double, double)> _signal_cursor_motion
 signal that will be emitted whenever the cursor (usually the mouse) is moved.
 
sigc::signal< void(double, double)> _signal_cursor_enter
 signal that will be emitted whenever the cursor (usually the mouse) enter.
 
sigc::signal< void(void)> _signal_cursor_leave
 signal that will be emitted whenever the cursor (usually the mouse) leave.
 
sigc::signal< std::vector< double >(double, double, double, double)> _signal_pan
 signal that will be emitted whenever the cursor is moved within a pannable plot while the SHIFT key is pressed in and the left mouse button is pressed.
 
sigc::signal< void(double, double)> _signal_double_press
 signal that will emitted whenever a double mouse-click event was recorded within the plot box. Default response will be to reset the region to a range determined by the minima and maxima of the X- and Y- datasets.
 

Detailed Description

a class for polar plots

A class for polar plots. Construction requires a single PlotDataPolar (which derives from PlotData2D) dataset, meaning it is not possible to generate an empty plot. Afterwards, other datasets may be added using the add_data() method. The x and y class variables of PlotData2D will when used with this class be interpreted to correspond to the radial coordinate (usually denoted as r) and the angular coordinate (usually denoted as θ), respectively. Several properties may be set such as the axes and plot titles. Important is that whenever a property is changed, signal_changed() is emitted, which will eventually be picked up by the canvas that will hold the plot. An example of this class is presented in Example 6: Polar coordinate systems.

Constructor & Destructor Documentation

◆ PlotPolar() [1/4]

Gtk::PLplot::PlotPolar::PlotPolar ( )
privatedelete

no default constructor

◆ PlotPolar() [2/4]

Gtk::PLplot::PlotPolar::PlotPolar ( const PlotPolar )
privatedelete

no default copy constructor

◆ PlotPolar() [3/4]

Gtk::PLplot::PlotPolar::PlotPolar ( const Glib::ustring &  axis_title_x,
const Glib::ustring &  axis_title_y,
const Glib::ustring &  plot_title,
const double  plot_width_norm,
const double  plot_height_norm,
const double  plot_offset_horizontal_norm,
const double  plot_offset_vertical_norm 
)
protected

Constructor

This protected constructor is meant to be used in derived classes only to circumvent the problem of calling add_data() in a constructor which calls PlotPolar's public constructor.

Parameters
axis_title_xX-axis title
axis_title_yY-axis title
plot_titleplot title
plot_width_normthe normalized plot width, calculated relative to the canvas width
plot_height_normthe normalized plot height, calculated relative to the canvas height
plot_offset_horizontal_normthe normalized horizontal offset from the canvas top left corner, calculated relative to the canvas width
plot_offset_vertical_normthe normalized vertical offset from the canvas top left corner, calculated relative to the canvas height

◆ PlotPolar() [4/4]

Gtk::PLplot::PlotPolar::PlotPolar ( PlotDataPolar data,
const Glib::ustring &  axis_title_x = "",
const Glib::ustring &  axis_title_y = "",
const Glib::ustring &  plot_title = "",
const double  plot_width_norm = 1.0,
const double  plot_height_norm = 1.0,
const double  plot_offset_horizontal_norm = 0.0,
const double  plot_offset_vertical_norm = 0.0 
)

Constructor

This class provides a single public constructor, which takes an existing PlotDataPolar dataset to construct a plot. Optionally, the constructor takes additional arguments to set the axes and plot titles, as well as normalized coordinates that will determine the position and dimensions of the plot within the canvas.

Parameters
dataa PlotDataPolar object containing a plot dataset
axis_title_xX-axis title
axis_title_yY-axis title
plot_titleplot title
plot_width_normthe normalized plot width, calculated relative to the canvas width
plot_height_normthe normalized plot height, calculated relative to the canvas height
plot_offset_horizontal_normthe normalized horizontal offset from the canvas top left corner, calculated relative to the canvas width
plot_offset_vertical_normthe normalized vertical offset from the canvas top left corner, calculated relative to the canvas height

◆ ~PlotPolar()

virtual Gtk::PLplot::PlotPolar::~PlotPolar ( )
virtual

Destructor

Member Function Documentation

◆ add_data()

virtual void Gtk::PLplot::PlotPolar::add_data ( PlotDataPolar data)
virtual

Add a single PlotDataPolar dataset to the plot

Parameters
datadataset to be added to the plot
Exceptions
Gtk::PLplot::Exception

◆ coordinate_transform_plplot_to_world() [1/2]

virtual void Gtk::PLplot::PlotPolar::coordinate_transform_plplot_to_world ( double  x_old,
double  y_old,
double &  x_new,
double &  y_new 
)
overrideprotectedvirtual

This method takes care of coordinate transformations when using non-linear axes

When a plot has logarithmic axes or polar plot style, PLplot requires the user to transform the dataset into the linear cartesian coordinate system which it uses internally. This method is a wrapper around the static function with the same name.

Parameters
x_oldthe x PLplot coordinate to be transformed
y_oldthe y PLplot coordinate to be transformed
x_newthe new x world coordinate
y_newthe new y world coordinate

Reimplemented from Gtk::PLplot::RegionSelection.

◆ coordinate_transform_plplot_to_world() [2/2]

static void Gtk::PLplot::PlotPolar::coordinate_transform_plplot_to_world ( double  x_old,
double  y_old,
double *  x_new,
double *  y_new,
void *  object 
)
staticprotected

This static method takes care of coordinate transformations when using non-linear axes

When a plot has logarithmic axes or polar plot style, PLplot requires the user to transform the dataset into the linear cartesian coordinate system which it uses internally. The reason that this is static method is due to PLplot expecting a C function...

Parameters
x_oldthe x PLplot coordinate to be transformed
y_oldthe y PLplot coordinate to be transformed
x_newthe new x world coordinate
y_newthe new y world coordinate
objectthe object we are dealing with

◆ coordinate_transform_world_to_plplot() [1/2]

virtual void Gtk::PLplot::PlotPolar::coordinate_transform_world_to_plplot ( double  x_old,
double  y_old,
double &  x_new,
double &  y_new 
)
overrideprotectedvirtual

This method takes care of coordinate transformations when using non-linear axes

When a plot has logarithmic axes or polar plot style, PLplot requires the user to transform the dataset into the linear cartesian coordinate system which it uses internally. This method is a wrapper around the static function with the same name.

Parameters
x_oldthe x world coordinate to be transformed
y_oldthe y world coordinate to be transformed
x_newthe new x PLplot coordinate
y_newthe new y PLplot coordinate

Reimplemented from Gtk::PLplot::RegionSelection.

◆ coordinate_transform_world_to_plplot() [2/2]

static void Gtk::PLplot::PlotPolar::coordinate_transform_world_to_plplot ( double  x_old,
double  y_old,
double *  x_new,
double *  y_new,
void *  object 
)
staticprotected

This static method takes care of coordinate transformations when using non-linear axes

When a plot has logarithmic axes or polar plot style, PLplot requires the user to transform the dataset into the linear cartesian coordinate system which it uses internally. The reason that this is static method is due to PLplot expecting a C function...

Parameters
x_oldthe x world coordinate to be transformed
y_oldthe y world coordinate to be transformed
x_newthe new x PLplot coordinate
y_newthe new y PLplot coordinate
objectthe object we are dealing with

◆ draw_plot()

virtual void Gtk::PLplot::PlotPolar::draw_plot ( const Cairo::RefPtr< Cairo::Context > &  cr,
const int  width,
const int  height 
)
overridevirtual

Method to draw the plot with all of its datasets

This method is virtual allowing inheriting classes to implement their own method with the same signature.

Parameters
crthe cairo context to draw to.
widththe width of the Canvas widget
heightthe height of the Canvas widget

Implements Gtk::PLplot::Plot.

◆ operator=()

PlotPolar & Gtk::PLplot::PlotPolar::operator= ( const PlotPolar )
privatedelete

no assignment operator

◆ plot_data_modified()

virtual void Gtk::PLplot::PlotPolar::plot_data_modified ( )
overrideprotectedvirtual

a method that will update the _range variables when datasets are added, modified or removed.

Implements Gtk::PLplot::Plot.

◆ remove_data() [1/2]

virtual void Gtk::PLplot::PlotPolar::remove_data ( PlotData plot_data_member)
overridevirtual

Remove a single dataset from the plot

Parameters
plot_data_memberpointer to the plotdata in the plot_data vector
Exceptions
Gtk::PLplot::Exception
Since
2.2

Reimplemented from Gtk::PLplot::Plot.

◆ remove_data() [2/2]

virtual void Gtk::PLplot::PlotPolar::remove_data ( unsigned int  plot_data_index)
overridevirtual

Remove a single dataset from the plot

Parameters
plot_data_indexindex of the plotdata in the plot_data vector
Exceptions
Gtk::PLplot::Exception
Since
2.2

Reimplemented from Gtk::PLplot::Plot.

Friends And Related Symbol Documentation

◆ Canvas

friend class Canvas
friend

Member Data Documentation

◆ max_r

double Gtk::PLplot::PlotPolar::max_r
private

the maximum radial coordinate in the datasets