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

a class that will hold a single dataset and its properties for a Plot3D plot More...

#include <gtkmm-plplot/plotdata3d.h>

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

Public Member Functions

 PlotData3D (const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z, Gdk::RGBA color=Gdk::RGBA("red"), LineStyle line_style=CONTINUOUS, double line_width=PLOTDATA_DEFAULT_LINE_WIDTH)
 
 PlotData3D (const std::valarray< double > &x, const std::valarray< double > &y, const std::valarray< double > &z, Gdk::RGBA color=Gdk::RGBA("red"), LineStyle line_style=CONTINUOUS, double line_width=PLOTDATA_DEFAULT_LINE_WIDTH)
 
virtual ~PlotData3D ()
 
std::vector< double > get_vector_z ()
 
virtual void add_datapoint (double xval, double yval, double zval)
 
virtual void add_datapoint (std::tuple< double, double, double > xyz_tuple)
 
virtual void remove_datapoint (size_t index) override
 
virtual void replace_datapoints (const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z)
 
virtual void replace_datapoints (const std::valarray< double > &x, const std::valarray< double > &y, const std::valarray< double > &z)
 
virtual void draw_plot_data (const Cairo::RefPtr< Cairo::Context > &cr, plstream *pls) override
 
- Public Member Functions inherited from Gtk::PLplot::PlotData2D
 PlotData2D (const std::vector< double > &x, const std::vector< double > &y, Gdk::RGBA color=Gdk::RGBA("red"), LineStyle line_style=CONTINUOUS, double line_width=PLOTDATA_DEFAULT_LINE_WIDTH)
 
 PlotData2D (const std::valarray< double > &x, const std::valarray< double > &y, Gdk::RGBA color=Gdk::RGBA("red"), LineStyle line_style=CONTINUOUS, double line_width=PLOTDATA_DEFAULT_LINE_WIDTH)
 
 PlotData2D (const std::vector< double > &y, Gdk::RGBA color=Gdk::RGBA("red"), LineStyle line_style=CONTINUOUS, double line_width=PLOTDATA_DEFAULT_LINE_WIDTH)
 
 PlotData2D (const std::valarray< double > &y, Gdk::RGBA color=Gdk::RGBA("red"), LineStyle line_style=CONTINUOUS, double line_width=PLOTDATA_DEFAULT_LINE_WIDTH)
 
virtual ~PlotData2D ()
 
std::vector< double > get_vector_x ()
 
std::vector< double > get_vector_y ()
 
size_t size ()
 
virtual void get_extremes (double &xmin, double &xmax, double &ymin, double &ymax)
 
void set_symbol (Glib::ustring symbol)
 
Glib::ustring get_symbol ()
 
void set_symbol_color (Gdk::RGBA color)
 
Gdk::RGBA get_symbol_color ()
 
void set_symbol_height_scale_factor (double scale_factor=1.0)
 
double get_symbol_height_scale_factor ()
 
- Public Member Functions inherited from Gtk::PLplot::PlotDataLine
virtual ~PlotDataLine ()
 
void set_color (Gdk::RGBA color)
 
Gdk::RGBA get_color ()
 
void set_line_style (LineStyle line_style)
 
LineStyle get_line_style ()
 
void set_line_width (double line_width)
 
double get_line_width ()
 
- Public Member Functions inherited from Gtk::PLplot::PlotData
virtual ~PlotData ()
 
void set_name (Glib::ustring name)
 
Glib::ustring get_name ()
 
void show ()
 
void hide ()
 
bool is_showing () const
 
sigc::signal< void(void)> signal_changed ()
 
sigc::signal< void(void)> signal_data_modified ()
 
- Public Member Functions inherited from Gtk::PLplot::Object
virtual void set_manage ()
 

Protected Attributes

std::vector< double > z
 The Z-values of the dataset.
 
- Protected Attributes inherited from Gtk::PLplot::PlotData2D
std::vector< double > x
 The X-values of the dataset.
 
std::vector< double > y
 The Y-values of the dataset.
 
Glib::ustring symbol
 If not an empty string, the symbol will be plotted at each of the data points from x and y.
 
Gdk::RGBA symbol_color
 The color the symbol will be plotted in.
 
double symbol_scale_factor
 Scale factor that will determine the size of the symbols. Default is 1.
 
- Protected Attributes inherited from Gtk::PLplot::PlotDataLine
Gdk::RGBA color
 The color the dataset will be drawn in.
 
LineStyle line_style
 The linestyle that will be used for this dataset in the plot.
 
double line_width
 The line width of the dataset. Default is 1.0.
 
- Protected Attributes inherited from Gtk::PLplot::PlotData
sigc::signal< void(void)> _signal_changed
 signal that gets emitted whenever any of the dataset proprties is changed.
 
sigc::signal< void(void)> _signal_data_modified
 signal that gets emitted whenever the X- and Y-datasets have been modified.
 

Private Member Functions

 PlotData3D ()=delete
 no default constructor
 
 PlotData3D (const PlotData3D &)=delete
 no copy constructor
 
PlotData3Doperator= (const PlotData3D &)=delete
 no assignment operator
 
virtual void add_datapoint (double xval, double yval) final
 
virtual void add_datapoint (std::pair< double, double > xy_pair) final
 
virtual void replace_datapoints (const std::vector< double > &x, const std::vector< double > &y) override
 
virtual void replace_datapoints (const std::valarray< double > &x, const std::valarray< double > &y) override
 

Additional Inherited Members

- Protected Member Functions inherited from Gtk::PLplot::PlotDataLine
 PlotDataLine (Gdk::RGBA color, LineStyle line_style, double line_width)
 
- Protected Member Functions inherited from Gtk::PLplot::PlotData
virtual void on_changed ()
 
virtual void on_data_modified ()
 
 PlotData ()
 
- Protected Member Functions inherited from Gtk::PLplot::Object
 Object ()
 

Detailed Description

a class that will hold a single dataset and its properties for a Plot3D plot

Instances of this class contain a single dataset for a Plot3D three-dimensional plot, consisting of the raw X-, Y- and Z-data, along with a number of properties that will determine the appearance of the plot. Data may be represented as a line, symbols or both. The constructors of this class allow to use either std::vector or std::valarray as sources of data, for added flexibility. Internally they are stored only as std::vector though. 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. Several of the methods that are offered by this class are demonstrated in Example 9: a Three-dimensional plot.

Constructor & Destructor Documentation

◆ PlotData3D() [1/4]

Gtk::PLplot::PlotData3D::PlotData3D ( )
privatedelete

no default constructor

◆ PlotData3D() [2/4]

Gtk::PLplot::PlotData3D::PlotData3D ( const PlotData3D )
privatedelete

no copy constructor

◆ PlotData3D() [3/4]

Gtk::PLplot::PlotData3D::PlotData3D ( const std::vector< double > &  x,
const std::vector< double > &  y,
const std::vector< double > &  z,
Gdk::RGBA  color = Gdk::RGBA("red"),
LineStyle  line_style = CONTINUOUS,
double  line_width = PLOTDATA_DEFAULT_LINE_WIDTH 
)

Constructor

This constructor initializes a new dataset using two vectors, one for the X-values, and one for the Y-values. Optionally, one can also use the constructor to override the default color, line style and line width.

Parameters
xthe X-values, as std::vector
ythe Y-values, as std::vector
zthe Z-values, as std::vector
colorthe line color, default is red
line_stylethe line style, default is CONTINUOUS
line_widththe line width, default is 1.0
Exceptions
Gtk::PLplot::Exception

◆ PlotData3D() [4/4]

Gtk::PLplot::PlotData3D::PlotData3D ( const std::valarray< double > &  x,
const std::valarray< double > &  y,
const std::valarray< double > &  z,
Gdk::RGBA  color = Gdk::RGBA("red"),
LineStyle  line_style = CONTINUOUS,
double  line_width = PLOTDATA_DEFAULT_LINE_WIDTH 
)

Constructor

This constructor initializes a new dataset using two valarrays, one for the X-values, and one for the Y-values. Optionally, one can also use the constructor to override the default color, line style and line width.

Parameters
xthe X-values, as std::valarray
ythe Y-values, as std::valarray
zthe Z-values, as std::valarray
colorthe line color, default is red
line_stylethe line style, default is CONTINUOUS
line_widththe line width, default is 1.0

◆ ~PlotData3D()

virtual Gtk::PLplot::PlotData3D::~PlotData3D ( )
virtual

Destructor

Member Function Documentation

◆ add_datapoint() [1/4]

virtual void Gtk::PLplot::PlotData3D::add_datapoint ( double  xval,
double  yval 
)
finalprivatevirtual

Add a single datapoint, consisting of an xval and yval value, to the dataset

This datapoint will be added at the end of the std::vector's x and y. After this method is called, the plot will be automatically updated to reflect the changes. Do not use this method for PlotData3D objects, an exception will be thrown!

Parameters
xvalan X-value
yvalan Y-value
Exceptions
Gtk::PLplot::Exception

Reimplemented from Gtk::PLplot::PlotData2D.

◆ add_datapoint() [2/4]

virtual void Gtk::PLplot::PlotData3D::add_datapoint ( double  xval,
double  yval,
double  zval 
)
virtual

Add a single datapoint, consisting of an xval, yval and zval value, to the dataset

This datapoint will be added at the end of the std::vector's x, y and z. After this method is called, the plot will be automatically updated to reflect the changes.

Parameters
xvalan X-value
yvalan Y-value
zvalan Z-value

◆ add_datapoint() [3/4]

virtual void Gtk::PLplot::PlotData3D::add_datapoint ( std::pair< double, double >  xy_pair)
finalprivatevirtual

Add a single datapoint, consisting of a std::pair with an X and Y value, to the dataset

This datapoint will be added at the end of the std::vector's x and y. After this method is called, the plot will be automatically updated to reflect the changes. Do not use this method for PlotData3D objects, an exception will be thrown!

Parameters
xy_paira std::pair containing both an X- and a Y- value
Exceptions
Gtk::PLplot::Exception

Reimplemented from Gtk::PLplot::PlotData2D.

◆ add_datapoint() [4/4]

virtual void Gtk::PLplot::PlotData3D::add_datapoint ( std::tuple< double, double, double >  xyz_tuple)
virtual

Add a single datapoint, consisting of a std::tuple with an X, Y and Z value, to the dataset

This datapoint will be added at the end of the std::vector's x, y and z. After this method is called, the plot will be automatically updated to reflect the changes.

Parameters
xyz_tuplea std::tuple containing 3 elements (X, Y and Z).

◆ draw_plot_data()

virtual void Gtk::PLplot::PlotData3D::draw_plot_data ( const Cairo::RefPtr< Cairo::Context > &  cr,
plstream *  pls 
)
overridevirtual

Method to draw the dataset

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

Parameters
crthe cairo context to draw to.
plsthe PLplot plstream object that will do the actual plotting on the Cairo context

Reimplemented from Gtk::PLplot::PlotData2D.

◆ get_vector_z()

std::vector< double > Gtk::PLplot::PlotData3D::get_vector_z ( )
Returns
a copy of the dataset Z-values

◆ operator=()

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

no assignment operator

◆ remove_datapoint()

virtual void Gtk::PLplot::PlotData3D::remove_datapoint ( size_t  index)
overridevirtual

Removes a single datapoint from the dataset.

The datapoint at position index will be removed from the dataset if index is valid. An exception will be thrown otherwise. After this method is called, the plot will be automatically updated to reflect the changes.

Parameters
indexThe current position of the datapoint in the dataset.
Exceptions
Gtk::PLplot::Exception

Reimplemented from Gtk::PLplot::PlotData2D.

◆ replace_datapoints() [1/4]

virtual void Gtk::PLplot::PlotData3D::replace_datapoints ( const std::valarray< double > &  x,
const std::valarray< double > &  y 
)
overrideprivatevirtual

Replaces all datapoints in the dataset with the new valarrays

This method assumes that x and y are valarrays of equal length. An exception will be thrown otherwise. After this method is called, the plot will be automatically updated to reflect the changes. Do not use this method for PlotData3D objects, an exception will be thrown!

Parameters
xThe new X-values, as std::valarray<double>
yThe new Y-values, as std::valarray<double>
Exceptions
Gtk::PLplot::Exception

Reimplemented from Gtk::PLplot::PlotData2D.

◆ replace_datapoints() [2/4]

virtual void Gtk::PLplot::PlotData3D::replace_datapoints ( const std::valarray< double > &  x,
const std::valarray< double > &  y,
const std::valarray< double > &  z 
)
virtual

Replaces all datapoints in the dataset with the new valarrays

This method assumes that x, y and z are valarrays of equal length. An exception will be thrown otherwise. After this method is called, the plot will be automatically updated to reflect the changes.

Parameters
xThe new X-values, as std::valarray<double>
yThe new Y-values, as std::valarray<double>
zThe new Z-values, as std::valarray<double>
Exceptions
Gtk::PLplot::Exception

◆ replace_datapoints() [3/4]

virtual void Gtk::PLplot::PlotData3D::replace_datapoints ( const std::vector< double > &  x,
const std::vector< double > &  y 
)
overrideprivatevirtual

Replaces all datapoints in the dataset with the new vectors

This method assumes that x and y are vectors of equal length. An exception will be thrown otherwise. After this method is called, the plot will be automatically updated to reflect the changes. Do not use this method for PlotData3D objects, an exception will be thrown!

Parameters
xThe new X-values, as std::vector<double>
yThe new Y-values, as std::vector<double>
Exceptions
Gtk::PLplot::Exception

Reimplemented from Gtk::PLplot::PlotData2D.

◆ replace_datapoints() [4/4]

virtual void Gtk::PLplot::PlotData3D::replace_datapoints ( const std::vector< double > &  x,
const std::vector< double > &  y,
const std::vector< double > &  z 
)
virtual

Replaces all datapoints in the dataset with the new vectors

This method assumes that x, y and z are vectors of equal length. An exception will be thrown otherwise. After this method is called, the plot will be automatically updated to reflect the changes.

Parameters
xThe new X-values, as std::vector<double>
yThe new Y-values, as std::vector<double>
zThe new Z-values, as std::vector<double>
Exceptions
Gtk::PLplot::Exception

Member Data Documentation

◆ z

std::vector<double> Gtk::PLplot::PlotData3D::z
protected

The Z-values of the dataset.