diff --git a/CMakeLists.txt b/CMakeLists.txt index 3074a008..854b1266 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.24) project( fplot LANGUAGES Fortran - VERSION 1.10.0 + VERSION 1.11.0 ) diff --git a/README.md b/README.md index b2376a4a..4bc3331c 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,6 @@ The [examples](examples) directory contains complete programs for 2D and 3D plot The FPLOT library depends upon the following libraries. - [COLLECTIONS](https://github.com/jchristopherson/collections) - [FSTRING](https://github.com/jchristopherson/fstring) -- [GEOMPACK](https://github.com/jchristopherson/geompack) - [FORCOLORMAP](https://github.com/vmagnin/forcolormap) ## Example 1 diff --git a/configure/template.cmake b/configure/template.cmake index 8473c872..bdb440ad 100644 --- a/configure/template.cmake +++ b/configure/template.cmake @@ -2,7 +2,6 @@ include(CMakeFindDependencyMacro) find_dependency(collections QUIET) -find_dependency(geompack QUIET) find_dependency(fstring QUIET) if(NOT TARGET "@PROJECT_NAME@::@PROJECT_NAME@") diff --git a/doc/index.html b/doc/index.html index e4597e14..f4e42160 100644 --- a/doc/index.html +++ b/doc/index.html @@ -86,7 +86,7 @@

Jason Christopherson

Source Files

- +

diff --git a/doc/interface/get_string_result.html b/doc/interface/get_string_result.html index cbd988ae..94e21c96 100644 --- a/doc/interface/get_string_result.html +++ b/doc/interface/get_string_result.html @@ -74,7 +74,7 @@

get_string_result
  • 7 statements + title=" 1.3% of total for procedures.">7 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(plot_object), intent(in) @@ -169,7 +169,7 @@

    Arguments

    -

    Return Value character(len=:),allocatable

    +

    Return Value character(len=:),allocatable

    The result string.

    Description

    Returns a string from a plot_object.

    @@ -190,7 +190,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/operator(==).html b/doc/interface/operator(==).html index bfd2f4bd..0053a42f 100644 --- a/doc/interface/operator(==).html +++ b/doc/interface/operator(==).html @@ -74,7 +74,7 @@

    operator(==)
  • 3 statements + title="

    0.6% of total for procedures.

    Including implementation: 11 statements, 2.1% of total for procedures.">3 statements
  • @@ -169,7 +169,7 @@

    Arguments

    - + type(color), intent(in) @@ -184,7 +184,7 @@

    Arguments

    - + type(color), intent(in) @@ -223,7 +223,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/operator(SLASH=).html b/doc/interface/operator(SLASH=).html index 4870eca7..8ef3ccb7 100644 --- a/doc/interface/operator(SLASH=).html +++ b/doc/interface/operator(SLASH=).html @@ -74,7 +74,7 @@

    operator(/=)
  • 3 statements + title="

    0.6% of total for procedures.

    Including implementation: 8 statements, 1.5% of total for procedures.">3 statements
  • @@ -169,7 +169,7 @@

    Arguments

    - + type(color), intent(in) @@ -184,7 +184,7 @@

    Arguments

    - + type(color), intent(in) @@ -223,7 +223,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/pa_get_string_result.html b/doc/interface/pa_get_string_result.html index 9751b6a9..40cefcfa 100644 --- a/doc/interface/pa_get_string_result.html +++ b/doc/interface/pa_get_string_result.html @@ -74,7 +74,7 @@

    pa_get_string_result
  • 7 statements + title=" 1.3% of total for procedures.">7 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(plot_axis), intent(in) @@ -169,7 +169,7 @@

    Arguments

    -

    Return Value character(len=:),allocatable

    +

    Return Value character(len=:),allocatable

    The string.

    Description

    Retrieves a string from a plot_axis.

    @@ -190,7 +190,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/pd_clear_action.html b/doc/interface/pd_clear_action.html index 8559fbc4..47a21ea7 100644 --- a/doc/interface/pd_clear_action.html +++ b/doc/interface/pd_clear_action.html @@ -74,7 +74,7 @@

    pd_clear_action
  • 11 statements + title=" 2.1% of total for procedures.">11 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(plot_data), intent(inout) @@ -188,7 +188,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/pd_get_string_result.html b/doc/interface/pd_get_string_result.html index 0fb37da8..a829ef0b 100644 --- a/doc/interface/pd_get_string_result.html +++ b/doc/interface/pd_get_string_result.html @@ -74,7 +74,7 @@

    pd_get_string_result
  • 11 statements + title=" 2.1% of total for procedures.">11 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(plot_data), intent(in) @@ -169,7 +169,7 @@

    Arguments

    -

    Return Value character(len=:),allocatable

    +

    Return Value character(len=:),allocatable

    The string.

    Description

    Retrieves a string from a plot_data object.

    @@ -190,7 +190,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/simplify_polyline.html b/doc/interface/simplify_polyline.html index 5fa82e17..caf9658d 100644 --- a/doc/interface/simplify_polyline.html +++ b/doc/interface/simplify_polyline.html @@ -74,7 +74,7 @@

    simplify_polyline
  • 5 statements + title="

    0.9% of total for procedures.

    Including implementation: 86 statements, 16.2% of total for procedures.">5 statements
  • @@ -172,7 +172,7 @@

    Arguments

    - + real(kind=real64), intent(in), @@ -188,7 +188,7 @@

    Arguments

    - + real(kind=real64), intent(in), @@ -204,7 +204,7 @@

    Arguments

    - + real(kind=real64), intent(in) @@ -220,7 +220,7 @@

    Arguments

    - + class(errors), intent(inout), @@ -267,7 +267,7 @@

    Arguments

    - + real(kind=real64), intent(in), @@ -283,7 +283,7 @@

    Arguments

    - + real(kind=real64), intent(in), @@ -299,7 +299,7 @@

    Arguments

    - + real(kind=real64), intent(in), @@ -315,7 +315,7 @@

    Arguments

    - + real(kind=real64), intent(in) @@ -331,7 +331,7 @@

    Arguments

    - + class(errors), intent(inout), @@ -379,7 +379,7 @@

    Arguments

    - + real(kind=real64), intent(in), @@ -394,7 +394,7 @@

    Arguments

    - + real(kind=real64), intent(in) @@ -410,7 +410,7 @@

    Arguments

    - + class(errors), intent(inout), @@ -452,7 +452,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/spd_get_int_value.html b/doc/interface/spd_get_int_value.html index e1378249..6e1f9119 100644 --- a/doc/interface/spd_get_int_value.html +++ b/doc/interface/spd_get_int_value.html @@ -74,7 +74,7 @@

    spd_get_int_value
  • 27 statements + title=" 5.1% of total for procedures.">27 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(scatter_plot_data), intent(in) @@ -169,7 +169,7 @@

    Arguments

    -

    Return Value integer(kind=int32)

    +

    Return Value integer(kind=int32)

    The value.

    Description

    Gets an integer value from the scatter_plot_data object.

    @@ -190,7 +190,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/spd_get_string_result.html b/doc/interface/spd_get_string_result.html index d1fec103..e29c9aa3 100644 --- a/doc/interface/spd_get_string_result.html +++ b/doc/interface/spd_get_string_result.html @@ -74,7 +74,7 @@

    spd_get_string_result
  • 27 statements + title=" 5.1% of total for procedures.">27 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(scatter_plot_data), intent(in) @@ -169,7 +169,7 @@

    Arguments

    -

    Return Value character(len=:),allocatable

    +

    Return Value character(len=:),allocatable

    The string.

    Description

    Gets a string value from the scatter_plot_data object.

    @@ -190,7 +190,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/spd_get_value.html b/doc/interface/spd_get_value.html index adb95274..b66bbe50 100644 --- a/doc/interface/spd_get_value.html +++ b/doc/interface/spd_get_value.html @@ -74,7 +74,7 @@

    spd_get_value
  • 27 statements + title=" 5.1% of total for procedures.">27 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(scatter_plot_data), intent(in) @@ -168,7 +168,7 @@

    Arguments

    - + integer(kind=int32), intent(in) @@ -184,7 +184,7 @@

    Arguments

    -

    Return Value real(kind=real64)

    +

    Return Value real(kind=real64)

    The value.

    Description

    Gets an indexed value from the scatter_plot_data object.

    @@ -205,7 +205,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/spd_set_value.html b/doc/interface/spd_set_value.html index f3388518..3d79243f 100644 --- a/doc/interface/spd_set_value.html +++ b/doc/interface/spd_set_value.html @@ -74,7 +74,7 @@

    spd_set_value
  • 27 statements + title=" 5.1% of total for procedures.">27 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(scatter_plot_data), intent(inout) @@ -168,7 +168,7 @@

    Arguments

    - + integer(kind=int32), intent(in) @@ -183,7 +183,7 @@

    Arguments

    - + real(kind=real64), intent(in) @@ -218,7 +218,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/interface/term_get_string_result.html b/doc/interface/term_get_string_result.html index 9424f27f..f90bc5c8 100644 --- a/doc/interface/term_get_string_result.html +++ b/doc/interface/term_get_string_result.html @@ -74,7 +74,7 @@

    term_get_string_result
  • 7 statements + title=" 1.3% of total for procedures.">7 statements
  • @@ -153,7 +153,7 @@

    Arguments

    - + class(terminal), intent(in) @@ -169,7 +169,7 @@

    Arguments

    -

    Return Value character(len=:),allocatable

    +

    Return Value character(len=:),allocatable

    The string.

    Description

    Retrieves a string from a terminal.

    @@ -190,7 +190,7 @@

    Description

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/lists/files.html b/doc/lists/files.html index 74456a1e..997e3621 100644 --- a/doc/lists/files.html +++ b/doc/lists/files.html @@ -69,6 +69,10 @@

    Source Files

    FileDescription + delaunay.f90 + + + fplot_arrow.f90 @@ -256,7 +260,7 @@

    Source Files

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/lists/modules.html b/doc/lists/modules.html index cc29060f..0664d9bb 100644 --- a/doc/lists/modules.html +++ b/doc/lists/modules.html @@ -69,26 +69,33 @@

    Modules

    ModuleSource FileDescription + delaunay + delaunay.f90 +

    Provides a minimal, in-house implementation of the subset of the +GEOMPACK library used by FPLOT to construct 2D Delaunay +triangulations.

    Read more… + + fplot_arrow fplot_arrow.f90 - + fplot_colormap fplot_colormap.f90 - + fplot_colors fplot_colors.f90 - + fplot_constants fplot_constants.f90 - + fplot_core fplot_core.f90

    FPLOT is a Fortran library providing a means of interacting with @@ -98,197 +105,197 @@

    Modules

    Additionally, it is expected that Gnuplot is installed on the system path. For full functionallity, a minimum of GNUPLOT v5.2 is expected.

    - + fplot_core_routines fplot_core_routines.f90 - + fplot_delaunay_tri_surface fplot_delaunay_tri_surface.f90 - + fplot_errors fplot_errors.f90 - + fplot_filled_plot_data fplot_filled_plot_data.f90 - + fplot_label fplot_label.f90 - + fplot_latex_terminal fplot_latex_terminal.f90 - + fplot_legend fplot_legend.f90 - + fplot_multiplot fplot_multiplot.f90 - + fplot_pdf_terminal fplot_pdf_terminal.f90 - + fplot_plot fplot_plot.f90 - + fplot_plot_2d fplot_plot_2d.f90 - + fplot_plot_3d fplot_plot_3d.f90 - + fplot_plot_axis fplot_plot_axis.f90 - + fplot_plot_bar fplot_plot_bar.f90 - + fplot_plot_data fplot_plot_data.f90 - + fplot_plot_data_2d fplot_plot_data_2d.f90 - + fplot_plot_data_3d fplot_plot_data_3d.f90 - + fplot_plot_data_bar fplot_plot_data_bar.f90 - + fplot_plot_data_box_whisker fplot_plot_data_box_whisker.f90 - + fplot_plot_data_error_bars fplot_plot_data_error_bars.f90 - + fplot_plot_data_function fplot_plot_data_function.f90 - + fplot_plot_data_histogram fplot_plot_data_histogram.f90 - + fplot_plot_data_tri_2d fplot_plot_data_tri_2d.f90 - + fplot_plot_object fplot_plot_object.f90 - + fplot_plot_polar fplot_plot_polar.f90 - + fplot_png_terminal fplot_png_terminal.f90 - + fplot_qt_terminal fplot_qt_terminal.f90 - + fplot_simplify fplot_simplify.f90 - + fplot_stats_plots fplot_stats_plots.f90 - + fplot_surface_plot fplot_surface_plot.f90 - + fplot_surface_plot_data fplot_surface_plot_data.f90 - + fplot_svg_terminal fplot_svg_terminal.f90 - + fplot_terminal fplot_terminal.f90 - + fplot_tri_surface_plot_data fplot_tri_surface_plot_data.f90 - + fplot_triangulations_delaunay_2d fplot_triangulations_delaunay_2d.f90 - + fplot_vector_field_plot_data fplot_vector_field_plot_data.f90 - + fplot_windows_terminal fplot_windows_terminal.f90 - + fplot_wxt_terminal fplot_wxt_terminal.f90 - + @@ -304,7 +311,7 @@

    Modules

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/lists/procedures.html b/doc/lists/procedures.html index ade76145..c5119d0f 100644 --- a/doc/lists/procedures.html +++ b/doc/lists/procedures.html @@ -141,6 +141,12 @@

    Procedures

    fplot_plot_data Interface + + + r8tris2 + delaunay + Subroutine +

    Constructs a Delaunay triangulation of 2D vertices.

    Read more… report_array_size_mismatch_error @@ -231,7 +237,7 @@

    Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/lists/types.html b/doc/lists/types.html index ceb0d826..ed681e6c 100644 --- a/doc/lists/types.html +++ b/doc/lists/types.html @@ -329,6 +329,13 @@

    Derived Types

    fplot_plot_data line_plot_data

    A plot_data object for describing scatter plot data sets.

    + + + spectral_colormap + fplot_colormap + colormap +

    Defines the spectral colormap available at +https://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal.

    surface_plot @@ -419,7 +426,7 @@

    Derived Types

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/delaunay.html b/doc/module/delaunay.html new file mode 100644 index 00000000..4c9e415b --- /dev/null +++ b/doc/module/delaunay.html @@ -0,0 +1,337 @@ + + + + + + + + + + + + + delaunay – FPLOT + + + + + + + + + + + + + + +
    + +
    + +
    +
    +

    delaunay + Module + +

    +
    +
    +
    + +
    +
    + +
    +
    +
    + + +
    + +
    +
    + + +
    + +
    +

    Provides a minimal, in-house implementation of the subset of the +GEOMPACK library used by FPLOT to construct 2D Delaunay +triangulations.

    +

    Original FORTRAN77 version by Barry Joe. FORTRAN90 version by +John Burkardt. Reference: Barry Joe, GEOMPACK - a software +package for the generation of meshes using geometric algorithms, +Advances in Engineering Software, Volume 13, pages 325-331, 1991.

    +
    +

    Uses

    +
    + +
    +
    + + +
    + + + + + + + + +
    +

    Subroutines

    +
    +

    public subroutine r8tris2(node_num, node_xy, triangle_num, triangle_node, triangle_neighbor) +

    +
    + +

    Constructs a Delaunay triangulation of 2D vertices.

    Read more… + +

    Arguments

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeIntentOptional AttributesName
    + + integer(kind=int32), + intent(in) + + ::node_num +

    The number of vertices.

    +
    + + real(kind=real64), + intent(inout), + dimension(2, node_num) + ::node_xy +

    The coordinates of the vertices. On output, the vertices +have been sorted into dictionary order.

    +
    + + integer(kind=int32), + intent(out) + + ::triangle_num +

    The number of triangles in the triangulation; +TRIANGLE_NUM is equal to 2*NODE_NUM - NB - 2, where NB is +the number of boundary vertices.

    +
    + + integer(kind=int32), + intent(out), + dimension(3, 2 * node_num) + ::triangle_node +

    The nodes that make up each triangle. The elements are +indices of the vertex array. The vertices of the +triangles are in counter clockwise order.

    +
    + + integer(kind=int32), + intent(out), + dimension(3, 2 * node_num) + ::triangle_neighbor +

    The triangle neighbor list. Positive elements are +indices of TRIANGLE_NODE; negative elements are used for +links of a counter clockwise linked list of boundary +edges; LINK = -(3*I + J-1) where I, J = triangle, edge +index; TRIANGLE_NEIGHBOR(J,I) refers to the neighbor +along the edge from vertex J to J+1 (mod 3).

    +
    + + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    +
    +
    +
    +

    FPLOT was developed by Jason Christopherson
    © 2026 +

    +
    +
    +

    + Documentation generated by + FORD + on 2026-10-01 05:57

    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/module/fplot_arrow.html b/doc/module/fplot_arrow.html index d8803a89..03be08d0 100644 --- a/doc/module/fplot_arrow.html +++ b/doc/module/fplot_arrow.html @@ -74,7 +74,7 @@

    fplot_arrow
  • 296 statements + title=" 3.0% of total for modules and submodules.">296 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -196,7 +196,7 @@

    Type-Bound Procedures

    procedure, public :: - get_command_string => par_get_cmd + get_command_string => par_get_cmd @@ -231,17 +231,17 @@

    Type-Bound Procedures

    procedure, public :: - get_is_visible => par_get_is_visible + get_is_visible => par_get_is_visible procedure, public :: - get_line_style => par_get_line_style + get_line_style => par_get_line_style procedure, public :: - get_line_width => par_get_line_width + get_line_width => par_get_line_width @@ -296,17 +296,17 @@

    Type-Bound Procedures

    procedure, public :: - set_is_visible => par_set_is_visible + set_is_visible => par_set_is_visible procedure, public :: - set_line_style => par_set_line_style + set_line_style => par_set_line_style procedure, public :: - set_line_width => par_set_line_width + set_line_width => par_set_line_width @@ -351,7 +351,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_colormap.html b/doc/module/fplot_colormap.html index 9683a658..8ab0fe67 100644 --- a/doc/module/fplot_colormap.html +++ b/doc/module/fplot_colormap.html @@ -74,7 +74,7 @@

    fplot_colormap
  • 283 statements + title=" 4.0% of total for modules and submodules.">390 statements
  • @@ -141,6 +141,7 @@

    Derived Types

    hot_colormap parula_colormap rainbow_colormap + spectral_colormap @@ -168,12 +169,12 @@

    Uses

    @@ -215,7 +216,7 @@

    Arguments

    - + class(colormap), intent(in) @@ -265,6 +266,16 @@

    Type-Bound Procedures

    + + + + + + + + @@ -272,12 +283,22 @@

    Type-Bound Procedures

    + get_colorbar_length => cm_get_colorbar_length + get_colorbar_thickness => cm_get_colorbar_thickness + + + + + + + + @@ -287,7 +308,7 @@

    Type-Bound Procedures

    + get_label => cm_get_label @@ -297,7 +318,27 @@

    Type-Bound Procedures

    + set_axes_origin => cm_set_axes_origin + + + + + + + + + + + + + + + + @@ -307,7 +348,7 @@

    Type-Bound Procedures

    + set_label => cm_set_label @@ -340,17 +381,37 @@

    Type-Bound Procedures

    + + + + + + + + + get_colorbar_length => cm_get_colorbar_length + get_colorbar_thickness => cm_get_colorbar_thickness + + + + + + + + @@ -360,7 +421,7 @@

    Type-Bound Procedures

    + get_label => cm_get_label @@ -370,7 +431,27 @@

    Type-Bound Procedures

    + set_axes_origin => cm_set_axes_origin + + + + + + + + + + + + + + + + @@ -380,7 +461,7 @@

    Type-Bound Procedures

    + set_label => cm_set_label @@ -423,22 +504,42 @@

    Type-Bound Procedures

    + + + + + + + + + get_colorbar_length => cm_get_colorbar_length + + + + + + + + + get_command_string => cm_get_cmd + get_draw_border => cm_get_draw_border @@ -448,7 +549,7 @@

    Type-Bound Procedures

    + get_label => cm_get_label @@ -458,12 +559,32 @@

    Type-Bound Procedures

    + set_axes_origin => cm_set_axes_origin + + + + + + + + + + + + + + + + + set_draw_border => cm_set_draw_border @@ -473,7 +594,7 @@

    Type-Bound Procedures

    + set_label => cm_set_label @@ -506,17 +627,37 @@

    Type-Bound Procedures

    + + + + + + + + + get_colorbar_length => cm_get_colorbar_length + + + + + get_command_string => cm_get_cmd + + + + @@ -526,7 +667,7 @@

    Type-Bound Procedures

    + get_label => cm_get_label @@ -536,7 +677,27 @@

    Type-Bound Procedures

    + set_axes_origin => cm_set_axes_origin + + + + + + + + + + + + + + + + @@ -546,7 +707,7 @@

    Type-Bound Procedures

    + set_label => cm_set_label @@ -579,17 +740,37 @@

    Type-Bound Procedures

    + + + + + + + + + get_colorbar_length => cm_get_colorbar_length + + + + + + + + + get_draw_border => cm_get_draw_border @@ -599,7 +780,7 @@

    Type-Bound Procedures

    + get_label => cm_get_label @@ -609,7 +790,27 @@

    Type-Bound Procedures

    + set_axes_origin => cm_set_axes_origin + + + + + + + + + + + + + + + + @@ -619,7 +820,7 @@

    Type-Bound Procedures

    + set_label => cm_set_label @@ -652,17 +853,37 @@

    Type-Bound Procedures

    + + + + + + + + + get_colorbar_length => cm_get_colorbar_length + + + + + + + + + get_draw_border => cm_get_draw_border @@ -672,7 +893,7 @@

    Type-Bound Procedures

    + get_label => cm_get_label @@ -682,7 +903,27 @@

    Type-Bound Procedures

    + set_axes_origin => cm_set_axes_origin + + + + + + + + + + + + + + + + @@ -692,7 +933,7 @@

    Type-Bound Procedures

    + set_label => cm_set_label @@ -725,17 +966,37 @@

    Type-Bound Procedures

    + + + + + + + + + get_colorbar_length => cm_get_colorbar_length + + + + + + + + + get_draw_border => cm_get_draw_border @@ -745,7 +1006,7 @@

    Type-Bound Procedures

    + get_label => cm_get_label @@ -755,7 +1016,27 @@

    Type-Bound Procedures

    + set_axes_origin => cm_set_axes_origin + + + + + + + + + + + + + + + + @@ -765,7 +1046,7 @@

    Type-Bound Procedures

    + set_label => cm_set_label @@ -798,17 +1079,151 @@

    Type-Bound Procedures

    + + + + + + + + + get_colorbar_length => cm_get_colorbar_length + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + set_draw_border => cm_set_draw_border + + + + + + + + + + + + + + + +
    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure(cm_get_string_result), public, deferred :: get_color_string
    procedure, public :: - get_command_string => cm_get_cmd
    procedure, public :: - get_draw_border => cm_get_draw_border
    procedure, public :: + get_command_string => cm_get_cmd
    procedure, public :: + get_draw_border => cm_get_draw_border
    procedure, public :: - get_label => cm_get_label
    procedure, public :: - set_draw_border => cm_set_draw_border
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: + set_draw_border => cm_set_draw_border
    procedure, public :: - set_label => cm_set_label
    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure, public :: get_color_string => ccm_get_clr
    procedure, public :: - get_command_string => cm_get_cmd
    procedure, public :: - get_draw_border => cm_get_draw_border
    procedure, public :: + get_command_string => cm_get_cmd
    procedure, public :: + get_draw_border => cm_get_draw_border
    procedure, public :: - get_label => cm_get_label
    procedure, public :: - set_draw_border => cm_set_draw_border
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: + set_draw_border => cm_set_draw_border
    procedure, public :: - set_label => cm_set_label
    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure, public :: get_color_string => custom_get_clr
    procedure, public :: - get_colormap => custom_get
    procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness
    procedure, public :: + get_colormap => custom_get
    procedure, public :: - get_command_string => cm_get_cmd
    procedure, public :: - get_draw_border => cm_get_draw_border
    procedure, public :: - get_label => cm_get_label
    procedure, public :: - set_colormap => custom_set
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: + set_colormap => custom_set
    procedure, public :: - set_draw_border => cm_set_draw_border
    procedure, public :: - set_label => cm_set_label
    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure, public :: get_color_string => ecm_get_clr
    procedure, public :: - get_command_string => cm_get_cmd
    procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness
    procedure, public :: - get_draw_border => cm_get_draw_border
    procedure, public :: + get_draw_border => cm_get_draw_border
    procedure, public :: - get_label => cm_get_label
    procedure, public :: - set_draw_border => cm_set_draw_border
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: + set_draw_border => cm_set_draw_border
    procedure, public :: - set_label => cm_set_label
    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure, public :: get_color_string => gcm_get_clr
    procedure, public :: - get_command_string => cm_get_cmd
    procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness
    procedure, public :: + get_command_string => cm_get_cmd
    procedure, public :: - get_draw_border => cm_get_draw_border
    procedure, public :: - get_label => cm_get_label
    procedure, public :: - set_draw_border => cm_set_draw_border
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: + set_draw_border => cm_set_draw_border
    procedure, public :: - set_label => cm_set_label
    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure, public :: get_color_string => hcm_get_clr
    procedure, public :: - get_command_string => cm_get_cmd
    procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness
    procedure, public :: + get_command_string => cm_get_cmd
    procedure, public :: - get_draw_border => cm_get_draw_border
    procedure, public :: - get_label => cm_get_label
    procedure, public :: - set_draw_border => cm_set_draw_border
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: + set_draw_border => cm_set_draw_border
    procedure, public :: - set_label => cm_set_label
    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure, public :: get_color_string => pcm_get_clr
    procedure, public :: - get_command_string => cm_get_cmd
    procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness
    procedure, public :: + get_command_string => cm_get_cmd
    procedure, public :: - get_draw_border => cm_get_draw_border
    procedure, public :: - get_label => cm_get_label
    procedure, public :: - set_draw_border => cm_set_draw_border
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: + set_draw_border => cm_set_draw_border
    procedure, public :: - set_label => cm_set_label
    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure, public :: get_color_string => rcm_get_clr
    procedure, public :: - get_command_string => cm_get_cmd
    procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness
    procedure, public :: + get_command_string => cm_get_cmd
    procedure, public :: + get_draw_border => cm_get_draw_border
    procedure, public :: + get_horizontal => cm_get_horizontal
    procedure, public :: + get_label => cm_get_label
    procedure, public :: + get_show_tics => cm_get_show_tics
    procedure, public :: + set_axes_origin => cm_set_axes_origin
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: - get_draw_border => cm_get_draw_border
    procedure, public :: + set_horizontal => cm_set_horizontal
    procedure, public :: + set_label => cm_set_label
    procedure, public :: + set_show_tics => cm_set_show_tics
    + + + +
    +
    + +

    + type, public, extends(colormap) ::  + spectral_colormap + +

    +
    +
    +

    Defines the spectral colormap available at +https://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal.

    + + + + +

    Type-Bound Procedures

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -818,7 +1233,7 @@

    Type-Bound Procedures

    + get_label => cm_get_label @@ -828,7 +1243,27 @@

    Type-Bound Procedures

    + set_axes_origin => cm_set_axes_origin + + + + + + + + + + + + + + + + @@ -838,7 +1273,7 @@

    Type-Bound Procedures

    + set_label => cm_set_label @@ -873,7 +1308,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_colors.html b/doc/module/fplot_colors.html index b804ddb1..b411722c 100644 --- a/doc/module/fplot_colors.html +++ b/doc/module/fplot_colors.html @@ -74,7 +74,7 @@

    fplot_colors
  • 144 statements + title=" 1.5% of total for modules and submodules.">144 statements
  • @@ -555,7 +555,7 @@

    Arguments

  • @@ -570,7 +570,7 @@

    Arguments

    @@ -623,7 +623,7 @@

    Arguments

    @@ -638,7 +638,7 @@

    Arguments

    @@ -813,7 +813,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_constants.html b/doc/module/fplot_constants.html index a738ccc0..22b01772 100644 --- a/doc/module/fplot_constants.html +++ b/doc/module/fplot_constants.html @@ -1319,7 +1319,7 @@

    Variables

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_core.html b/doc/module/fplot_core.html index 5ae7fcad..ea377949 100644 --- a/doc/module/fplot_core.html +++ b/doc/module/fplot_core.html @@ -74,7 +74,7 @@

    fplot_core
  • 44 statements + title=" 0.4% of total for modules and submodules.">44 statements
  • @@ -145,47 +145,47 @@

    Uses

    @@ -220,7 +220,7 @@

    Uses

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_core_routines.html b/doc/module/fplot_core_routines.html index a71a59cb..515504b3 100644 --- a/doc/module/fplot_core_routines.html +++ b/doc/module/fplot_core_routines.html @@ -74,7 +74,7 @@

    fplot_core_routines
  • 53 statements + title=" 0.5% of total for modules and submodules.">53 statements
  • @@ -340,7 +340,7 @@

    Arguments

  • @@ -355,7 +355,7 @@

    Arguments

    @@ -402,7 +402,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_delaunay_tri_surface.html b/doc/module/fplot_delaunay_tri_surface.html index f1f5cf88..38a41835 100644 --- a/doc/module/fplot_delaunay_tri_surface.html +++ b/doc/module/fplot_delaunay_tri_surface.html @@ -74,7 +74,7 @@

    fplot_delaunay_tri_surface
  • 133 statements + title=" 1.4% of total for modules and submodules.">133 statements
  • @@ -150,10 +150,10 @@

    Uses

    @@ -265,7 +265,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_errors.html b/doc/module/fplot_errors.html index dd8843f9..95407993 100644 --- a/doc/module/fplot_errors.html +++ b/doc/module/fplot_errors.html @@ -354,7 +354,7 @@

    Arguments

  • @@ -384,7 +384,7 @@

    Arguments

    @@ -454,7 +454,7 @@

    Arguments

    @@ -539,7 +539,7 @@

    Arguments

    @@ -569,7 +569,7 @@

    Arguments

    @@ -584,7 +584,7 @@

    Arguments

    @@ -624,7 +624,7 @@

    Arguments

    @@ -654,7 +654,7 @@

    Arguments

    @@ -754,7 +754,7 @@

    Arguments

    @@ -784,7 +784,7 @@

    Arguments

    @@ -824,7 +824,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_filled_plot_data.html b/doc/module/fplot_filled_plot_data.html index b394aebd..ed83658c 100644 --- a/doc/module/fplot_filled_plot_data.html +++ b/doc/module/fplot_filled_plot_data.html @@ -74,7 +74,7 @@

    fplot_filled_plot_data
  • 129 statements + title=" 1.3% of total for modules and submodules.">129 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => fpd_clear_data @@ -206,7 +206,7 @@

    Type-Bound Procedures

    + define_data => fpd_define_data @@ -221,12 +221,12 @@

    Type-Bound Procedures

    + get_command_string => fpd_get_cmd + get_data_string => fpd_get_data_cmd @@ -301,7 +301,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_label.html b/doc/module/fplot_label.html index 0640f486..6d745494 100644 --- a/doc/module/fplot_label.html +++ b/doc/module/fplot_label.html @@ -74,7 +74,7 @@

    fplot_label
  • 91 statements + title=" 0.9% of total for modules and submodules.">91 statements
  • @@ -150,10 +150,10 @@

    Uses

    @@ -195,12 +195,12 @@

    Type-Bound Procedures

  • + get_command_string => lbl_get_cmd + get_is_visible => lbl_get_is_visible @@ -220,7 +220,7 @@

    Type-Bound Procedures

    + set_is_visible => lbl_set_is_visible @@ -260,7 +260,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_latex_terminal.html b/doc/module/fplot_latex_terminal.html index 288bb586..9e7da380 100644 --- a/doc/module/fplot_latex_terminal.html +++ b/doc/module/fplot_latex_terminal.html @@ -74,7 +74,7 @@

    fplot_latex_terminal
  • 23 statements + title=" 0.2% of total for modules and submodules.">23 statements
  • @@ -150,10 +150,10 @@

    Uses

    @@ -190,7 +190,7 @@

    Type-Bound Procedures

  • + get_command_string => fterm_get_command_string @@ -200,17 +200,17 @@

    Type-Bound Procedures

    + get_font_name => term_get_font_name + get_font_size => term_get_font_size + get_id_string => tex_get_term_string @@ -220,7 +220,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -240,12 +240,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -255,7 +255,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -295,7 +295,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_legend.html b/doc/module/fplot_legend.html index 0c322dfb..9fcb207c 100644 --- a/doc/module/fplot_legend.html +++ b/doc/module/fplot_legend.html @@ -74,7 +74,7 @@

    fplot_legend
  • 151 statements + title=" 1.5% of total for modules and submodules.">151 statements
  • @@ -150,10 +150,10 @@

    Uses

    @@ -190,12 +190,12 @@

    Type-Bound Procedures

  • + get_command_string => leg_get_command_txt + get_draw_border => leg_get_box @@ -215,7 +215,7 @@

    Type-Bound Procedures

    + get_is_visible => leg_get_visible @@ -230,7 +230,7 @@

    Type-Bound Procedures

    + set_draw_border => leg_set_box @@ -250,7 +250,7 @@

    Type-Bound Procedures

    + set_is_visible => leg_set_visible @@ -290,7 +290,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_multiplot.html b/doc/module/fplot_multiplot.html index b3017221..53cea784 100644 --- a/doc/module/fplot_multiplot.html +++ b/doc/module/fplot_multiplot.html @@ -74,7 +74,7 @@

    fplot_multiplot
  • 328 statements + title=" 4.8% of total for modules and submodules.">469 statements
  • @@ -150,21 +150,21 @@

    Uses

    @@ -206,7 +206,7 @@

    Components

  • @@ -241,12 +241,17 @@

    Type-Bound Procedures

    + draw => mp_draw + + + + + get_bottom_margin => mp_get_bottom_margin @@ -256,17 +261,27 @@

    Type-Bound Procedures

    + get_command_string => mp_get_command + get_font_name => mp_get_font + get_font_size => mp_get_font_size + + + + + + + + @@ -276,57 +291,112 @@

    Type-Bound Procedures

    + + + + + get_terminal => mp_get_term + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + set_font_size => mp_set_font_size + set_horizontal_spacing => mp_set_horizontal_spacing + set_left_margin => mp_set_left_margin + set_right_margin => mp_set_right_margin + set_title => mp_set_title + set_top_margin => mp_set_top_margin + set_use_auto_generated_margins => mp_set_use_auto_generated_margins + set_vertical_spacing => mp_set_vertical_spacing + set_window_size => mp_set_window_size @@ -356,7 +426,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_pdf_terminal.html b/doc/module/fplot_pdf_terminal.html index a5e58411..f67aad33 100644 --- a/doc/module/fplot_pdf_terminal.html +++ b/doc/module/fplot_pdf_terminal.html @@ -150,9 +150,9 @@

    Uses

    @@ -189,7 +189,7 @@

    Type-Bound Procedures

    + get_command_string => pdf_get_command_string @@ -199,12 +199,12 @@

    Type-Bound Procedures

    + get_font_name => term_get_font_name + get_font_size => term_get_font_size @@ -224,7 +224,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -244,12 +244,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -264,7 +264,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -304,7 +304,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot.html b/doc/module/fplot_plot.html index 2c4eafbb..be314858 100644 --- a/doc/module/fplot_plot.html +++ b/doc/module/fplot_plot.html @@ -74,7 +74,7 @@

    fplot_plot
  • 833 statements + title=" 8.5% of total for modules and submodules.">833 statements
  • @@ -161,27 +161,27 @@

    Uses

    @@ -218,7 +218,7 @@

    Type-Bound Procedures

  • + clear_all => plt_clear_all @@ -233,7 +233,7 @@

    Type-Bound Procedures

    + draw => plt_draw @@ -243,7 +243,7 @@

    Type-Bound Procedures

    + get => plt_get @@ -268,42 +268,42 @@

    Type-Bound Procedures

    + get_bottom_margin => plt_get_bottom_margin + get_colormap => plt_get_colormap + get_command_string => plt_get_cmd + get_count => plt_get_count + get_draw_border => plt_get_draw_border + get_font_name => plt_get_font + get_font_size => plt_get_font_size + get_label => plt_get_label @@ -313,7 +313,7 @@

    Type-Bound Procedures

    + get_left_margin => plt_get_left_margin @@ -323,7 +323,7 @@

    Type-Bound Procedures

    + get_right_margin => plt_get_right_margin @@ -358,7 +358,7 @@

    Type-Bound Procedures

    + get_terminal => plt_get_term @@ -368,12 +368,12 @@

    Type-Bound Procedures

    + get_title => plt_get_title + get_top_margin => plt_get_top_margin @@ -438,12 +438,12 @@

    Type-Bound Procedures

    + initialize => plt_init + is_title_defined => plt_has_title @@ -468,7 +468,7 @@

    Type-Bound Procedures

    + push => plt_push_data @@ -483,12 +483,12 @@

    Type-Bound Procedures

    + save_file => plt_save + set => plt_set @@ -508,42 +508,42 @@

    Type-Bound Procedures

    + set_bottom_margin => plt_set_bottom_margin + set_colormap => plt_set_colormap + set_draw_border => plt_set_draw_border + set_font_name => plt_set_font + set_font_size => plt_set_font_size + set_label => plt_set_label + set_left_margin => plt_set_left_margin + set_right_margin => plt_set_right_margin @@ -583,17 +583,17 @@

    Type-Bound Procedures

    + set_title => plt_set_title + set_top_margin => plt_set_top_margin + set_window_size => plt_set_window_size @@ -692,7 +692,7 @@

    Arguments

    @@ -738,7 +738,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_2d.html b/doc/module/fplot_plot_2d.html index a55b7b62..3cc2779e 100644 --- a/doc/module/fplot_plot_2d.html +++ b/doc/module/fplot_plot_2d.html @@ -74,7 +74,7 @@

    fplot_plot_2d
  • 408 statements + title=" 4.1% of total for modules and submodules.">408 statements
  • @@ -150,15 +150,15 @@

    Uses

    @@ -204,7 +204,7 @@

    Type-Bound Procedures

  • + clear_all => plt_clear_all @@ -219,7 +219,7 @@

    Type-Bound Procedures

    + draw => plt_draw @@ -229,7 +229,7 @@

    Type-Bound Procedures

    + get => plt_get @@ -254,37 +254,37 @@

    Type-Bound Procedures

    + get_bottom_margin => plt_get_bottom_margin + get_colormap => plt_get_colormap + get_command_string => p2d_get_cmd + get_count => plt_get_count + get_draw_border => plt_get_draw_border + get_font_name => plt_get_font + get_font_size => plt_get_font_size @@ -299,7 +299,7 @@

    Type-Bound Procedures

    + get_label => plt_get_label @@ -309,7 +309,7 @@

    Type-Bound Procedures

    + get_left_margin => plt_get_left_margin @@ -319,7 +319,7 @@

    Type-Bound Procedures

    + get_right_margin => plt_get_right_margin @@ -359,7 +359,7 @@

    Type-Bound Procedures

    + get_terminal => plt_get_term @@ -369,12 +369,12 @@

    Type-Bound Procedures

    + get_title => plt_get_title + get_top_margin => plt_get_top_margin @@ -389,7 +389,7 @@

    Type-Bound Procedures

    + get_x_axis => p2d_get_x_axis @@ -429,7 +429,7 @@

    Type-Bound Procedures

    + get_y_axis => p2d_get_y_axis @@ -464,12 +464,12 @@

    Type-Bound Procedures

    + initialize => p2d_init + is_title_defined => plt_has_title @@ -499,7 +499,7 @@

    Type-Bound Procedures

    + push => plt_push_data, p2d_push_data @@ -514,12 +514,12 @@

    Type-Bound Procedures

    + save_file => plt_save + set => plt_set @@ -539,27 +539,27 @@

    Type-Bound Procedures

    + set_bottom_margin => plt_set_bottom_margin + set_colormap => plt_set_colormap + set_draw_border => plt_set_draw_border + set_font_name => plt_set_font + set_font_size => plt_set_font_size @@ -574,17 +574,17 @@

    Type-Bound Procedures

    + set_label => plt_set_label + set_left_margin => plt_set_left_margin + set_right_margin => plt_set_right_margin @@ -629,12 +629,12 @@

    Type-Bound Procedures

    + set_title => plt_set_title + set_top_margin => plt_set_top_margin @@ -649,12 +649,12 @@

    Type-Bound Procedures

    + set_window_size => plt_set_window_size + set_x_axis_title => p2d_set_x_axis_title @@ -694,7 +694,7 @@

    Type-Bound Procedures

    + set_y_axis_title => p2d_set_y_axis_title @@ -759,7 +759,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_3d.html b/doc/module/fplot_plot_3d.html index 9369d5f3..e70756dc 100644 --- a/doc/module/fplot_plot_3d.html +++ b/doc/module/fplot_plot_3d.html @@ -74,7 +74,7 @@

    fplot_plot_3d
  • 545 statements + title=" 5.5% of total for modules and submodules.">545 statements
  • @@ -150,16 +150,16 @@

    Uses

    @@ -205,7 +205,7 @@

    Type-Bound Procedures

  • + clear_all => plt_clear_all @@ -220,7 +220,7 @@

    Type-Bound Procedures

    + draw => plt_draw @@ -230,7 +230,7 @@

    Type-Bound Procedures

    + get => plt_get @@ -260,17 +260,17 @@

    Type-Bound Procedures

    + get_bottom_margin => plt_get_bottom_margin + get_colormap => plt_get_colormap + get_command_string => p3d_get_cmd @@ -280,12 +280,12 @@

    Type-Bound Procedures

    + get_count => plt_get_count + get_draw_border => plt_get_draw_border @@ -295,17 +295,17 @@

    Type-Bound Procedures

    + get_font_name => plt_get_font + get_font_size => plt_get_font_size + get_label => plt_get_label @@ -315,7 +315,7 @@

    Type-Bound Procedures

    + get_left_margin => plt_get_left_margin @@ -325,7 +325,7 @@

    Type-Bound Procedures

    + get_right_margin => plt_get_right_margin @@ -370,7 +370,7 @@

    Type-Bound Procedures

    + get_terminal => plt_get_term @@ -380,12 +380,12 @@

    Type-Bound Procedures

    + get_title => plt_get_title + get_top_margin => plt_get_top_margin @@ -395,7 +395,7 @@

    Type-Bound Procedures

    + get_x_axis => p3d_get_x_axis @@ -430,7 +430,7 @@

    Type-Bound Procedures

    + get_y_axis => p3d_get_y_axis @@ -505,12 +505,12 @@

    Type-Bound Procedures

    + initialize => p3d_init + is_title_defined => plt_has_title @@ -540,7 +540,7 @@

    Type-Bound Procedures

    + push => plt_push_data, p3d_push_data @@ -555,12 +555,12 @@

    Type-Bound Procedures

    + save_file => plt_save + set => plt_set @@ -585,12 +585,12 @@

    Type-Bound Procedures

    + set_bottom_margin => plt_set_bottom_margin + set_colormap => plt_set_colormap @@ -600,7 +600,7 @@

    Type-Bound Procedures

    + set_draw_border => plt_set_draw_border @@ -610,27 +610,27 @@

    Type-Bound Procedures

    + set_font_name => plt_set_font + set_font_size => plt_set_font_size + set_label => plt_set_label + set_left_margin => plt_set_left_margin + set_right_margin => plt_set_right_margin @@ -680,12 +680,12 @@

    Type-Bound Procedures

    + set_title => plt_set_title + set_top_margin => plt_set_top_margin @@ -695,12 +695,12 @@

    Type-Bound Procedures

    + set_window_size => plt_set_window_size + set_x_axis_title => p3d_set_x_axis_title @@ -735,7 +735,7 @@

    Type-Bound Procedures

    + set_y_axis_title => p3d_set_y_axis_title @@ -840,7 +840,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_axis.html b/doc/module/fplot_plot_axis.html index 8638d530..9859ee19 100644 --- a/doc/module/fplot_plot_axis.html +++ b/doc/module/fplot_plot_axis.html @@ -74,7 +74,7 @@

    fplot_plot_axis
  • 470 statements + title=" 5.1% of total for modules and submodules.">501 statements
  • @@ -166,10 +166,10 @@

    Uses

    @@ -211,7 +211,7 @@

    Arguments

  • @@ -268,7 +268,7 @@

    Components

    @@ -329,12 +329,17 @@

    Type-Bound Procedures

    + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + get_autoscale => pa_get_autoscale + + + + @@ -404,6 +409,11 @@

    Type-Bound Procedures

    + + + + @@ -439,7 +449,12 @@

    Type-Bound Procedures

    + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + + + + @@ -504,6 +519,11 @@

    Type-Bound Procedures

    + + + + @@ -557,12 +577,17 @@

    Type-Bound Procedures

    + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + + + + + get_command_string => pa_get_cmd_string @@ -632,6 +657,11 @@

    Type-Bound Procedures

    + + + + @@ -667,7 +697,12 @@

    Type-Bound Procedures

    + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + + + + @@ -732,6 +767,11 @@

    Type-Bound Procedures

    + + + + @@ -785,12 +825,17 @@

    Type-Bound Procedures

    + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + + + + + get_command_string => pa_get_cmd_string @@ -860,6 +905,11 @@

    Type-Bound Procedures

    + + + + @@ -895,7 +945,12 @@

    Type-Bound Procedures

    + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + + + + @@ -960,6 +1015,11 @@

    Type-Bound Procedures

    + + + + @@ -1013,12 +1073,17 @@

    Type-Bound Procedures

    + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + get_autoscale => pa_get_autoscale + + + + @@ -1088,6 +1153,11 @@

    Type-Bound Procedures

    + + + + @@ -1123,7 +1193,12 @@

    Type-Bound Procedures

    + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + + + + @@ -1188,6 +1263,11 @@

    Type-Bound Procedures

    + + + + @@ -1241,12 +1321,17 @@

    Type-Bound Procedures

    + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + get_autoscale => pa_get_autoscale + + + + @@ -1316,6 +1401,11 @@

    Type-Bound Procedures

    + + + + @@ -1351,7 +1441,12 @@

    Type-Bound Procedures

    + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + + + + @@ -1416,6 +1511,11 @@

    Type-Bound Procedures

    + + + + @@ -1471,7 +1571,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_bar.html b/doc/module/fplot_plot_bar.html index 74201529..9a17b8f2 100644 --- a/doc/module/fplot_plot_bar.html +++ b/doc/module/fplot_plot_bar.html @@ -74,7 +74,7 @@

    fplot_plot_bar
  • 80 statements + title=" 0.8% of total for modules and submodules.">80 statements
  • @@ -150,9 +150,9 @@

    Uses

    @@ -189,7 +189,7 @@

    Type-Bound Procedures

  • + clear_all => plt_clear_all @@ -204,7 +204,7 @@

    Type-Bound Procedures

    + draw => plt_draw @@ -214,7 +214,7 @@

    Type-Bound Procedures

    + get => plt_get @@ -244,37 +244,37 @@

    Type-Bound Procedures

    + get_bottom_margin => plt_get_bottom_margin + get_colormap => plt_get_colormap + get_command_string => pb_get_cmd + get_count => plt_get_count + get_draw_border => plt_get_draw_border + get_font_name => plt_get_font + get_font_size => plt_get_font_size @@ -289,7 +289,7 @@

    Type-Bound Procedures

    + get_label => plt_get_label @@ -299,7 +299,7 @@

    Type-Bound Procedures

    + get_left_margin => plt_get_left_margin @@ -309,7 +309,7 @@

    Type-Bound Procedures

    + get_right_margin => plt_get_right_margin @@ -359,7 +359,7 @@

    Type-Bound Procedures

    + get_terminal => plt_get_term @@ -369,12 +369,12 @@

    Type-Bound Procedures

    + get_title => plt_get_title + get_top_margin => plt_get_top_margin @@ -389,7 +389,7 @@

    Type-Bound Procedures

    + get_x_axis => p2d_get_x_axis @@ -429,7 +429,7 @@

    Type-Bound Procedures

    + get_y_axis => p2d_get_y_axis @@ -464,12 +464,12 @@

    Type-Bound Procedures

    + initialize => p2d_init + is_title_defined => plt_has_title @@ -514,12 +514,12 @@

    Type-Bound Procedures

    + save_file => plt_save + set => plt_set @@ -544,27 +544,27 @@

    Type-Bound Procedures

    + set_bottom_margin => plt_set_bottom_margin + set_colormap => plt_set_colormap + set_draw_border => plt_set_draw_border + set_font_name => plt_set_font + set_font_size => plt_set_font_size @@ -579,17 +579,17 @@

    Type-Bound Procedures

    + set_label => plt_set_label + set_left_margin => plt_set_left_margin + set_right_margin => plt_set_right_margin @@ -644,12 +644,12 @@

    Type-Bound Procedures

    + set_title => plt_set_title + set_top_margin => plt_set_top_margin @@ -664,12 +664,12 @@

    Type-Bound Procedures

    + set_window_size => plt_set_window_size + set_x_axis_title => p2d_set_x_axis_title @@ -709,7 +709,7 @@

    Type-Bound Procedures

    + set_y_axis_title => p2d_set_y_axis_title @@ -774,7 +774,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data.html b/doc/module/fplot_plot_data.html index 87664e7e..d576c7e3 100644 --- a/doc/module/fplot_plot_data.html +++ b/doc/module/fplot_plot_data.html @@ -74,7 +74,7 @@

    fplot_plot_data
  • 459 statements + title=" 4.7% of total for modules and submodules.">459 statements
  • @@ -181,12 +181,12 @@

    Uses

    @@ -228,7 +228,7 @@

    Arguments

  • @@ -276,7 +276,7 @@

    Arguments

    @@ -329,7 +329,7 @@

    Arguments

    @@ -382,7 +382,7 @@

    Arguments

    @@ -435,7 +435,7 @@

    Arguments

    @@ -450,7 +450,7 @@

    Arguments

    @@ -503,7 +503,7 @@

    Arguments

    @@ -518,7 +518,7 @@

    Arguments

    @@ -533,7 +533,7 @@

    Arguments

    @@ -580,12 +580,12 @@

    Type-Bound Procedures

    + clear_all => pd_clear + clear_data @@ -600,12 +600,12 @@

    Type-Bound Procedures

    + get_command_string => lpd_get_cmd + get_data_string @@ -635,12 +635,12 @@

    Type-Bound Procedures

    + get_line_style => lpd_get_line_style + get_line_width => lpd_get_line_width @@ -695,12 +695,12 @@

    Type-Bound Procedures

    + set_line_style => lpd_set_line_style + set_line_width => lpd_set_line_width @@ -748,12 +748,12 @@

    Type-Bound Procedures

    + clear_all => pd_clear + clear_data @@ -763,12 +763,12 @@

    Type-Bound Procedures

    + get_command_string + get_data_string @@ -816,12 +816,12 @@

    Type-Bound Procedures

    + clear_all => pd_clear + clear_data @@ -836,12 +836,12 @@

    Type-Bound Procedures

    + get_command_string + get_data_string @@ -904,12 +904,12 @@

    Type-Bound Procedures

    + clear_all => pd_clear + clear_data @@ -919,7 +919,7 @@

    Type-Bound Procedures

    + get_axes_string @@ -929,17 +929,17 @@

    Type-Bound Procedures

    + get_command_string => spd_get_cmd + get_count + get_data_string @@ -974,12 +974,12 @@

    Type-Bound Procedures

    + get_line_style => lpd_get_line_style + get_line_width => lpd_get_line_width @@ -1024,12 +1024,12 @@

    Type-Bound Procedures

    + get_x + get_y @@ -1069,12 +1069,12 @@

    Type-Bound Procedures

    + set_line_style => lpd_set_line_style + set_line_width => lpd_set_line_width @@ -1119,12 +1119,12 @@

    Type-Bound Procedures

    + set_x + set_y @@ -1158,7 +1158,7 @@

    Arguments

    @@ -1204,7 +1204,7 @@

    Arguments

    @@ -1250,7 +1250,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data_2d.html b/doc/module/fplot_plot_data_2d.html index a5acc88a..302973c7 100644 --- a/doc/module/fplot_plot_data_2d.html +++ b/doc/module/fplot_plot_data_2d.html @@ -74,7 +74,7 @@

    fplot_plot_data_2d
  • 315 statements + title=" 3.2% of total for modules and submodules.">315 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => pd2d_clear_data @@ -206,7 +206,7 @@

    Type-Bound Procedures

    + define_data => pd2d_set_data_1, pd2d_set_data_2 @@ -216,7 +216,7 @@

    Type-Bound Procedures

    + get_color_data => pd2d_get_c_array @@ -226,7 +226,7 @@

    Type-Bound Procedures

    + get_command_string => spd_get_cmd @@ -236,7 +236,7 @@

    Type-Bound Procedures

    + get_data_string => pd2d_get_data_cmd @@ -246,7 +246,7 @@

    Type-Bound Procedures

    + get_draw_against_y2 => pd2d_get_draw_against_y2 @@ -276,12 +276,12 @@

    Type-Bound Procedures

    + get_line_style => lpd_get_line_style + get_line_width => lpd_get_line_width @@ -306,7 +306,7 @@

    Type-Bound Procedures

    + get_point_size_data => pd2d_get_ps_array @@ -336,7 +336,7 @@

    Type-Bound Procedures

    + get_x_data => pd2d_get_x_array @@ -346,7 +346,7 @@

    Type-Bound Procedures

    + get_y_data => pd2d_get_y_array @@ -371,7 +371,7 @@

    Type-Bound Procedures

    + set_draw_against_y2 => pd2d_set_draw_against_y2 @@ -401,12 +401,12 @@

    Type-Bound Procedures

    + set_line_style => lpd_set_line_style + set_line_width => lpd_set_line_width @@ -486,7 +486,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data_3d.html b/doc/module/fplot_plot_data_3d.html index dc31c436..87dcb9bb 100644 --- a/doc/module/fplot_plot_data_3d.html +++ b/doc/module/fplot_plot_data_3d.html @@ -74,7 +74,7 @@

    fplot_plot_data_3d
  • 316 statements + title=" 3.2% of total for modules and submodules.">316 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => pd3d_clear_data @@ -206,17 +206,17 @@

    Type-Bound Procedures

    + define_data => pd3d_set_data_1 + get_axes_string => pd3d_get_axes_cmd + get_color_data => pd3d_get_c_array @@ -226,17 +226,17 @@

    Type-Bound Procedures

    + get_command_string => spd_get_cmd + get_count => pd3d_get_data_count + get_data_string => pd3d_get_data_cmd @@ -271,12 +271,12 @@

    Type-Bound Procedures

    + get_line_style => lpd_get_line_style + get_line_width => lpd_get_line_width @@ -301,7 +301,7 @@

    Type-Bound Procedures

    + get_point_size_data => pd3d_get_c_array @@ -326,22 +326,22 @@

    Type-Bound Procedures

    + get_x => pd3d_get_x_data + get_x_data => pd3d_get_x_array + get_y => pd3d_get_y_data + get_y_data => pd3d_get_y_array @@ -391,12 +391,12 @@

    Type-Bound Procedures

    + set_line_style => lpd_set_line_style + set_line_width => lpd_set_line_width @@ -441,12 +441,12 @@

    Type-Bound Procedures

    + set_x => pd3d_set_x_data + set_y => pd3d_set_y_data @@ -481,7 +481,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data_bar.html b/doc/module/fplot_plot_data_bar.html index 249cc0e9..a7cefd6e 100644 --- a/doc/module/fplot_plot_data_bar.html +++ b/doc/module/fplot_plot_data_bar.html @@ -74,7 +74,7 @@

    fplot_plot_data_bar
  • 570 statements + title=" 5.8% of total for modules and submodules.">570 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => pdb_clear_data @@ -206,17 +206,17 @@

    Type-Bound Procedures

    + define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3, pdb_set_data_4, pdb_set_data_5, pdb_set_data_6 + get => pdb_get_data + get_axes_string => pdb_get_axes_cmd @@ -236,12 +236,12 @@

    Type-Bound Procedures

    + get_command_string => pdb_get_cmd + get_count => pdb_get_count @@ -251,7 +251,7 @@

    Type-Bound Procedures

    + get_data_string => pdb_get_data_cmd @@ -261,17 +261,17 @@

    Type-Bound Procedures

    + get_draw_against_y2 => pdb_get_use_y2 + get_is_filled => pdb_get_is_filled + get_label => pdb_get_label @@ -301,7 +301,7 @@

    Type-Bound Procedures

    + set => pdb_set_data @@ -351,17 +351,17 @@

    Type-Bound Procedures

    + set_draw_against_y2 => pdb_set_use_y2 + set_is_filled => pdb_set_is_filled + set_label => pdb_set_label @@ -416,7 +416,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data_box_whisker.html b/doc/module/fplot_plot_data_box_whisker.html index 23cc0267..78f46bc0 100644 --- a/doc/module/fplot_plot_data_box_whisker.html +++ b/doc/module/fplot_plot_data_box_whisker.html @@ -74,7 +74,7 @@

    fplot_plot_data_box_whisker
  • 282 statements + title=" 2.9% of total for modules and submodules.">282 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => pdbw_clear_data @@ -206,7 +206,7 @@

    Type-Bound Procedures

    + define_data => pdbw_define_data_xstring @@ -226,12 +226,12 @@

    Type-Bound Procedures

    + get_command_string => pdbw_get_cmd + get_data_string => pdbw_get_data_cmd @@ -241,7 +241,7 @@

    Type-Bound Procedures

    + get_draw_against_y2 => pdbw_get_use_y2 @@ -256,7 +256,7 @@

    Type-Bound Procedures

    + get_line_width => pdbw_get_line_width @@ -306,7 +306,7 @@

    Type-Bound Procedures

    + set_draw_against_y2 => pdbw_set_use_y2 @@ -321,7 +321,7 @@

    Type-Bound Procedures

    + set_line_width => pdbw_set_line_width @@ -376,7 +376,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data_error_bars.html b/doc/module/fplot_plot_data_error_bars.html index c5eeb4aa..2e83773c 100644 --- a/doc/module/fplot_plot_data_error_bars.html +++ b/doc/module/fplot_plot_data_error_bars.html @@ -74,7 +74,7 @@

    fplot_plot_data_error_bars
  • 483 statements + title=" 4.9% of total for modules and submodules.">483 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => pde_clear_data @@ -226,17 +226,17 @@

    Type-Bound Procedures

    + get_command_string => pde_get_cmd + get_count => pde_get_count + get_data_string => pde_get_data_cmd @@ -251,7 +251,7 @@

    Type-Bound Procedures

    + get_line_width => pde_get_line_width @@ -326,7 +326,7 @@

    Type-Bound Procedures

    + set_line_width => pde_set_line_width @@ -366,7 +366,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data_function.html b/doc/module/fplot_plot_data_function.html index e398bafb..e330ff31 100644 --- a/doc/module/fplot_plot_data_function.html +++ b/doc/module/fplot_plot_data_function.html @@ -74,7 +74,7 @@

    fplot_plot_data_function
  • 143 statements + title=" 1.5% of total for modules and submodules.">143 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => pdf_clear_data @@ -206,7 +206,7 @@

    Type-Bound Procedures

    + define_data => pdf_define_data @@ -216,12 +216,12 @@

    Type-Bound Procedures

    + get_command_string => pdf_get_cmd + get_data_string => pdf_get_data_cmd @@ -261,12 +261,12 @@

    Type-Bound Procedures

    + get_line_style => lpd_get_line_style + get_line_width => lpd_get_line_width @@ -336,12 +336,12 @@

    Type-Bound Procedures

    + set_line_style => lpd_set_line_style + set_line_width => lpd_set_line_width @@ -406,7 +406,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data_histogram.html b/doc/module/fplot_plot_data_histogram.html index f33b0b14..f54e3e51 100644 --- a/doc/module/fplot_plot_data_histogram.html +++ b/doc/module/fplot_plot_data_histogram.html @@ -74,7 +74,7 @@

    fplot_plot_data_histogram
  • 188 statements + title=" 1.9% of total for modules and submodules.">188 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => pdh_clear_data @@ -206,17 +206,17 @@

    Type-Bound Procedures

    + define_data => pdh_define_data + get => pdh_get_bin_data + get_axes_string => pdh_get_axes_cmd @@ -231,12 +231,12 @@

    Type-Bound Procedures

    + get_command_string => pdh_get_cmd + get_data_string => pdh_get_data_cmd @@ -246,12 +246,12 @@

    Type-Bound Procedures

    + get_draw_against_y2 => pdh_get_use_y2 + get_is_filled => pdh_get_is_filled @@ -291,12 +291,12 @@

    Type-Bound Procedures

    + set_draw_against_y2 => pdh_set_use_y2 + set_is_filled => pdh_set_is_filled @@ -336,7 +336,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_data_tri_2d.html b/doc/module/fplot_plot_data_tri_2d.html index ceb22f7f..c572eaab 100644 --- a/doc/module/fplot_plot_data_tri_2d.html +++ b/doc/module/fplot_plot_data_tri_2d.html @@ -74,7 +74,7 @@

    fplot_plot_data_tri_2d
  • 167 statements + title=" 1.7% of total for modules and submodules.">167 statements
  • @@ -150,12 +150,12 @@

    Uses

    @@ -192,12 +192,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => pdt2d_clear_data @@ -207,7 +207,7 @@

    Type-Bound Procedures

    + define_data => pdt2d_define_data @@ -217,12 +217,12 @@

    Type-Bound Procedures

    + get_command_string => pdt2d_get_cmd + get_data_string => pdt2d_get_data_cmd @@ -237,12 +237,12 @@

    Type-Bound Procedures

    + get_line_style => pdt2d_get_line_style + get_line_width => pdt2d_get_line_width @@ -267,12 +267,12 @@

    Type-Bound Procedures

    + set_line_style => pdt2d_set_line_style + set_line_width => pdt2d_set_line_width @@ -307,7 +307,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_object.html b/doc/module/fplot_plot_object.html index dd1e52ac..18bbf324 100644 --- a/doc/module/fplot_plot_object.html +++ b/doc/module/fplot_plot_object.html @@ -203,7 +203,7 @@

    Arguments

    @@ -255,7 +255,7 @@

    Type-Bound Procedures

    + get_command_string @@ -285,7 +285,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_plot_polar.html b/doc/module/fplot_plot_polar.html index 7690afdb..9ea16e6c 100644 --- a/doc/module/fplot_plot_polar.html +++ b/doc/module/fplot_plot_polar.html @@ -74,7 +74,7 @@

    fplot_plot_polar
  • 240 statements + title=" 2.4% of total for modules and submodules.">240 statements
  • @@ -150,16 +150,16 @@

    Uses

    @@ -205,7 +205,7 @@

    Type-Bound Procedures

  • + clear_all => plt_clear_all @@ -220,7 +220,7 @@

    Type-Bound Procedures

    + draw => plt_draw @@ -230,7 +230,7 @@

    Type-Bound Procedures

    + get => plt_get @@ -245,7 +245,7 @@

    Type-Bound Procedures

    + get_autoscale => plr_get_autoscale @@ -260,42 +260,42 @@

    Type-Bound Procedures

    + get_bottom_margin => plt_get_bottom_margin + get_colormap => plt_get_colormap + get_command_string => plr_get_cmd + get_count => plt_get_count + get_draw_border => plt_get_draw_border + get_font_name => plt_get_font + get_font_size => plt_get_font_size + get_label => plt_get_label @@ -305,7 +305,7 @@

    Type-Bound Procedures

    + get_left_margin => plt_get_left_margin @@ -320,7 +320,7 @@

    Type-Bound Procedures

    + get_right_margin => plt_get_right_margin @@ -355,7 +355,7 @@

    Type-Bound Procedures

    + get_terminal => plt_get_term @@ -375,12 +375,12 @@

    Type-Bound Procedures

    + get_title => plt_get_title + get_top_margin => plt_get_top_margin @@ -445,12 +445,12 @@

    Type-Bound Procedures

    + initialize => plr_init + is_title_defined => plt_has_title @@ -480,7 +480,7 @@

    Type-Bound Procedures

    + push => plt_push_data, plr_push_data @@ -495,12 +495,12 @@

    Type-Bound Procedures

    + save_file => plt_save + set => plt_set @@ -510,7 +510,7 @@

    Type-Bound Procedures

    + set_autoscale => plr_set_autoscale @@ -525,37 +525,37 @@

    Type-Bound Procedures

    + set_bottom_margin => plt_set_bottom_margin + set_colormap => plt_set_colormap + set_draw_border => plt_set_draw_border + set_font_name => plt_set_font + set_font_size => plt_set_font_size + set_label => plt_set_label + set_left_margin => plt_set_left_margin @@ -565,7 +565,7 @@

    Type-Bound Procedures

    + set_right_margin => plt_set_right_margin @@ -615,17 +615,17 @@

    Type-Bound Procedures

    + set_title => plt_set_title + set_top_margin => plt_set_top_margin + set_window_size => plt_set_window_size @@ -720,7 +720,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_png_terminal.html b/doc/module/fplot_png_terminal.html index 0298dbae..c7e360d3 100644 --- a/doc/module/fplot_png_terminal.html +++ b/doc/module/fplot_png_terminal.html @@ -74,7 +74,7 @@

    fplot_png_terminal
  • 23 statements + title=" 0.2% of total for modules and submodules.">23 statements
  • @@ -150,10 +150,10 @@

    Uses

    @@ -190,7 +190,7 @@

    Type-Bound Procedures

  • + get_command_string => fterm_get_command_string @@ -200,17 +200,17 @@

    Type-Bound Procedures

    + get_font_name => term_get_font_name + get_font_size => term_get_font_size + get_id_string => png_get_term_string @@ -220,7 +220,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -240,12 +240,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -255,7 +255,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -295,7 +295,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_qt_terminal.html b/doc/module/fplot_qt_terminal.html index 98007da1..20874f93 100644 --- a/doc/module/fplot_qt_terminal.html +++ b/doc/module/fplot_qt_terminal.html @@ -188,22 +188,22 @@

    Type-Bound Procedures

    + get_command_string => term_get_command_string + get_font_name => term_get_font_name + get_font_size => term_get_font_size + get_id_string => qt_get_term_string @@ -213,7 +213,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -228,12 +228,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -243,7 +243,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -283,7 +283,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_simplify.html b/doc/module/fplot_simplify.html index 5cbe9b32..aa762dfd 100644 --- a/doc/module/fplot_simplify.html +++ b/doc/module/fplot_simplify.html @@ -74,7 +74,7 @@

    fplot_simplify
  • 218 statements + title=" 2.2% of total for modules and submodules.">218 statements
  • @@ -150,8 +150,8 @@

    Uses

    @@ -194,7 +194,7 @@

    Arguments

  • @@ -210,7 +210,7 @@

    Arguments

    @@ -226,7 +226,7 @@

    Arguments

    @@ -242,7 +242,7 @@

    Arguments

    @@ -288,7 +288,7 @@

    Arguments

    @@ -304,7 +304,7 @@

    Arguments

    @@ -320,7 +320,7 @@

    Arguments

    @@ -336,7 +336,7 @@

    Arguments

    @@ -352,7 +352,7 @@

    Arguments

    @@ -399,7 +399,7 @@

    Arguments

    @@ -414,7 +414,7 @@

    Arguments

    @@ -430,7 +430,7 @@

    Arguments

    @@ -483,7 +483,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_stats_plots.html b/doc/module/fplot_stats_plots.html index f47f82e4..5520bbe3 100644 --- a/doc/module/fplot_stats_plots.html +++ b/doc/module/fplot_stats_plots.html @@ -74,7 +74,7 @@

    fplot_stats_plots
  • 203 statements + title=" 2.1% of total for modules and submodules.">203 statements
  • @@ -150,20 +150,20 @@

    Uses

    @@ -201,12 +201,12 @@

    Type-Bound Procedures

  • + draw => cp_draw + get => cp_get @@ -216,17 +216,17 @@

    Type-Bound Procedures

    + get_command_string => cp_get_command + get_font_name => cp_get_font + get_font_size => cp_get_font_size @@ -241,27 +241,27 @@

    Type-Bound Procedures

    + get_terminal => cp_get_term + initialize => cp_init + save_file => cp_save + set_font_name => cp_set_font + set_font_size => cp_set_font_size @@ -291,7 +291,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_surface_plot.html b/doc/module/fplot_surface_plot.html index acdc1388..2895ed71 100644 --- a/doc/module/fplot_surface_plot.html +++ b/doc/module/fplot_surface_plot.html @@ -74,7 +74,7 @@

    fplot_surface_plot
  • 183 statements + title=" 1.9% of total for modules and submodules.">183 statements
  • @@ -150,12 +150,12 @@

    Uses

    @@ -192,7 +192,7 @@

    Type-Bound Procedures

  • + clear_all => plt_clear_all @@ -207,7 +207,7 @@

    Type-Bound Procedures

    + draw => plt_draw @@ -217,7 +217,7 @@

    Type-Bound Procedures

    + get => plt_get @@ -252,17 +252,17 @@

    Type-Bound Procedures

    + get_bottom_margin => plt_get_bottom_margin + get_colormap => plt_get_colormap + get_command_string => surf_get_cmd @@ -272,12 +272,12 @@

    Type-Bound Procedures

    + get_count => plt_get_count + get_draw_border => plt_get_draw_border @@ -287,17 +287,17 @@

    Type-Bound Procedures

    + get_font_name => plt_get_font + get_font_size => plt_get_font_size + get_label => plt_get_label @@ -307,7 +307,7 @@

    Type-Bound Procedures

    + get_left_margin => plt_get_left_margin @@ -322,7 +322,7 @@

    Type-Bound Procedures

    + get_right_margin => plt_get_right_margin @@ -382,7 +382,7 @@

    Type-Bound Procedures

    + get_terminal => plt_get_term @@ -392,12 +392,12 @@

    Type-Bound Procedures

    + get_title => plt_get_title + get_top_margin => plt_get_top_margin @@ -417,7 +417,7 @@

    Type-Bound Procedures

    + get_x_axis => p3d_get_x_axis @@ -452,7 +452,7 @@

    Type-Bound Procedures

    + get_y_axis => p3d_get_y_axis @@ -527,12 +527,12 @@

    Type-Bound Procedures

    + initialize => surf_init + is_title_defined => plt_has_title @@ -562,7 +562,7 @@

    Type-Bound Procedures

    + push => plt_push_data, p3d_push_data, surf_push_data @@ -577,12 +577,12 @@

    Type-Bound Procedures

    + save_file => plt_save + set => plt_set @@ -612,12 +612,12 @@

    Type-Bound Procedures

    + set_bottom_margin => plt_set_bottom_margin + set_colormap => plt_set_colormap @@ -627,7 +627,7 @@

    Type-Bound Procedures

    + set_draw_border => plt_set_draw_border @@ -637,22 +637,22 @@

    Type-Bound Procedures

    + set_font_name => plt_set_font + set_font_size => plt_set_font_size + set_label => plt_set_label + set_left_margin => plt_set_left_margin @@ -662,7 +662,7 @@

    Type-Bound Procedures

    + set_right_margin => plt_set_right_margin @@ -727,12 +727,12 @@

    Type-Bound Procedures

    + set_title => plt_set_title + set_top_margin => plt_set_top_margin @@ -752,12 +752,12 @@

    Type-Bound Procedures

    + set_window_size => plt_set_window_size + set_x_axis_title => p3d_set_x_axis_title @@ -792,7 +792,7 @@

    Type-Bound Procedures

    + set_y_axis_title => p3d_set_y_axis_title @@ -902,7 +902,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_surface_plot_data.html b/doc/module/fplot_surface_plot_data.html index 69541c5c..9971afd4 100644 --- a/doc/module/fplot_surface_plot_data.html +++ b/doc/module/fplot_surface_plot_data.html @@ -74,7 +74,7 @@

    fplot_surface_plot_data
  • 208 statements + title=" 2.1% of total for modules and submodules.">208 statements
  • @@ -150,10 +150,10 @@

    Uses

    @@ -190,12 +190,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => surfd_clear_data @@ -205,17 +205,17 @@

    Type-Bound Procedures

    + define_data => surfd_set_data_1 + get_command_string => surfd_get_cmd + get_data_string => surfd_get_data_cmd @@ -235,17 +235,17 @@

    Type-Bound Procedures

    + get_use_wireframe => surfd_get_wireframe + get_x => surfd_get_x + get_y => surfd_get_y @@ -265,17 +265,17 @@

    Type-Bound Procedures

    + set_use_wireframe => surfd_set_wireframe + set_x => surfd_set_x + set_y => surfd_set_y @@ -310,7 +310,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_svg_terminal.html b/doc/module/fplot_svg_terminal.html index 0182ab8d..54834ba4 100644 --- a/doc/module/fplot_svg_terminal.html +++ b/doc/module/fplot_svg_terminal.html @@ -74,7 +74,7 @@

    fplot_svg_terminal
  • 23 statements + title=" 0.2% of total for modules and submodules.">23 statements
  • @@ -150,10 +150,10 @@

    Uses

    @@ -190,7 +190,7 @@

    Type-Bound Procedures

  • + get_command_string => fterm_get_command_string @@ -200,17 +200,17 @@

    Type-Bound Procedures

    + get_font_name => term_get_font_name + get_font_size => term_get_font_size + get_id_string => svg_get_term_string @@ -220,7 +220,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -240,12 +240,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -255,7 +255,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -295,7 +295,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_terminal.html b/doc/module/fplot_terminal.html index b127b2ed..87f7f3d5 100644 --- a/doc/module/fplot_terminal.html +++ b/doc/module/fplot_terminal.html @@ -74,7 +74,7 @@

    fplot_terminal
  • 214 statements + title=" 2.2% of total for modules and submodules.">214 statements
  • @@ -162,10 +162,10 @@

    Uses

    @@ -207,7 +207,7 @@

    Arguments

  • @@ -260,7 +260,7 @@

    Type-Bound Procedures

    + get_command_string => fterm_get_command_string @@ -270,17 +270,17 @@

    Type-Bound Procedures

    + get_font_name => term_get_font_name + get_font_size => term_get_font_size + get_id_string @@ -290,7 +290,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -310,12 +310,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -325,7 +325,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -363,22 +363,22 @@

    Type-Bound Procedures

    + get_command_string => term_get_command_string + get_font_name => term_get_font_name + get_font_size => term_get_font_size + get_id_string @@ -388,7 +388,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -403,12 +403,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -418,7 +418,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -458,7 +458,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_tri_surface_plot_data.html b/doc/module/fplot_tri_surface_plot_data.html index f3c9f80f..ecad17d4 100644 --- a/doc/module/fplot_tri_surface_plot_data.html +++ b/doc/module/fplot_tri_surface_plot_data.html @@ -74,7 +74,7 @@

    fplot_tri_surface_plot_data
  • 145 statements + title=" 1.5% of total for modules and submodules.">145 statements
  • @@ -150,10 +150,10 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => tspd_clear_data @@ -206,17 +206,17 @@

    Type-Bound Procedures

    + define_data => tspd_define_data + get_command_string => tspd_get_cmd + get_data_string => tspd_get_data_cmd @@ -231,7 +231,7 @@

    Type-Bound Procedures

    + get_use_wireframe => tspd_get_wireframe @@ -246,7 +246,7 @@

    Type-Bound Procedures

    + set_use_wireframe => tspd_set_wireframe @@ -276,7 +276,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_triangulations_delaunay_2d.html b/doc/module/fplot_triangulations_delaunay_2d.html index e6760525..c1fd7984 100644 --- a/doc/module/fplot_triangulations_delaunay_2d.html +++ b/doc/module/fplot_triangulations_delaunay_2d.html @@ -74,7 +74,7 @@

    fplot_triangulations_delaunay_2d
  • 148 statements + title=" 1.5% of total for modules and submodules.">148 statements
  • @@ -150,9 +150,9 @@

    Uses

    @@ -249,7 +249,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_vector_field_plot_data.html b/doc/module/fplot_vector_field_plot_data.html index 5285b128..6d71096c 100644 --- a/doc/module/fplot_vector_field_plot_data.html +++ b/doc/module/fplot_vector_field_plot_data.html @@ -74,7 +74,7 @@

    fplot_vector_field_plot_data
  • 208 statements + title=" 2.1% of total for modules and submodules.">208 statements
  • @@ -150,11 +150,11 @@

    Uses

    @@ -191,12 +191,12 @@

    Type-Bound Procedures

  • + clear_all => pd_clear + clear_data => vfpd_clear_data @@ -206,7 +206,7 @@

    Type-Bound Procedures

    + define_data => vfpd_define_data @@ -221,12 +221,12 @@

    Type-Bound Procedures

    + get_command_string => vfpd_get_cmd + get_data_string => vfpd_get_data_cmd @@ -311,7 +311,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_windows_terminal.html b/doc/module/fplot_windows_terminal.html index 112efd32..9ebadb82 100644 --- a/doc/module/fplot_windows_terminal.html +++ b/doc/module/fplot_windows_terminal.html @@ -188,17 +188,17 @@

    Type-Bound Procedures

    + get_command_string => term_get_command_string + get_font_name => term_get_font_name + get_font_size => term_get_font_size @@ -213,7 +213,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -228,12 +228,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -243,7 +243,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -283,7 +283,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/module/fplot_wxt_terminal.html b/doc/module/fplot_wxt_terminal.html index f25bef8a..cfefd75a 100644 --- a/doc/module/fplot_wxt_terminal.html +++ b/doc/module/fplot_wxt_terminal.html @@ -188,22 +188,22 @@

    Type-Bound Procedures

    + get_command_string => term_get_command_string + get_font_name => term_get_font_name + get_font_size => term_get_font_size + get_id_string => wxt_get_term_string @@ -213,7 +213,7 @@

    Type-Bound Procedures

    + get_title => term_get_title @@ -228,12 +228,12 @@

    Type-Bound Procedures

    + set_font_name => term_set_font_name + set_font_size => term_set_font_size @@ -243,7 +243,7 @@

    Type-Bound Procedures

    + set_title => term_set_title @@ -283,7 +283,7 @@

    Type-Bound Procedures

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/is_plot_data_function.html b/doc/proc/is_plot_data_function.html index 3d988901..d49843cf 100644 --- a/doc/proc/is_plot_data_function.html +++ b/doc/proc/is_plot_data_function.html @@ -74,7 +74,7 @@

    is_plot_data_function
  • 10 statements + title=" 1.9% of total for procedures.">10 statements
  • @@ -154,7 +154,7 @@

    Arguments

  • @@ -172,7 +172,7 @@

    Arguments

    Return Value - + logical

    @@ -205,7 +205,7 @@

    Return Value

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/linspace.html b/doc/proc/linspace.html index 131af021..8a2e9f93 100644 --- a/doc/proc/linspace.html +++ b/doc/proc/linspace.html @@ -74,7 +74,7 @@

    linspace
  • 14 statements + title=" 2.6% of total for procedures.">14 statements
  • @@ -201,7 +201,7 @@

    Arguments

    Return Value - + real(kind=real64), allocatable, dimension(:)

    @@ -234,7 +234,7 @@

    Return Value

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/logspace.html b/doc/proc/logspace.html index a0e26d1c..0e132a9b 100644 --- a/doc/proc/logspace.html +++ b/doc/proc/logspace.html @@ -74,7 +74,7 @@

    logspace
  • 15 statements + title=" 2.8% of total for procedures.">15 statements
  • @@ -201,7 +201,7 @@

    Arguments

    Return Value - + real(kind=real64), allocatable, dimension(:)

    @@ -234,7 +234,7 @@

    Return Value

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/lpd_get_cmd.html b/doc/proc/lpd_get_cmd.html index f0fbffcb..42365d33 100644 --- a/doc/proc/lpd_get_cmd.html +++ b/doc/proc/lpd_get_cmd.html @@ -74,7 +74,7 @@

    lpd_get_cmd
  • 50 statements + title=" 9.4% of total for procedures.">50 statements
  • @@ -156,7 +156,7 @@

    Arguments

  • @@ -174,7 +174,7 @@

    Arguments

    Return Value - + character(len=:), allocatable

    @@ -207,7 +207,7 @@

    Return Value

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/meshgrid.html b/doc/proc/meshgrid.html index e899dbcb..ac10bb02 100644 --- a/doc/proc/meshgrid.html +++ b/doc/proc/meshgrid.html @@ -74,7 +74,7 @@

    meshgrid
  • 15 statements + title=" 2.8% of total for procedures.">15 statements
  • @@ -153,7 +153,7 @@

    Arguments

  • @@ -168,7 +168,7 @@

    Arguments

    @@ -186,7 +186,7 @@

    Arguments

    Return Value - + real(kind=real64), allocatable, dimension(:,:,:)

    @@ -220,7 +220,7 @@

    Return Value

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/r8tris2.html b/doc/proc/r8tris2.html new file mode 100644 index 00000000..576c9b3b --- /dev/null +++ b/doc/proc/r8tris2.html @@ -0,0 +1,304 @@ + + + + + + + + + + + + + r8tris2 – FPLOT + + + + + + + + + + + + + + +
    + +
    + +
    +
    +

    r8tris2 + Subroutine + +

    +
    +
    +
    + +
    +
    + +
    +
    +
    + + +
    + +
    + + +
    +

    public subroutine r8tris2(node_num, node_xy, triangle_num, triangle_node, triangle_neighbor) +

    + + +

    Constructs a Delaunay triangulation of 2D vertices.

    +

    The routine constructs the Delaunay triangulation of a set of +2D vertices using an incremental approach and diagonal edge +swaps. Vertices are first sorted in lexicographically +increasing (X,Y) order, and then are inserted one at a time +from outside the convex hull.

    + + +

    Arguments

    +

    procedure, public :: + get_axes_origin => cm_get_axes_origin
    procedure, public :: + get_axes_size => cm_get_axes_size
    procedure, public :: + get_color_string => spcm_get_clr
    procedure, public :: + get_colorbar_length => cm_get_colorbar_length
    procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness
    procedure, public :: + get_command_string => cm_get_cmd
    procedure, public :: + get_draw_border => cm_get_draw_border
    procedure, public :: - get_label => cm_get_label
    procedure, public :: - set_draw_border => cm_set_draw_border
    procedure, public :: + set_axes_size => cm_set_axes_size
    procedure, public :: + set_colorbar_length => cm_set_colorbar_length
    procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness
    procedure, public :: + set_draw_border => cm_set_draw_border
    procedure, public :: - set_label => cm_set_label
    - + type(color), intent(in)
    - + type(color), intent(in)
    - + type(color), intent(in)
    - + type(color), intent(in)
    - + real(kind=real64), intent(in),
    - + real(kind=real64), intent(in),
    - + class(errors), intent(inout)
    - + character(len=*), intent(in)
    - + class(errors), intent(inout)
    - + class(errors), intent(inout)
    - + character(len=*), intent(in)
    - + integer(kind=int32), intent(in)
    - + class(errors), intent(inout)
    - + character(len=*), intent(in)
    - + class(errors), intent(inout)
    - + integer(kind=int32), intent(in)
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => fpd_clear_data
    procedure, public :: - define_data => fpd_define_data
    procedure, public :: - get_command_string => fpd_get_cmd
    procedure, public :: - get_data_string => fpd_get_data_cmd
    procedure, public :: - get_command_string => lbl_get_cmd
    procedure, public :: - get_is_visible => lbl_get_is_visible
    procedure, public :: - set_is_visible => lbl_set_is_visible
    procedure, public :: - get_command_string => fterm_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure, public :: - get_id_string => tex_get_term_string
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    procedure, public :: - get_command_string => leg_get_command_txt
    procedure, public :: - get_draw_border => leg_get_box
    procedure, public :: - get_is_visible => leg_get_visible
    procedure, public :: - set_draw_border => leg_set_box
    procedure, public :: - set_is_visible => leg_set_visible
    - + class(terminal), public,
    procedure, public :: - draw => mp_draw
    procedure, public :: + get => mp_get
    procedure, public :: - get => mp_get
    procedure, public :: - get_command_string => mp_get_command
    procedure, public :: - get_font_name => mp_get_font
    procedure, public :: - get_font_size => mp_get_font_size
    procedure, public :: + get_horizontal_spacing => mp_get_horizontal_spacing
    procedure, public :: + get_left_margin => mp_get_left_margin
    procedure, public :: + get_right_margin => mp_get_right_margin
    procedure, public :: get_row_count => mp_get_rows
    procedure, public :: - get_terminal => mp_get_term
    procedure, public :: + get_title => mp_get_title
    procedure, public :: + get_top_margin => mp_get_top_margin
    procedure, public :: + get_use_auto_generated_margins => mp_get_use_auto_generated_margins
    procedure, public :: + get_vertical_spacing => mp_get_vertical_spacing
    procedure, public :: + initialize => mp_init
    procedure, public :: + is_title_defined => mp_has_title
    procedure, public :: + save_file => mp_save
    procedure, public :: + set => mp_set
    procedure, public :: + set_bottom_margin => mp_set_bottom_margin
    procedure, public :: + set_font_name => mp_set_font
    procedure, public :: - get_title => mp_get_title
    procedure, public :: - initialize => mp_init
    procedure, public :: - is_title_defined => mp_has_title
    procedure, public :: - save_file => mp_save
    procedure, public :: - set => mp_set
    procedure, public :: - set_font_name => mp_set_font
    procedure, public :: - set_font_size => mp_set_font_size
    procedure, public :: - set_title => mp_set_title
    procedure, public :: - set_window_size => mp_set_window_size
    procedure, public :: - get_command_string => pdf_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    procedure, public :: - clear_all => plt_clear_all
    procedure, public :: - draw => plt_draw
    procedure, public :: - get => plt_get
    procedure, public :: - get_bottom_margin => plt_get_bottom_margin
    procedure, public :: - get_colormap => plt_get_colormap
    procedure, public :: - get_command_string => plt_get_cmd
    procedure, public :: - get_count => plt_get_count
    procedure, public :: - get_draw_border => plt_get_draw_border
    procedure, public :: - get_font_name => plt_get_font
    procedure, public :: - get_font_size => plt_get_font_size
    procedure, public :: - get_label => plt_get_label
    procedure, public :: - get_left_margin => plt_get_left_margin
    procedure, public :: - get_right_margin => plt_get_right_margin
    procedure, public :: - get_terminal => plt_get_term
    procedure, public :: - get_title => plt_get_title
    procedure, public :: - get_top_margin => plt_get_top_margin
    procedure, public :: - initialize => plt_init
    procedure, public :: - is_title_defined => plt_has_title
    generic, public :: - push => plt_push_data
    procedure, public :: - save_file => plt_save
    procedure, public :: - set => plt_set
    procedure, public :: - set_bottom_margin => plt_set_bottom_margin
    procedure, public :: - set_colormap => plt_set_colormap
    procedure, public :: - set_draw_border => plt_set_draw_border
    procedure, public :: - set_font_name => plt_set_font
    procedure, public :: - set_font_size => plt_set_font_size
    procedure, public :: - set_label => plt_set_label
    procedure, public :: - set_left_margin => plt_set_left_margin
    procedure, public :: - set_right_margin => plt_set_right_margin
    procedure, public :: - set_title => plt_set_title
    procedure, public :: - set_top_margin => plt_set_top_margin
    procedure, public :: - set_window_size => plt_set_window_size
    - + class(plot_data), intent(in)
    procedure, public :: - clear_all => plt_clear_all
    procedure, public :: - draw => plt_draw
    procedure, public :: - get => plt_get
    procedure, public :: - get_bottom_margin => plt_get_bottom_margin
    procedure, public :: - get_colormap => plt_get_colormap
    procedure, public :: - get_command_string => p2d_get_cmd
    procedure, public :: - get_count => plt_get_count
    procedure, public :: - get_draw_border => plt_get_draw_border
    procedure, public :: - get_font_name => plt_get_font
    procedure, public :: - get_font_size => plt_get_font_size
    procedure, public :: - get_label => plt_get_label
    procedure, public :: - get_left_margin => plt_get_left_margin
    procedure, public :: - get_right_margin => plt_get_right_margin
    procedure, public :: - get_terminal => plt_get_term
    procedure, public :: - get_title => plt_get_title
    procedure, public :: - get_top_margin => plt_get_top_margin
    procedure, public :: - get_x_axis => p2d_get_x_axis
    procedure, public :: - get_y_axis => p2d_get_y_axis
    procedure, public :: - initialize => p2d_init
    procedure, public :: - is_title_defined => plt_has_title
    generic, public :: - push => plt_push_data, p2d_push_data
    procedure, public :: - save_file => plt_save
    procedure, public :: - set => plt_set
    procedure, public :: - set_bottom_margin => plt_set_bottom_margin
    procedure, public :: - set_colormap => plt_set_colormap
    procedure, public :: - set_draw_border => plt_set_draw_border
    procedure, public :: - set_font_name => plt_set_font
    procedure, public :: - set_font_size => plt_set_font_size
    procedure, public :: - set_label => plt_set_label
    procedure, public :: - set_left_margin => plt_set_left_margin
    procedure, public :: - set_right_margin => plt_set_right_margin
    procedure, public :: - set_title => plt_set_title
    procedure, public :: - set_top_margin => plt_set_top_margin
    procedure, public :: - set_window_size => plt_set_window_size
    procedure, public :: - set_x_axis_title => p2d_set_x_axis_title
    procedure, public :: - set_y_axis_title => p2d_set_y_axis_title
    procedure, public :: - clear_all => plt_clear_all
    procedure, public :: - draw => plt_draw
    procedure, public :: - get => plt_get
    procedure, public :: - get_bottom_margin => plt_get_bottom_margin
    procedure, public :: - get_colormap => plt_get_colormap
    procedure, public :: - get_command_string => p3d_get_cmd
    procedure, public :: - get_count => plt_get_count
    procedure, public :: - get_draw_border => plt_get_draw_border
    procedure, public :: - get_font_name => plt_get_font
    procedure, public :: - get_font_size => plt_get_font_size
    procedure, public :: - get_label => plt_get_label
    procedure, public :: - get_left_margin => plt_get_left_margin
    procedure, public :: - get_right_margin => plt_get_right_margin
    procedure, public :: - get_terminal => plt_get_term
    procedure, public :: - get_title => plt_get_title
    procedure, public :: - get_top_margin => plt_get_top_margin
    procedure, public :: - get_x_axis => p3d_get_x_axis
    procedure, public :: - get_y_axis => p3d_get_y_axis
    procedure, public :: - initialize => p3d_init
    procedure, public :: - is_title_defined => plt_has_title
    generic, public :: - push => plt_push_data, p3d_push_data
    procedure, public :: - save_file => plt_save
    procedure, public :: - set => plt_set
    procedure, public :: - set_bottom_margin => plt_set_bottom_margin
    procedure, public :: - set_colormap => plt_set_colormap
    procedure, public :: - set_draw_border => plt_set_draw_border
    procedure, public :: - set_font_name => plt_set_font
    procedure, public :: - set_font_size => plt_set_font_size
    procedure, public :: - set_label => plt_set_label
    procedure, public :: - set_left_margin => plt_set_left_margin
    procedure, public :: - set_right_margin => plt_set_right_margin
    procedure, public :: - set_title => plt_set_title
    procedure, public :: - set_top_margin => plt_set_top_margin
    procedure, public :: - set_window_size => plt_set_window_size
    procedure, public :: - set_x_axis_title => p3d_set_x_axis_title
    procedure, public :: - set_y_axis_title => p3d_set_y_axis_title
    - + class(plot_axis), intent(in)
    - + character(len=:), public,
    procedure, public :: - get_autoscale => pa_get_autoscale
    procedure, public :: - get_command_string => pa_get_cmd_string
    procedure, public :: + get_command_string => pa_get_cmd_string
    procedure, public :: + get_title_angle => pa_get_title_angle
    procedure, public :: get_title_x_offset => pa_get_title_x_offset
    procedure, public :: - set_autoscale => pa_set_autoscale
    procedure, public :: + set_autoscale => pa_set_autoscale
    procedure, public :: + set_title_angle => pa_set_title_angle
    procedure, public :: set_title_x_offset => pa_set_title_x_offset
    procedure, public :: - get_autoscale => pa_get_autoscale
    procedure, public :: + get_autoscale => pa_get_autoscale
    procedure, public :: - get_command_string => pa_get_cmd_string
    procedure, public :: + get_title_angle => pa_get_title_angle
    procedure, public :: get_title_x_offset => pa_get_title_x_offset
    procedure, public :: - set_autoscale => pa_set_autoscale
    procedure, public :: + set_autoscale => pa_set_autoscale
    procedure, public :: + set_title_angle => pa_set_title_angle
    procedure, public :: set_title_x_offset => pa_set_title_x_offset
    procedure, public :: - get_autoscale => pa_get_autoscale
    procedure, public :: + get_autoscale => pa_get_autoscale
    procedure, public :: - get_command_string => pa_get_cmd_string
    procedure, public :: + get_title_angle => pa_get_title_angle
    procedure, public :: get_title_x_offset => pa_get_title_x_offset
    procedure, public :: - set_autoscale => pa_set_autoscale
    procedure, public :: + set_autoscale => pa_set_autoscale
    procedure, public :: + set_title_angle => pa_set_title_angle
    procedure, public :: set_title_x_offset => pa_set_title_x_offset
    procedure, public :: - get_autoscale => pa_get_autoscale
    procedure, public :: - get_command_string => pa_get_cmd_string
    procedure, public :: + get_command_string => pa_get_cmd_string
    procedure, public :: + get_title_angle => pa_get_title_angle
    procedure, public :: get_title_x_offset => pa_get_title_x_offset
    procedure, public :: - set_autoscale => pa_set_autoscale
    procedure, public :: + set_autoscale => pa_set_autoscale
    procedure, public :: + set_title_angle => pa_set_title_angle
    procedure, public :: set_title_x_offset => pa_set_title_x_offset
    procedure, public :: - get_autoscale => pa_get_autoscale
    procedure, public :: - get_command_string => pa_get_cmd_string
    procedure, public :: + get_command_string => pa_get_cmd_string
    procedure, public :: + get_title_angle => pa_get_title_angle
    procedure, public :: get_title_x_offset => pa_get_title_x_offset
    procedure, public :: - set_autoscale => pa_set_autoscale
    procedure, public :: + set_autoscale => pa_set_autoscale
    procedure, public :: + set_title_angle => pa_set_title_angle
    procedure, public :: set_title_x_offset => pa_set_title_x_offset
    procedure, public :: - clear_all => plt_clear_all
    procedure, public :: - draw => plt_draw
    procedure, public :: - get => plt_get
    procedure, public :: - get_bottom_margin => plt_get_bottom_margin
    procedure, public :: - get_colormap => plt_get_colormap
    procedure, public :: - get_command_string => pb_get_cmd
    procedure, public :: - get_count => plt_get_count
    procedure, public :: - get_draw_border => plt_get_draw_border
    procedure, public :: - get_font_name => plt_get_font
    procedure, public :: - get_font_size => plt_get_font_size
    procedure, public :: - get_label => plt_get_label
    procedure, public :: - get_left_margin => plt_get_left_margin
    procedure, public :: - get_right_margin => plt_get_right_margin
    procedure, public :: - get_terminal => plt_get_term
    procedure, public :: - get_title => plt_get_title
    procedure, public :: - get_top_margin => plt_get_top_margin
    procedure, public :: - get_x_axis => p2d_get_x_axis
    procedure, public :: - get_y_axis => p2d_get_y_axis
    procedure, public :: - initialize => p2d_init
    procedure, public :: - is_title_defined => plt_has_title
    procedure, public :: - save_file => plt_save
    procedure, public :: - set => plt_set
    procedure, public :: - set_bottom_margin => plt_set_bottom_margin
    procedure, public :: - set_colormap => plt_set_colormap
    procedure, public :: - set_draw_border => plt_set_draw_border
    procedure, public :: - set_font_name => plt_set_font
    procedure, public :: - set_font_size => plt_set_font_size
    procedure, public :: - set_label => plt_set_label
    procedure, public :: - set_left_margin => plt_set_left_margin
    procedure, public :: - set_right_margin => plt_set_right_margin
    procedure, public :: - set_title => plt_set_title
    procedure, public :: - set_top_margin => plt_set_top_margin
    procedure, public :: - set_window_size => plt_set_window_size
    procedure, public :: - set_x_axis_title => p2d_set_x_axis_title
    procedure, public :: - set_y_axis_title => p2d_set_y_axis_title
    - + class(plot_data), intent(inout)
    - + class(plot_data), intent(in)
    - + class(scatter_plot_data), intent(in)
    - + class(scatter_plot_data), intent(in)
    - + class(scatter_plot_data), intent(in)
    - + integer(kind=int32), intent(in)
    - + class(scatter_plot_data), intent(inout)
    - + integer(kind=int32), intent(in)
    - + real(kind=real64), intent(in)
    procedure, public :: - clear_all => pd_clear
    procedure(pd_clear_action), public, deferred :: - clear_data
    procedure, public :: - get_command_string => lpd_get_cmd
    procedure(pd_get_string_result), public, deferred :: - get_data_string
    procedure, public :: - get_line_style => lpd_get_line_style
    procedure, public :: - get_line_width => lpd_get_line_width
    procedure, public :: - set_line_style => lpd_set_line_style
    procedure, public :: - set_line_width => lpd_set_line_width
    procedure, public :: - clear_all => pd_clear
    procedure(pd_clear_action), public, deferred :: - clear_data
    procedure(get_string_result), public, deferred :: - get_command_string
    procedure(pd_get_string_result), public, deferred :: - get_data_string
    procedure, public :: - clear_all => pd_clear
    procedure(pd_clear_action), public, deferred :: - clear_data
    procedure(get_string_result), public, deferred :: - get_command_string
    procedure(pd_get_string_result), public, deferred :: - get_data_string
    procedure, public :: - clear_all => pd_clear
    procedure(pd_clear_action), public, deferred :: - clear_data
    procedure(spd_get_string_result), public, deferred :: - get_axes_string
    procedure, public :: - get_command_string => spd_get_cmd
    procedure(spd_get_int_value), public, deferred :: - get_count
    procedure(pd_get_string_result), public, deferred :: - get_data_string
    procedure, public :: - get_line_style => lpd_get_line_style
    procedure, public :: - get_line_width => lpd_get_line_width
    procedure(spd_get_value), public, deferred :: - get_x
    procedure(spd_get_value), public, deferred :: - get_y
    procedure, public :: - set_line_style => lpd_set_line_style
    procedure, public :: - set_line_width => lpd_set_line_width
    procedure(spd_set_value), public, deferred :: - set_x
    procedure(spd_set_value), public, deferred :: - set_y
    - + class(line_plot_data), intent(in)
    - + class(scatter_plot_data), intent(in)
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => pd2d_clear_data
    generic, public :: - define_data => pd2d_set_data_1, pd2d_set_data_2
    procedure, public :: - get_color_data => pd2d_get_c_array
    procedure, public :: - get_command_string => spd_get_cmd
    procedure, public :: - get_data_string => pd2d_get_data_cmd
    procedure, public :: - get_draw_against_y2 => pd2d_get_draw_against_y2
    procedure, public :: - get_line_style => lpd_get_line_style
    procedure, public :: - get_line_width => lpd_get_line_width
    procedure, public :: - get_point_size_data => pd2d_get_ps_array
    procedure, public :: - get_x_data => pd2d_get_x_array
    procedure, public :: - get_y_data => pd2d_get_y_array
    procedure, public :: - set_draw_against_y2 => pd2d_set_draw_against_y2
    procedure, public :: - set_line_style => lpd_set_line_style
    procedure, public :: - set_line_width => lpd_set_line_width
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => pd3d_clear_data
    procedure, public :: - define_data => pd3d_set_data_1
    procedure, public :: - get_axes_string => pd3d_get_axes_cmd
    procedure, public :: - get_color_data => pd3d_get_c_array
    procedure, public :: - get_command_string => spd_get_cmd
    procedure, public :: - get_count => pd3d_get_data_count
    procedure, public :: - get_data_string => pd3d_get_data_cmd
    procedure, public :: - get_line_style => lpd_get_line_style
    procedure, public :: - get_line_width => lpd_get_line_width
    procedure, public :: - get_point_size_data => pd3d_get_c_array
    procedure, public :: - get_x => pd3d_get_x_data
    procedure, public :: - get_x_data => pd3d_get_x_array
    procedure, public :: - get_y => pd3d_get_y_data
    procedure, public :: - get_y_data => pd3d_get_y_array
    procedure, public :: - set_line_style => lpd_set_line_style
    procedure, public :: - set_line_width => lpd_set_line_width
    procedure, public :: - set_x => pd3d_set_x_data
    procedure, public :: - set_y => pd3d_set_y_data
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => pdb_clear_data
    generic, public :: - define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3, pdb_set_data_4, pdb_set_data_5, pdb_set_data_6
    procedure, public :: - get => pdb_get_data
    procedure, public :: - get_axes_string => pdb_get_axes_cmd
    procedure, public :: - get_command_string => pdb_get_cmd
    procedure, public :: - get_count => pdb_get_count
    procedure, public :: - get_data_string => pdb_get_data_cmd
    procedure, public :: - get_draw_against_y2 => pdb_get_use_y2
    procedure, public :: - get_is_filled => pdb_get_is_filled
    procedure, public :: - get_label => pdb_get_label
    procedure, public :: - set => pdb_set_data
    procedure, public :: - set_draw_against_y2 => pdb_set_use_y2
    procedure, public :: - set_is_filled => pdb_set_is_filled
    procedure, public :: - set_label => pdb_set_label
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => pdbw_clear_data
    procedure, public :: - define_data => pdbw_define_data_xstring
    procedure, public :: - get_command_string => pdbw_get_cmd
    procedure, public :: - get_data_string => pdbw_get_data_cmd
    procedure, public :: - get_draw_against_y2 => pdbw_get_use_y2
    procedure, public :: - get_line_width => pdbw_get_line_width
    procedure, public :: - set_draw_against_y2 => pdbw_set_use_y2
    procedure, public :: - set_line_width => pdbw_set_line_width
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => pde_clear_data
    procedure, public :: - get_command_string => pde_get_cmd
    procedure, public :: - get_count => pde_get_count
    procedure, public :: - get_data_string => pde_get_data_cmd
    procedure, public :: - get_line_width => pde_get_line_width
    procedure, public :: - set_line_width => pde_set_line_width
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => pdf_clear_data
    procedure, public :: - define_data => pdf_define_data
    procedure, public :: - get_command_string => pdf_get_cmd
    procedure, public :: - get_data_string => pdf_get_data_cmd
    procedure, public :: - get_line_style => lpd_get_line_style
    procedure, public :: - get_line_width => lpd_get_line_width
    procedure, public :: - set_line_style => lpd_set_line_style
    procedure, public :: - set_line_width => lpd_set_line_width
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => pdh_clear_data
    procedure, public :: - define_data => pdh_define_data
    procedure, public :: - get => pdh_get_bin_data
    procedure, public :: - get_axes_string => pdh_get_axes_cmd
    procedure, public :: - get_command_string => pdh_get_cmd
    procedure, public :: - get_data_string => pdh_get_data_cmd
    procedure, public :: - get_draw_against_y2 => pdh_get_use_y2
    procedure, public :: - get_is_filled => pdh_get_is_filled
    procedure, public :: - set_draw_against_y2 => pdh_set_use_y2
    procedure, public :: - set_is_filled => pdh_set_is_filled
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => pdt2d_clear_data
    procedure, public :: - define_data => pdt2d_define_data
    procedure, public :: - get_command_string => pdt2d_get_cmd
    procedure, public :: - get_data_string => pdt2d_get_data_cmd
    procedure, public :: - get_line_style => pdt2d_get_line_style
    procedure, public :: - get_line_width => pdt2d_get_line_width
    procedure, public :: - set_line_style => pdt2d_set_line_style
    procedure, public :: - set_line_width => pdt2d_set_line_width
    - + class(plot_object), intent(in)
    procedure(get_string_result), public, deferred :: - get_command_string
    procedure, public :: - clear_all => plt_clear_all
    procedure, public :: - draw => plt_draw
    procedure, public :: - get => plt_get
    procedure, public :: - get_autoscale => plr_get_autoscale
    procedure, public :: - get_bottom_margin => plt_get_bottom_margin
    procedure, public :: - get_colormap => plt_get_colormap
    procedure, public :: - get_command_string => plr_get_cmd
    procedure, public :: - get_count => plt_get_count
    procedure, public :: - get_draw_border => plt_get_draw_border
    procedure, public :: - get_font_name => plt_get_font
    procedure, public :: - get_font_size => plt_get_font_size
    procedure, public :: - get_label => plt_get_label
    procedure, public :: - get_left_margin => plt_get_left_margin
    procedure, public :: - get_right_margin => plt_get_right_margin
    procedure, public :: - get_terminal => plt_get_term
    procedure, public :: - get_title => plt_get_title
    procedure, public :: - get_top_margin => plt_get_top_margin
    procedure, public :: - initialize => plr_init
    procedure, public :: - is_title_defined => plt_has_title
    generic, public :: - push => plt_push_data, plr_push_data
    procedure, public :: - save_file => plt_save
    procedure, public :: - set => plt_set
    procedure, public :: - set_autoscale => plr_set_autoscale
    procedure, public :: - set_bottom_margin => plt_set_bottom_margin
    procedure, public :: - set_colormap => plt_set_colormap
    procedure, public :: - set_draw_border => plt_set_draw_border
    procedure, public :: - set_font_name => plt_set_font
    procedure, public :: - set_font_size => plt_set_font_size
    procedure, public :: - set_label => plt_set_label
    procedure, public :: - set_left_margin => plt_set_left_margin
    procedure, public :: - set_right_margin => plt_set_right_margin
    procedure, public :: - set_title => plt_set_title
    procedure, public :: - set_top_margin => plt_set_top_margin
    procedure, public :: - set_window_size => plt_set_window_size
    procedure, public :: - get_command_string => fterm_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure, public :: - get_id_string => png_get_term_string
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    procedure, public :: - get_command_string => term_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure, public :: - get_id_string => qt_get_term_string
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    - + real(kind=real64), intent(in),
    - + real(kind=real64), intent(in),
    - + real(kind=real64), intent(in)
    - + class(errors), intent(inout),
    - + real(kind=real64), intent(in),
    - + real(kind=real64), intent(in),
    - + real(kind=real64), intent(in),
    - + real(kind=real64), intent(in)
    - + class(errors), intent(inout),
    - + real(kind=real64), intent(in),
    - + real(kind=real64), intent(in)
    - + class(errors), intent(inout),
    procedure, public :: - draw => cp_draw
    procedure, public :: - get => cp_get
    procedure, public :: - get_command_string => cp_get_command
    procedure, public :: - get_font_name => cp_get_font
    procedure, public :: - get_font_size => cp_get_font_size
    procedure, public :: - get_terminal => cp_get_term
    procedure, public :: - initialize => cp_init
    procedure, public :: - save_file => cp_save
    procedure, public :: - set_font_name => cp_set_font
    procedure, public :: - set_font_size => cp_set_font_size
    procedure, public :: - clear_all => plt_clear_all
    procedure, public :: - draw => plt_draw
    procedure, public :: - get => plt_get
    procedure, public :: - get_bottom_margin => plt_get_bottom_margin
    procedure, public :: - get_colormap => plt_get_colormap
    procedure, public :: - get_command_string => surf_get_cmd
    procedure, public :: - get_count => plt_get_count
    procedure, public :: - get_draw_border => plt_get_draw_border
    procedure, public :: - get_font_name => plt_get_font
    procedure, public :: - get_font_size => plt_get_font_size
    procedure, public :: - get_label => plt_get_label
    procedure, public :: - get_left_margin => plt_get_left_margin
    procedure, public :: - get_right_margin => plt_get_right_margin
    procedure, public :: - get_terminal => plt_get_term
    procedure, public :: - get_title => plt_get_title
    procedure, public :: - get_top_margin => plt_get_top_margin
    procedure, public :: - get_x_axis => p3d_get_x_axis
    procedure, public :: - get_y_axis => p3d_get_y_axis
    procedure, public :: - initialize => surf_init
    procedure, public :: - is_title_defined => plt_has_title
    generic, public :: - push => plt_push_data, p3d_push_data, surf_push_data
    procedure, public :: - save_file => plt_save
    procedure, public :: - set => plt_set
    procedure, public :: - set_bottom_margin => plt_set_bottom_margin
    procedure, public :: - set_colormap => plt_set_colormap
    procedure, public :: - set_draw_border => plt_set_draw_border
    procedure, public :: - set_font_name => plt_set_font
    procedure, public :: - set_font_size => plt_set_font_size
    procedure, public :: - set_label => plt_set_label
    procedure, public :: - set_left_margin => plt_set_left_margin
    procedure, public :: - set_right_margin => plt_set_right_margin
    procedure, public :: - set_title => plt_set_title
    procedure, public :: - set_top_margin => plt_set_top_margin
    procedure, public :: - set_window_size => plt_set_window_size
    procedure, public :: - set_x_axis_title => p3d_set_x_axis_title
    procedure, public :: - set_y_axis_title => p3d_set_y_axis_title
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => surfd_clear_data
    procedure, public :: - define_data => surfd_set_data_1
    procedure, public :: - get_command_string => surfd_get_cmd
    procedure, public :: - get_data_string => surfd_get_data_cmd
    procedure, public :: - get_use_wireframe => surfd_get_wireframe
    procedure, public :: - get_x => surfd_get_x
    procedure, public :: - get_y => surfd_get_y
    procedure, public :: - set_use_wireframe => surfd_set_wireframe
    procedure, public :: - set_x => surfd_set_x
    procedure, public :: - set_y => surfd_set_y
    procedure, public :: - get_command_string => fterm_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure, public :: - get_id_string => svg_get_term_string
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    - + class(terminal), intent(in)
    procedure, public :: - get_command_string => fterm_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure(term_get_string_result), public, deferred :: - get_id_string
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    procedure, public :: - get_command_string => term_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure(term_get_string_result), public, deferred :: - get_id_string
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => tspd_clear_data
    procedure, public :: - define_data => tspd_define_data
    procedure, public :: - get_command_string => tspd_get_cmd
    procedure, public :: - get_data_string => tspd_get_data_cmd
    procedure, public :: - get_use_wireframe => tspd_get_wireframe
    procedure, public :: - set_use_wireframe => tspd_set_wireframe
    procedure, public :: - clear_all => pd_clear
    procedure, public :: - clear_data => vfpd_clear_data
    procedure, public :: - define_data => vfpd_define_data
    procedure, public :: - get_command_string => vfpd_get_cmd
    procedure, public :: - get_data_string => vfpd_get_data_cmd
    procedure, public :: - get_command_string => term_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    procedure, public :: - get_command_string => term_get_command_string
    procedure, public :: - get_font_name => term_get_font_name
    procedure, public :: - get_font_size => term_get_font_size
    procedure, public :: - get_id_string => wxt_get_term_string
    procedure, public :: - get_title => term_get_title
    procedure, public :: - set_font_name => term_set_font_name
    procedure, public :: - set_font_size => term_set_font_size
    procedure, public :: - set_title => term_set_title
    - + class(plot_data), intent(in)
    - + class(line_plot_data), intent(in)
    - + real(kind=real64), intent(in),
    - + real(kind=real64), intent(in),
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeIntentOptional AttributesName
    + + integer(kind=int32), + intent(in) + + ::node_num +

    The number of vertices.

    +
    + + real(kind=real64), + intent(inout), + dimension(2, node_num) + ::node_xy +

    The coordinates of the vertices. On output, the vertices +have been sorted into dictionary order.

    +
    + + integer(kind=int32), + intent(out) + + ::triangle_num +

    The number of triangles in the triangulation; +TRIANGLE_NUM is equal to 2*NODE_NUM - NB - 2, where NB is +the number of boundary vertices.

    +
    + + integer(kind=int32), + intent(out), + dimension(3, 2 * node_num) + ::triangle_node +

    The nodes that make up each triangle. The elements are +indices of the vertex array. The vertices of the +triangles are in counter clockwise order.

    +
    + + integer(kind=int32), + intent(out), + dimension(3, 2 * node_num) + ::triangle_neighbor +

    The triangle neighbor list. Positive elements are +indices of TRIANGLE_NODE; negative elements are used for +links of a counter clockwise linked list of boundary +edges; LINK = -(3*I + J-1) where I, J = triangle, edge +index; TRIANGLE_NEIGHBOR(J,I) refers to the neighbor +along the edge from vertex J to J+1 (mod 3).

    +
    + +
    + + + + + + + + + + + + +
    +
    + +
    + +
    +
    +
    +

    FPLOT was developed by Jason Christopherson
    © 2026 +

    +
    +
    +

    + Documentation generated by + FORD + on 2026-10-01 05:57

    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/proc/report_array_size_mismatch_error.html b/doc/proc/report_array_size_mismatch_error.html index 8ca1c8e5..ec1affdd 100644 --- a/doc/proc/report_array_size_mismatch_error.html +++ b/doc/proc/report_array_size_mismatch_error.html @@ -74,7 +74,7 @@

    report_array_size_mismatch_error
  • 11 statements + title=" 2.1% of total for procedures.">11 statements
  • @@ -164,7 +164,7 @@

    Arguments

    - + class(errors), intent(inout) @@ -194,7 +194,7 @@

    Arguments

    - + character(len=*), intent(in) @@ -302,7 +302,7 @@

    Variables

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/report_error.html b/doc/proc/report_error.html index 73e4e828..e138850c 100644 --- a/doc/proc/report_error.html +++ b/doc/proc/report_error.html @@ -74,7 +74,7 @@

    report_error
  • 8 statements + title=" 1.5% of total for procedures.">8 statements
  • @@ -154,7 +154,7 @@

    Arguments

    - + class(errors), intent(inout) @@ -243,7 +243,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/report_file_create_error.html b/doc/proc/report_file_create_error.html index f6a6209e..b6e56874 100644 --- a/doc/proc/report_file_create_error.html +++ b/doc/proc/report_file_create_error.html @@ -74,7 +74,7 @@

    report_file_create_error
  • 10 statements + title=" 1.9% of total for procedures.">10 statements
  • @@ -164,7 +164,7 @@

    Arguments

    - + class(errors), intent(inout) @@ -194,7 +194,7 @@

    Arguments

    - + character(len=*), intent(in) @@ -209,7 +209,7 @@

    Arguments

    - + integer(kind=int32), intent(in) @@ -287,7 +287,7 @@

    Variables

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/report_matrix_size_mismatch_error.html b/doc/proc/report_matrix_size_mismatch_error.html index 43561b77..4614049b 100644 --- a/doc/proc/report_matrix_size_mismatch_error.html +++ b/doc/proc/report_matrix_size_mismatch_error.html @@ -74,7 +74,7 @@

    report_matrix_size_mismatch_error
  • 13 statements + title=" 2.5% of total for procedures.">13 statements
  • @@ -164,7 +164,7 @@

    Arguments

    - + class(errors), intent(inout) @@ -194,7 +194,7 @@

    Arguments

    - + character(len=*), intent(in) @@ -332,7 +332,7 @@

    Variables

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/report_memory_error.html b/doc/proc/report_memory_error.html index 4ca41403..263ccbf2 100644 --- a/doc/proc/report_memory_error.html +++ b/doc/proc/report_memory_error.html @@ -74,7 +74,7 @@

    report_memory_error
  • 9 statements + title=" 1.7% of total for procedures.">9 statements
  • @@ -164,7 +164,7 @@

    Arguments

    - + class(errors), intent(inout) @@ -194,7 +194,7 @@

    Arguments

    - + integer(kind=int32), intent(in) @@ -272,7 +272,7 @@

    Variables

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/proc/spd_get_cmd.html b/doc/proc/spd_get_cmd.html index f5827aba..ee847727 100644 --- a/doc/proc/spd_get_cmd.html +++ b/doc/proc/spd_get_cmd.html @@ -74,7 +74,7 @@

    spd_get_cmd
  • 64 statements + title="12.1% of total for procedures.">64 statements
  • @@ -156,7 +156,7 @@

    Arguments

    - + class(scatter_plot_data), intent(in) @@ -174,7 +174,7 @@

    Arguments

    Return Value - + character(len=:), allocatable

    @@ -207,7 +207,7 @@

    Return Value

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/search.html b/doc/search.html index 75a14aa5..c16b7dfd 100644 --- a/doc/search.html +++ b/doc/search.html @@ -95,7 +95,7 @@

    Search Results

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/delaunay.f90.html b/doc/sourcefile/delaunay.f90.html new file mode 100644 index 00000000..6b4ff790 --- /dev/null +++ b/doc/sourcefile/delaunay.f90.html @@ -0,0 +1,1085 @@ + + + + + + + + + + + + + delaunay.f90 – FPLOT + + + + + + + + + + + + + + +
    + +
    + +
    +
    +

    delaunay.f90 + Source File + +

    +
    +
    +
    + +
    +
    + +
    +
    +
    + + +
    +
    + +
    + +
    + +
    +

    Source Code

    +
    module delaunay
    +    !! Provides a minimal, in-house implementation of the subset of the
    +    !! GEOMPACK library used by FPLOT to construct 2D Delaunay
    +    !! triangulations.
    +    !!
    +    !! Original FORTRAN77 version by Barry Joe.  FORTRAN90 version by
    +    !! John Burkardt.  Reference: Barry Joe, GEOMPACK - a software
    +    !! package for the generation of meshes using geometric algorithms,
    +    !! Advances in Engineering Software, Volume 13, pages 325-331, 1991.
    +    use iso_fortran_env, only : int32, real64
    +    implicit none
    +    private
    +    public :: r8tris2
    +
    +contains
    +! ------------------------------------------------------------------------------
    +    subroutine r8tris2(node_num, node_xy, triangle_num, triangle_node, &
    +            triangle_neighbor)
    +        !! Constructs a Delaunay triangulation of 2D vertices.
    +        !!
    +        !! The routine constructs the Delaunay triangulation of a set of
    +        !! 2D vertices using an incremental approach and diagonal edge
    +        !! swaps.  Vertices are first sorted in lexicographically
    +        !! increasing (X,Y) order, and then are inserted one at a time
    +        !! from outside the convex hull.
    +        integer(int32), intent(in) :: node_num
    +            !! The number of vertices.
    +        real(real64), intent(inout), dimension(2, node_num) :: node_xy
    +            !! The coordinates of the vertices.  On output, the vertices
    +            !! have been sorted into dictionary order.
    +        integer(int32), intent(out) :: triangle_num
    +            !! The number of triangles in the triangulation;
    +            !! TRIANGLE_NUM is equal to 2*NODE_NUM - NB - 2, where NB is
    +            !! the number of boundary vertices.
    +        integer(int32), intent(out), dimension(3, 2 * node_num) :: &
    +            triangle_node
    +            !! The nodes that make up each triangle.  The elements are
    +            !! indices of the vertex array.  The vertices of the
    +            !! triangles are in counter clockwise order.
    +        integer(int32), intent(out), dimension(3, 2 * node_num) :: &
    +            triangle_neighbor
    +            !! The triangle neighbor list.  Positive elements are
    +            !! indices of TRIANGLE_NODE; negative elements are used for
    +            !! links of a counter clockwise linked list of boundary
    +            !! edges; LINK = -(3*I + J-1) where I, J = triangle, edge
    +            !! index; TRIANGLE_NEIGHBOR(J,I) refers to the neighbor
    +            !! along the edge from vertex J to J+1 (mod 3).
    +
    +        ! Local Variables
    +        real(real64) :: cmax, tol
    +        integer(int32) :: e, i, j, k, l, ledg, lr, ltri, m, m1, m2, &
    +            n, redg, rtri, t, top
    +        integer(int32), dimension(node_num) :: indx, stack
    +
    +        ! Initialization
    +        tol = 100.0d0 * epsilon(tol)
    +
    +        ! Sort the vertices by increasing (x,y)
    +        call r82vec_sort_heap_index_a(node_num, node_xy, indx)
    +        call r82vec_permute(node_num, node_xy, indx)
    +
    +        ! Make sure that the data points are "reasonably" distinct
    +        m1 = 1
    +        do i = 2, node_num
    +            m = m1
    +            m1 = i
    +            k = 0
    +            do j = 1, 2
    +                cmax = max(abs(node_xy(j, m)), abs(node_xy(j, m1)))
    +                if (tol * (cmax + 1.0d0) < &
    +                        abs(node_xy(j, m) - node_xy(j, m1))) then
    +                    k = j
    +                    exit
    +                end if
    +            end do
    +            if (k == 0) then
    +                error stop &
    +                    "R8TRIS2 - Fatal error!  Two points are too close together."
    +            end if
    +        end do
    +
    +        ! Starting from points M1 and M2, search for a third point M that
    +        ! makes a "healthy" triangle (M1,M2,M)
    +        m1 = 1
    +        m2 = 2
    +        j = 3
    +        do
    +            if (node_num < j) then
    +                error stop &
    +                    "R8TRIS2 - Fatal error!  Could not find a non-collinear point."
    +            end if
    +
    +            m = j
    +            lr = lrline(node_xy(1, m), node_xy(2, m), node_xy(1, m1), &
    +                node_xy(2, m1), node_xy(1, m2), node_xy(2, m2), 0.0d0)
    +            if (lr /= 0) exit
    +            j = j + 1
    +        end do
    +
    +        ! Set up the triangle information for (M1,M2,M), and for any
    +        ! other triangles created because points were collinear with M1,
    +        ! M2
    +        triangle_num = j - 2
    +
    +        if (lr == -1) then
    +            triangle_node(1, 1) = m1
    +            triangle_node(2, 1) = m2
    +            triangle_node(3, 1) = m
    +            triangle_neighbor(3, 1) = -3
    +
    +            do i = 2, triangle_num
    +                m1 = m2
    +                m2 = i + 1
    +                triangle_node(1, i) = m1
    +                triangle_node(2, i) = m2
    +                triangle_node(3, i) = m
    +                triangle_neighbor(1, i - 1) = -3 * i
    +                triangle_neighbor(2, i - 1) = i
    +                triangle_neighbor(3, i) = i - 1
    +            end do
    +
    +            triangle_neighbor(1, triangle_num) = -3 * triangle_num - 1
    +            triangle_neighbor(2, triangle_num) = -5
    +            ledg = 2
    +            ltri = triangle_num
    +        else
    +            triangle_node(1, 1) = m2
    +            triangle_node(2, 1) = m1
    +            triangle_node(3, 1) = m
    +            triangle_neighbor(1, 1) = -4
    +
    +            do i = 2, triangle_num
    +                m1 = m2
    +                m2 = i + 1
    +                triangle_node(1, i) = m2
    +                triangle_node(2, i) = m1
    +                triangle_node(3, i) = m
    +                triangle_neighbor(3, i - 1) = i
    +                triangle_neighbor(1, i) = -3 * i - 3
    +                triangle_neighbor(2, i) = i - 1
    +            end do
    +
    +            triangle_neighbor(3, triangle_num) = -3 * triangle_num
    +            triangle_neighbor(2, 1) = -3 * triangle_num - 2
    +            ledg = 2
    +            ltri = 1
    +        end if
    +
    +        ! Insert the vertices one at a time from outside the convex
    +        ! hull, determine visible boundary edges, and apply diagonal
    +        ! edge swaps until the Delaunay triangulation of the vertices
    +        ! (so far) is obtained
    +        top = 0
    +
    +        do i = j + 1, node_num
    +            m = i
    +            m1 = triangle_node(ledg, ltri)
    +
    +            if (ledg <= 2) then
    +                m2 = triangle_node(ledg + 1, ltri)
    +            else
    +                m2 = triangle_node(1, ltri)
    +            end if
    +
    +            lr = lrline(node_xy(1, m), node_xy(2, m), node_xy(1, m1), &
    +                node_xy(2, m1), node_xy(1, m2), node_xy(2, m2), 0.0d0)
    +
    +            if (0 < lr) then
    +                rtri = ltri
    +                redg = ledg
    +                ltri = 0
    +            else
    +                l = -triangle_neighbor(ledg, ltri)
    +                rtri = l / 3
    +                redg = mod(l, 3) + 1
    +            end if
    +
    +            call vbedg(node_xy(1, m), node_xy(2, m), node_num, node_xy, &
    +                triangle_num, triangle_node, triangle_neighbor, ltri, &
    +                ledg, rtri, redg)
    +
    +            n = triangle_num + 1
    +            l = -triangle_neighbor(ledg, ltri)
    +
    +            do
    +                t = l / 3
    +                e = mod(l, 3) + 1
    +                l = -triangle_neighbor(e, t)
    +                m2 = triangle_node(e, t)
    +
    +                if (e <= 2) then
    +                    m1 = triangle_node(e + 1, t)
    +                else
    +                    m1 = triangle_node(1, t)
    +                end if
    +
    +                triangle_num = triangle_num + 1
    +                triangle_neighbor(e, t) = triangle_num
    +                triangle_node(1, triangle_num) = m1
    +                triangle_node(2, triangle_num) = m2
    +                triangle_node(3, triangle_num) = m
    +                triangle_neighbor(1, triangle_num) = t
    +                triangle_neighbor(2, triangle_num) = triangle_num - 1
    +                triangle_neighbor(3, triangle_num) = triangle_num + 1
    +                top = top + 1
    +
    +                if (node_num < top) then
    +                    error stop "R8TRIS2 - Fatal error!  Stack overflow."
    +                end if
    +
    +                stack(top) = triangle_num
    +
    +                if (t == rtri .and. e == redg) exit
    +            end do
    +
    +            triangle_neighbor(ledg, ltri) = -3 * n - 1
    +            triangle_neighbor(2, n) = -3 * triangle_num - 2
    +            triangle_neighbor(3, triangle_num) = -l
    +            ltri = n
    +            ledg = 2
    +
    +            call swapec(m, top, ltri, ledg, node_num, node_xy, &
    +                triangle_num, triangle_node, triangle_neighbor, stack)
    +        end do
    +
    +        ! Now account for the sorting that was done
    +        do i = 1, 3
    +            do j = 1, triangle_num
    +                triangle_node(i, j) = indx(triangle_node(i, j))
    +            end do
    +        end do
    +
    +        call perm_inverse(node_num, indx)
    +        call r82vec_permute(node_num, node_xy, indx)
    +    end subroutine
    +
    +! ------------------------------------------------------------------------------
    +    pure subroutine r82vec_sort_heap_index_a(n, a, indx)
    +        !! Computes an indexed heap ascending sort of an R82VEC.
    +        !!
    +        !! The sorting is not actually carried out.  Rather an index
    +        !! array is created which defines the sorting.
    +        integer(int32), intent(in) :: n
    +            !! The number of entries in the array.
    +        real(real64), intent(in), dimension(2, n) :: a
    +            !! The array to be index-sorted.
    +        integer(int32), intent(out), dimension(n) :: indx
    +            !! The sort index.  The I-th element of the sorted array is
    +            !! A(1:2,INDX(I)).
    +
    +        ! Local Variables
    +        real(real64), dimension(2) :: aval
    +        integer(int32) :: i, indxt, ir, j, l
    +
    +        if (n < 1) return
    +
    +        do i = 1, n
    +            indx(i) = i
    +        end do
    +
    +        if (n == 1) return
    +
    +        l = n / 2 + 1
    +        ir = n
    +
    +        do
    +            if (1 < l) then
    +                l = l - 1
    +                indxt = indx(l)
    +                aval = a(:, indxt)
    +            else
    +                indxt = indx(ir)
    +                aval = a(:, indxt)
    +                indx(ir) = indx(1)
    +                ir = ir - 1
    +                if (ir == 1) then
    +                    indx(1) = indxt
    +                    exit
    +                end if
    +            end if
    +
    +            i = l
    +            j = l + l
    +
    +            do while (j <= ir)
    +                if (j < ir) then
    +                    if (a(1, indx(j)) < a(1, indx(j + 1)) .or. &
    +                            (a(1, indx(j)) == a(1, indx(j + 1)) .and. &
    +                            a(2, indx(j)) < a(2, indx(j + 1)))) then
    +                        j = j + 1
    +                    end if
    +                end if
    +
    +                if (aval(1) < a(1, indx(j)) .or. &
    +                        (aval(1) == a(1, indx(j)) .and. &
    +                        aval(2) < a(2, indx(j)))) then
    +                    indx(i) = indx(j)
    +                    i = j
    +                    j = j + j
    +                else
    +                    j = ir + 1
    +                end if
    +            end do
    +
    +            indx(i) = indxt
    +        end do
    +    end subroutine
    +
    +! ------------------------------------------------------------------------------
    +    subroutine r82vec_permute(n, a, p)
    +        !! Permutes an R82VEC in place, according to a given permutation.
    +        integer(int32), intent(in) :: n
    +            !! The number of objects.
    +        real(real64), intent(inout), dimension(2, n) :: a
    +            !! The array to be permuted.
    +        integer(int32), intent(inout), dimension(n) :: p
    +            !! The permutation.  P(I) = J means that the I-th element of
    +            !! the output array should be the J-th element of the input
    +            !! array.
    +
    +        ! Local Variables
    +        real(real64), dimension(2) :: a_temp
    +        integer(int32) :: ierror, iget, iput, istart
    +
    +        call perm_check(n, p, ierror)
    +        if (ierror /= 0) then
    +            error stop &
    +                "R82VEC_PERMUTE - Fatal error!  P does not represent a permutation."
    +        end if
    +
    +        do istart = 1, n
    +            if (p(istart) < 0) then
    +                cycle
    +            else if (p(istart) == istart) then
    +                p(istart) = -p(istart)
    +                cycle
    +            else
    +                a_temp = a(:, istart)
    +                iget = istart
    +
    +                do
    +                    iput = iget
    +                    iget = p(iget)
    +                    p(iput) = -p(iput)
    +
    +                    if (iget < 1 .or. n < iget) then
    +                        error stop &
    +                            "R82VEC_PERMUTE - Fatal error!  Invalid permutation entry."
    +                    end if
    +
    +                    if (iget == istart) then
    +                        a(:, iput) = a_temp
    +                        exit
    +                    end if
    +
    +                    a(:, iput) = a(:, iget)
    +                end do
    +            end if
    +        end do
    +
    +        p = -p
    +    end subroutine
    +
    +! ------------------------------------------------------------------------------
    +    pure subroutine perm_check(n, p, ierror)
    +        !! Checks that a vector represents a permutation.
    +        integer(int32), intent(in) :: n
    +            !! The number of entries.
    +        integer(int32), intent(in), dimension(n) :: p
    +            !! The array to check.
    +        integer(int32), intent(out) :: ierror
    +            !! 0 if the array represents a permutation; otherwise, the
    +            !! smallest missing value.
    +
    +        ! Local Variables
    +        integer(int32) :: ifind, iseek
    +
    +        ierror = 0
    +        do iseek = 1, n
    +            ierror = iseek
    +            do ifind = 1, n
    +                if (p(ifind) == iseek) then
    +                    ierror = 0
    +                    exit
    +                end if
    +            end do
    +            if (ierror /= 0) return
    +        end do
    +    end subroutine
    +
    +! ------------------------------------------------------------------------------
    +    subroutine perm_inverse(n, p)
    +        !! Inverts a permutation in-place.
    +        integer(int32), intent(in) :: n
    +            !! The number of objects being permuted.
    +        integer(int32), intent(inout), dimension(n) :: p
    +            !! The permutation, in standard index form.  On output, P
    +            !! describes the inverse permutation.
    +
    +        ! Local Variables
    +        integer(int32) :: i, i0, i1, i2, ierror, is
    +
    +        if (n <= 0) then
    +            error stop "PERM_INVERSE - Fatal error!  N <= 0."
    +        end if
    +
    +        call perm_check(n, p, ierror)
    +        if (ierror /= 0) then
    +            error stop &
    +                "PERM_INVERSE - Fatal error!  P does not represent a permutation."
    +        end if
    +
    +        is = 1
    +        do i = 1, n
    +            i1 = p(i)
    +            do while (i < i1)
    +                i2 = p(i1)
    +                p(i1) = -i2
    +                i1 = i2
    +            end do
    +            is = -sign(1, p(i))
    +            p(i) = sign(p(i), is)
    +        end do
    +
    +        do i = 1, n
    +            i1 = -p(i)
    +            if (0 <= i1) then
    +                i0 = i
    +                do
    +                    i2 = p(i1)
    +                    p(i1) = i0
    +                    if (i2 < 0) exit
    +                    i0 = i1
    +                    i1 = i2
    +                end do
    +            end if
    +        end do
    +    end subroutine
    +
    +! ------------------------------------------------------------------------------
    +    pure function lrline(xu, yu, xv1, yv1, xv2, yv2, dv) result(rst)
    +        !! Determines if a point is left of, right of, or on a directed
    +        !! line.
    +        !!
    +        !! The directed line is parallel to, and at a signed distance DV
    +        !! from a directed base line from (XV1,YV1) to (XV2,YV2).
    +        real(real64), intent(in) :: xu
    +            !! The x-coordinate of the point whose position relative to
    +            !! the directed line is to be determined.
    +        real(real64), intent(in) :: yu
    +            !! The y-coordinate of the point whose position relative to
    +            !! the directed line is to be determined.
    +        real(real64), intent(in) :: xv1
    +            !! The x-coordinate of the first point defining the base
    +            !! line.
    +        real(real64), intent(in) :: yv1
    +            !! The y-coordinate of the first point defining the base
    +            !! line.
    +        real(real64), intent(in) :: xv2
    +            !! The x-coordinate of the second point defining the base
    +            !! line.
    +        real(real64), intent(in) :: yv2
    +            !! The y-coordinate of the second point defining the base
    +            !! line.
    +        real(real64), intent(in) :: dv
    +            !! The signed distance of the directed line from the
    +            !! directed base line.  DV is positive for a line to the
    +            !! left of the base line.
    +        integer(int32) :: rst
    +            !! +1 if the point is to the right of the directed line; 0 if
    +            !! the point is on the directed line; -1 if the point is to
    +            !! the left of the directed line.
    +
    +        ! Local Variables
    +        real(real64) :: dx, dxu, dy, dyu, t, tol, tolabs
    +
    +        tol = 100.0d0 * epsilon(tol)
    +
    +        dx = xv2 - xv1
    +        dy = yv2 - yv1
    +        dxu = xu - xv1
    +        dyu = yu - yv1
    +
    +        tolabs = tol * max(abs(dx), abs(dy), abs(dxu), abs(dyu), abs(dv))
    +
    +        t = dy * dxu - dx * dyu + dv * sqrt(dx * dx + dy * dy)
    +
    +        if (tolabs < t) then
    +            rst = 1
    +        else if (-tolabs <= t) then
    +            rst = 0
    +        else
    +            rst = -1
    +        end if
    +    end function
    +
    +! ------------------------------------------------------------------------------
    +    pure function diaedg(x0, y0, x1, y1, x2, y2, x3, y3) result(rst)
    +        !! Chooses a diagonal edge.
    +        !!
    +        !! The routine determines whether 0--2 or 1--3 is the diagonal
    +        !! edge that should be chosen, based on the circumcircle
    +        !! criterion, where (X0,Y0), (X1,Y1), (X2,Y2), (X3,Y3) are the
    +        !! vertices of a simple quadrilateral in counterclockwise order.
    +        real(real64), intent(in) :: x0, y0, x1, y1, x2, y2, x3, y3
    +            !! The coordinates of the vertices of the quadrilateral.
    +        integer(int32) :: rst
    +            !! +1 if diagonal edge 02 is chosen; -1 if diagonal edge 13
    +            !! is chosen; 0 if the four vertices are cocircular.
    +
    +        ! Local Variables
    +        real(real64) :: ca, cb, dx10, dx12, dx30, dx32, dy10, dy12, dy30, &
    +            dy32, s, tol, tola, tolb
    +
    +        tol = 100.0d0 * epsilon(tol)
    +
    +        dx10 = x1 - x0
    +        dy10 = y1 - y0
    +        dx12 = x1 - x2
    +        dy12 = y1 - y2
    +        dx30 = x3 - x0
    +        dy30 = y3 - y0
    +        dx32 = x3 - x2
    +        dy32 = y3 - y2
    +
    +        tola = tol * max(abs(dx10), abs(dy10), abs(dx30), abs(dy30))
    +        tolb = tol * max(abs(dx12), abs(dy12), abs(dx32), abs(dy32))
    +
    +        ca = dx10 * dx30 + dy10 * dy30
    +        cb = dx12 * dx32 + dy12 * dy32
    +
    +        if (tola < ca .and. tolb < cb) then
    +            rst = -1
    +        else if (ca < -tola .and. cb < -tolb) then
    +            rst = 1
    +        else
    +            tola = max(tola, tolb)
    +            s = (dx10 * dy30 - dx30 * dy10) * cb + &
    +                (dx32 * dy12 - dx12 * dy32) * ca
    +            if (tola < s) then
    +                rst = -1
    +            else if (s < -tola) then
    +                rst = 1
    +            else
    +                rst = 0
    +            end if
    +        end if
    +    end function
    +
    +! ------------------------------------------------------------------------------
    +    pure function i4_modp(i, j) result(rst)
    +        !! Returns the nonnegative remainder of I4 division.
    +        integer(int32), intent(in) :: i
    +            !! The number to be divided.
    +        integer(int32), intent(in) :: j
    +            !! The number that divides I.
    +        integer(int32) :: rst
    +            !! The nonnegative remainder when I is divided by J.
    +
    +        rst = mod(i, j)
    +        if (rst < 0) rst = rst + abs(j)
    +    end function
    +
    +! ------------------------------------------------------------------------------
    +    pure function i4_wrap(ival, ilo, ihi) result(rst)
    +        !! Forces an I4 to lie between given limits by wrapping.
    +        integer(int32), intent(in) :: ival
    +            !! The value to wrap.
    +        integer(int32), intent(in) :: ilo
    +            !! The lower bound.
    +        integer(int32), intent(in) :: ihi
    +            !! The upper bound.
    +        integer(int32) :: rst
    +            !! A "wrapped" version of IVAL.
    +
    +        ! Local Variables
    +        integer(int32) :: jhi, jlo, wide
    +
    +        jlo = min(ilo, ihi)
    +        jhi = max(ilo, ihi)
    +        wide = jhi - jlo + 1
    +
    +        if (wide == 1) then
    +            rst = jlo
    +        else
    +            rst = jlo + i4_modp(ival - jlo, wide)
    +        end if
    +    end function
    +
    +! ------------------------------------------------------------------------------
    +    pure subroutine vbedg(x, y, node_num, node_xy, triangle_num, &
    +            triangle_node, triangle_neighbor, ltri, ledg, rtri, redg)
    +        !! Determines which boundary edges are visible to a point.
    +        !!
    +        !! The point (X,Y) is assumed to be outside the convex hull of
    +        !! the region covered by the 2D triangulation.
    +        real(real64), intent(in) :: x
    +            !! The x-coordinate of a point outside the convex hull of
    +            !! the current triangulation.
    +        real(real64), intent(in) :: y
    +            !! The y-coordinate of a point outside the convex hull of
    +            !! the current triangulation.
    +        integer(int32), intent(in) :: node_num
    +            !! The number of points.
    +        real(real64), intent(in), dimension(2, node_num) :: node_xy
    +            !! The coordinates of the vertices.
    +        integer(int32), intent(in) :: triangle_num
    +            !! The number of triangles.
    +        integer(int32), intent(in), dimension(3, triangle_num) :: &
    +            triangle_node
    +            !! The triangle incidence list.
    +        integer(int32), intent(in), dimension(3, triangle_num) :: &
    +            triangle_neighbor
    +            !! The triangle neighbor list; negative values are used for
    +            !! links of a counterclockwise linked list of boundary
    +            !! edges; LINK = -(3*I + J-1) where I, J = triangle, edge
    +            !! index.
    +        integer(int32), intent(inout) :: ltri
    +            !! If LTRI /= 0 then this value is assumed to be already
    +            !! computed and is not changed, else it is updated.  On
    +            !! output, LTRI is the index of the boundary triangle to the
    +            !! left of the leftmost boundary triangle visible from
    +            !! (X,Y).
    +        integer(int32), intent(inout) :: ledg
    +            !! The boundary edge of triangle LTRI to the left of the
    +            !! leftmost boundary edge visible from (X,Y).  1 <= LEDG <=
    +            !! 3.
    +        integer(int32), intent(inout) :: rtri
    +            !! On input, the index of the boundary triangle to begin the
    +            !! search at.  On output, the index of the rightmost
    +            !! boundary triangle visible from (X,Y).
    +        integer(int32), intent(inout) :: redg
    +            !! The edge of triangle RTRI that is visible from (X,Y).
    +            !! 1 <= REDG <= 3.
    +
    +        ! Local Variables
    +        integer(int32) :: a, b, e, l, lr, t
    +        logical :: ldone
    +
    +        ! Find the rightmost visible boundary edge using links, then
    +        ! possibly the leftmost visible boundary edge using triangle
    +        ! neighbor information
    +        if (ltri == 0) then
    +            ldone = .false.
    +            ltri = rtri
    +            ledg = redg
    +        else
    +            ldone = .true.
    +        end if
    +
    +        do
    +            l = -triangle_neighbor(redg, rtri)
    +            t = l / 3
    +            e = mod(l, 3) + 1
    +            a = triangle_node(e, t)
    +
    +            if (e <= 2) then
    +                b = triangle_node(e + 1, t)
    +            else
    +                b = triangle_node(1, t)
    +            end if
    +
    +            lr = lrline(x, y, node_xy(1, a), node_xy(2, a), &
    +                node_xy(1, b), node_xy(2, b), 0.0d0)
    +
    +            if (lr <= 0) exit
    +
    +            rtri = t
    +            redg = e
    +        end do
    +
    +        if (ldone) return
    +
    +        t = ltri
    +        e = ledg
    +
    +        do
    +            b = triangle_node(e, t)
    +            e = i4_wrap(e - 1, 1, 3)
    +
    +            do while (0 < triangle_neighbor(e, t))
    +                t = triangle_neighbor(e, t)
    +                if (triangle_node(1, t) == b) then
    +                    e = 3
    +                else if (triangle_node(2, t) == b) then
    +                    e = 1
    +                else
    +                    e = 2
    +                end if
    +            end do
    +
    +            a = triangle_node(e, t)
    +
    +            lr = lrline(x, y, node_xy(1, a), node_xy(2, a), &
    +                node_xy(1, b), node_xy(2, b), 0.0d0)
    +
    +            if (lr <= 0) exit
    +        end do
    +
    +        ltri = t
    +        ledg = e
    +    end subroutine
    +
    +! ------------------------------------------------------------------------------
    +    pure subroutine swapec(i, top, btri, bedg, node_num, node_xy, &
    +            triangle_num, triangle_node, triangle_neighbor, stack)
    +        !! Swaps diagonal edges until all triangles are Delaunay.
    +        !!
    +        !! The routine swaps diagonal edges in a 2D triangulation, based
    +        !! on the empty circumcircle criterion, until all triangles are
    +        !! Delaunay, given that I is the index of the new vertex added
    +        !! to the triangulation.
    +        integer(int32), intent(in) :: i
    +            !! The index of the new vertex.
    +        integer(int32), intent(inout) :: top
    +            !! The index of the top of the stack.  On output, TOP is
    +            !! zero.
    +        integer(int32), intent(inout) :: btri
    +            !! On input, if positive, the triangle index of a boundary
    +            !! edge whose updated index must be recorded.  On output,
    +            !! this may be updated because of swaps.
    +        integer(int32), intent(inout) :: bedg
    +            !! On input, if positive, the edge index of a boundary edge
    +            !! whose updated index must be recorded.  On output, this
    +            !! may be updated because of swaps.
    +        integer(int32), intent(in) :: node_num
    +            !! The number of points.
    +        real(real64), intent(in), dimension(2, node_num) :: node_xy
    +            !! The coordinates of the points.
    +        integer(int32), intent(in) :: triangle_num
    +            !! The number of triangles.
    +        integer(int32), intent(inout), dimension(3, triangle_num) :: &
    +            triangle_node
    +            !! The triangle incidence list.  May be updated on output
    +            !! because of swaps.
    +        integer(int32), intent(inout), dimension(3, triangle_num) :: &
    +            triangle_neighbor
    +            !! The triangle neighbor list; negative values are used for
    +            !! links of the counter-clockwise linked list of boundary
    +            !! edges.  May be updated on output because of swaps.
    +        integer(int32), intent(inout), dimension(node_num) :: stack
    +            !! On input, entries 1 through TOP contain the indices of
    +            !! initial triangles (involving vertex I) put in the stack;
    +            !! the edges opposite I should be in the interior; entries
    +            !! TOP+1 through NODE_NUM are used as a stack.
    +
    +        ! Local Variables
    +        integer(int32) :: a, b, c, e, ee, em1, ep1, f, fm1, fp1, l, r, s, &
    +            swap, t, tt, u
    +        real(real64) :: x, y
    +
    +        x = node_xy(1, i)
    +        y = node_xy(2, i)
    +
    +        do
    +            if (top <= 0) exit
    +
    +            t = stack(top)
    +            top = top - 1
    +
    +            if (triangle_node(1, t) == i) then
    +                e = 2
    +                b = triangle_node(3, t)
    +            else if (triangle_node(2, t) == i) then
    +                e = 3
    +                b = triangle_node(1, t)
    +            else
    +                e = 1
    +                b = triangle_node(2, t)
    +            end if
    +
    +            a = triangle_node(e, t)
    +            u = triangle_neighbor(e, t)
    +
    +            if (triangle_neighbor(1, u) == t) then
    +                f = 1
    +                c = triangle_node(3, u)
    +            else if (triangle_neighbor(2, u) == t) then
    +                f = 2
    +                c = triangle_node(1, u)
    +            else
    +                f = 3
    +                c = triangle_node(2, u)
    +            end if
    +
    +            swap = diaedg(x, y, node_xy(1, a), node_xy(2, a), &
    +                node_xy(1, c), node_xy(2, c), node_xy(1, b), &
    +                node_xy(2, b))
    +
    +            if (swap == 1) then
    +                em1 = i4_wrap(e - 1, 1, 3)
    +                ep1 = i4_wrap(e + 1, 1, 3)
    +                fm1 = i4_wrap(f - 1, 1, 3)
    +                fp1 = i4_wrap(f + 1, 1, 3)
    +
    +                triangle_node(ep1, t) = c
    +                triangle_node(fp1, u) = i
    +                r = triangle_neighbor(ep1, t)
    +                s = triangle_neighbor(fp1, u)
    +                triangle_neighbor(ep1, t) = u
    +                triangle_neighbor(fp1, u) = t
    +                triangle_neighbor(e, t) = s
    +                triangle_neighbor(f, u) = r
    +
    +                if (0 < triangle_neighbor(fm1, u)) then
    +                    top = top + 1
    +                    stack(top) = u
    +                end if
    +
    +                if (0 < s) then
    +                    if (triangle_neighbor(1, s) == u) then
    +                        triangle_neighbor(1, s) = t
    +                    else if (triangle_neighbor(2, s) == u) then
    +                        triangle_neighbor(2, s) = t
    +                    else
    +                        triangle_neighbor(3, s) = t
    +                    end if
    +
    +                    top = top + 1
    +                    if (node_num < top) then
    +                        error stop "SWAPEC - Fatal error!  Stack overflow."
    +                    end if
    +                    stack(top) = t
    +                else
    +                    if (u == btri .and. fp1 == bedg) then
    +                        btri = t
    +                        bedg = e
    +                    end if
    +
    +                    l = -(3 * t + e - 1)
    +                    tt = t
    +                    ee = em1
    +
    +                    do while (0 < triangle_neighbor(ee, tt))
    +                        tt = triangle_neighbor(ee, tt)
    +                        if (triangle_node(1, tt) == a) then
    +                            ee = 3
    +                        else if (triangle_node(2, tt) == a) then
    +                            ee = 1
    +                        else
    +                            ee = 2
    +                        end if
    +                    end do
    +
    +                    triangle_neighbor(ee, tt) = l
    +                end if
    +
    +                if (0 < r) then
    +                    if (triangle_neighbor(1, r) == t) then
    +                        triangle_neighbor(1, r) = u
    +                    else if (triangle_neighbor(2, r) == t) then
    +                        triangle_neighbor(2, r) = u
    +                    else
    +                        triangle_neighbor(3, r) = u
    +                    end if
    +                else
    +                    if (t == btri .and. ep1 == bedg) then
    +                        btri = u
    +                        bedg = f
    +                    end if
    +
    +                    l = -(3 * u + f - 1)
    +                    tt = u
    +                    ee = fm1
    +
    +                    do while (0 < triangle_neighbor(ee, tt))
    +                        tt = triangle_neighbor(ee, tt)
    +                        if (triangle_node(1, tt) == b) then
    +                            ee = 3
    +                        else if (triangle_node(2, tt) == b) then
    +                            ee = 1
    +                        else
    +                            ee = 2
    +                        end if
    +                    end do
    +
    +                    triangle_neighbor(ee, tt) = l
    +                end if
    +            end if
    +        end do
    +    end subroutine
    +
    +! ------------------------------------------------------------------------------
    +end module
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +

    FPLOT was developed by Jason Christopherson
    © 2026 +

    +
    +
    +

    + Documentation generated by + FORD + on 2026-10-01 05:57

    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/sourcefile/fplot_arrow.f90.html b/doc/sourcefile/fplot_arrow.f90.html index a6e963a8..d4e64c15 100644 --- a/doc/sourcefile/fplot_arrow.f90.html +++ b/doc/sourcefile/fplot_arrow.f90.html @@ -74,7 +74,7 @@

    fplot_arrow.f90
  • 296 statements + title=" 3.0% of total for source files.">296 statements
  • @@ -740,7 +740,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_colormap.f90.html b/doc/sourcefile/fplot_colormap.f90.html index e3d94cfd..46d63903 100644 --- a/doc/sourcefile/fplot_colormap.f90.html +++ b/doc/sourcefile/fplot_colormap.f90.html @@ -74,7 +74,7 @@

    fplot_colormap.f90
  • 283 statements + title=" 4.0% of total for source files.">390 statements
  • @@ -172,476 +172,646 @@

    Source Code

    public :: grey_colormap public :: earth_colormap public :: custom_colormap - - type, abstract, extends(plot_object) :: colormap - !! A colormap object for a surface plot. - character(len = :), private, allocatable :: m_label - !! The label to associate with the colormap. - logical, private :: m_horizontal = .false. - !! The colormap should be drawn horizontally. - logical, private :: m_drawBorder = .true. - !! Draw the colormap border. - logical, private :: m_showTics = .true. - !! Show the tic marks. - contains - procedure, public :: get_command_string => cm_get_cmd - procedure(cm_get_string_result), deferred, public :: get_color_string - procedure, public :: get_label => cm_get_label - procedure, public :: set_label => cm_set_label - procedure, public :: get_horizontal => cm_get_horizontal - procedure, public :: set_horizontal => cm_set_horizontal - procedure, public :: get_draw_border => cm_get_draw_border - procedure, public :: set_draw_border => cm_set_draw_border - procedure, public :: get_show_tics => cm_get_show_tics - procedure, public :: set_show_tics => cm_set_show_tics - end type - - interface - function cm_get_string_result(this) result(x) - !! Retrieves a string result from a colormap object. - import colormap - class(colormap), intent(in) :: this - !! The colormap object. - character(len = :), allocatable :: x - !! The string. - end function - end interface -! ------------------------------------------------------------------------------ - type, extends(colormap) :: rainbow_colormap - !! Defines a rainbow colormap. - contains - procedure, public :: get_color_string => rcm_get_clr - end type - -! ------------------------------------------------------------------------------ - type, extends(colormap) :: hot_colormap - !! Defines a colormap consisting of "hot" colors. - contains - procedure, public :: get_color_string => hcm_get_clr - end type - -! ------------------------------------------------------------------------------ - type, extends(colormap) :: cool_colormap - !! Defines a colormap consisting of "cool" colors. - contains - procedure, public :: get_color_string => ccm_get_clr - end type - -! ------------------------------------------------------------------------------ - type, extends(colormap) :: parula_colormap - !! Defines a colormap equivalent to the MATLAB parula colormap. - contains - procedure, public :: get_color_string => pcm_get_clr - end type - -! ------------------------------------------------------------------------------ - type, extends(colormap) :: grey_colormap - !! Defines a grey-scaled colormap. - contains - procedure, public :: get_color_string => gcm_get_clr - end type - -! ------------------------------------------------------------------------------ - type, extends(colormap) :: earth_colormap - !! Defines an earthy-colored colormap. - contains - procedure, public :: get_color_string => ecm_get_clr - end type - -! ------------------------------------------------------------------------------ - type, extends(colormap) :: custom_colormap - !! Defines a custom colormap that utilizes the FORCOLORMAP library - !! to provide the map. - class(cmap), private, pointer :: m_map => null() - !! The FORCOLORMAP object. - contains - final :: custom_final - procedure, public :: get_color_string => custom_get_clr - procedure, public :: set_colormap => custom_set - procedure, public :: get_colormap => custom_get - end type - -! ------------------------------------------------------------------------------ -contains -! ****************************************************************************** -! COLORMAP MEMBERS -! ------------------------------------------------------------------------------ - function cm_get_cmd(this) result(x) - !! Gets the GNUPLOT command string to represent this colormap object. - class(colormap), intent(in) :: this - !! The colormap object. - character(len = :), allocatable :: x - !! The command string. - - ! Local Variables - type(string_builder) :: str - - ! Initialization - call str%initialize() - - ! Palette Definition - call str%append("set palette defined (") - call str%append(this%get_color_string()) - call str%append(")") + public :: spectral_colormap + + type, abstract, extends(plot_object) :: colormap + !! A colormap object for a surface plot. + character(len = :), private, allocatable :: m_label + !! The label to associate with the colormap. + logical, private :: m_horizontal = .false. + !! The colormap should be drawn horizontally. + logical, private :: m_drawBorder = .false. + !! Draw the colormap border. + logical, private :: m_showTics = .false. + !! Show the tic marks. + real(real32), private :: m_colorbarThickness = 0.02 + !! The relative thickness of the colorbar itself. A value of 0 + !! allows GNUPLOT to use it's defaults. This value is clamped to + !! the range [0.0, 1.0]. + real(real32), private :: m_colorbarLength = 0.4 + !! The relative length of the colorbar itself. A value of 0 + !! allows GNUPLOT to use it's defaults. This value is clamped to + !! the range [0.0, 1.0]. + real(real32), private :: m_axesSize(2) = [0.85, 0.85] + !! The size of the axes size defined as [width, height] + !! clamped to the interval [0.0, 1.0]. + real(real32), private :: m_axesOrigin(2) = [0.05, 0.05] + !! The x-y coordinates of the axes clamped to the interval + !! [0.0, 1.0]. + contains + procedure, public :: get_command_string => cm_get_cmd + procedure(cm_get_string_result), deferred, public :: get_color_string + procedure, public :: get_label => cm_get_label + procedure, public :: set_label => cm_set_label + procedure, public :: get_horizontal => cm_get_horizontal + procedure, public :: set_horizontal => cm_set_horizontal + procedure, public :: get_draw_border => cm_get_draw_border + procedure, public :: set_draw_border => cm_set_draw_border + procedure, public :: get_show_tics => cm_get_show_tics + procedure, public :: set_show_tics => cm_set_show_tics + procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness + procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness + procedure, public :: get_colorbar_length => cm_get_colorbar_length + procedure, public :: set_colorbar_length => cm_set_colorbar_length + procedure, public :: get_axes_size => cm_get_axes_size + procedure, public :: set_axes_size => cm_set_axes_size + procedure, public :: get_axes_origin => cm_get_axes_origin + procedure, public :: set_axes_origin => cm_set_axes_origin + end type + + interface + function cm_get_string_result(this) result(x) + !! Retrieves a string result from a colormap object. + import colormap + class(colormap), intent(in) :: this + !! The colormap object. + character(len = :), allocatable :: x + !! The string. + end function + end interface +! ------------------------------------------------------------------------------ + type, extends(colormap) :: rainbow_colormap + !! Defines a rainbow colormap. + contains + procedure, public :: get_color_string => rcm_get_clr + end type + +! ------------------------------------------------------------------------------ + type, extends(colormap) :: hot_colormap + !! Defines a colormap consisting of "hot" colors. + contains + procedure, public :: get_color_string => hcm_get_clr + end type + +! ------------------------------------------------------------------------------ + type, extends(colormap) :: cool_colormap + !! Defines a colormap consisting of "cool" colors. + contains + procedure, public :: get_color_string => ccm_get_clr + end type + +! ------------------------------------------------------------------------------ + type, extends(colormap) :: parula_colormap + !! Defines a colormap equivalent to the MATLAB parula colormap. + contains + procedure, public :: get_color_string => pcm_get_clr + end type + +! ------------------------------------------------------------------------------ + type, extends(colormap) :: grey_colormap + !! Defines a grey-scaled colormap. + contains + procedure, public :: get_color_string => gcm_get_clr + end type + +! ------------------------------------------------------------------------------ + type, extends(colormap) :: earth_colormap + !! Defines an earthy-colored colormap. + contains + procedure, public :: get_color_string => ecm_get_clr + end type + +! ------------------------------------------------------------------------------ + type, extends(colormap) :: custom_colormap + !! Defines a custom colormap that utilizes the FORCOLORMAP library + !! to provide the map. + class(cmap), private, pointer :: m_map => null() + !! The FORCOLORMAP object. + contains + final :: custom_final + procedure, public :: get_color_string => custom_get_clr + procedure, public :: set_colormap => custom_set + procedure, public :: get_colormap => custom_get + end type - if (len(this%get_label()) > 0) then - call str%append(new_line('a')) - call str%append('set cblabel "') - call str%append(this%get_label()) - call str%append('"') - end if - - ! Orientation - if (this%get_horizontal()) then - call str%append(new_line('a')) - call str%append("set colorbox horizontal") - call str%append(new_line('a')) - call str%append("set size 0.8,0.8; set origin 0.1,0.2") - call str%append(new_line('a')) - call str%append("set colorbox user origin 0.1,0.175 size 0.8,0.055") - - if (len(this%get_label()) > 0) then - call str%append(new_line('a')) - call str%append("set cblabel offset 0,0.8") - end if - end if - - ! Border & Tic Marks - if (.not.this%get_draw_border()) then - ! Eliminate the border - call str%append(new_line('a')) - call str%append("set colorbox noborder") - - ! Hide the tic marks - call str%append(new_line('a')) - call str%append("set cbtic scale 0") - else - ! Respect the tic mark visibility setting if the border is shown - if (.not.this%get_show_tics()) then - call str%append(new_line('a')) - call str%append("set cbtic scale 0") - end if - end if - - ! End - x = char(str%to_string()) - end function - -! ------------------------------------------------------------------------------ - pure function cm_get_label(this) result(rst) - !! Gets the label to associate with the colorbar. - class(colormap), intent(in) :: this - !! The colormap object. - character(len = :), allocatable :: rst - !! The label. - if (allocated(this%m_label)) then - rst = this%m_label - else - rst = "" - end if - end function - -! -------------------- - subroutine cm_set_label(this, x) - !! Sets the label to associate with the colorbar. - class(colormap), intent(inout) :: this - !! The colormap object. - character(len = *), intent(in) :: x - !! The label. - this%m_label = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function cm_get_horizontal(this) result(rst) - !! Gets a logical value determining if the colormap should be - !! drawn horizontally and below the plot. - class(colormap), intent(in) :: this - !! The colormap object. - logical :: rst - !! Returns true if the colormap should be drawn horizontally; - !! else, false. - rst = this%m_horizontal - end function - -! -------------------- - subroutine cm_set_horizontal(this, x) - !! Sets a logical value determining if the colormap should be - !! drawn horizontally and below the plot. - class(colormap), intent(inout) :: this - !! The colormap object. - logical, intent(in) :: x - !! Set to true if the colormap should be drawn horizontally; - !! else, false. - this%m_horizontal = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function cm_get_draw_border(this) result(rst) - !! Gets a logical value determining if the border should be drawn. - class(colormap), intent(in) :: this - !! The colormap object. - logical :: rst - !! Returns true if the border should be drawn; else, false. - rst = this%m_drawBorder - end function - -! -------------------- - subroutine cm_set_draw_border(this, x) - !! Sets a logical value determining if the border should be drawn. - class(colormap), intent(inout) :: this - !! The colormap object. - logical, intent(in) :: x - !! Set to true if the border should be drawn; else, false. - this%m_drawBorder = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function cm_get_show_tics(this) result(rst) - !! Gets a logical value determining if the tic marks should be drawn. - class(colormap), intent(in) :: this - !! The colormap object. - logical :: rst - !! Returns true if the tic marks should be drawn; else, false. - rst = this%m_showTics - end function - -! -------------------- - subroutine cm_set_show_tics(this, x) - !! Sets a logical value determining if the tic marks should be drawn. - class(colormap), intent(inout) :: this - !! The colormap object. - logical, intent(in) :: x - !! Set to true if the tic marks should be drawn; else, false. - this%m_showTics = x - end subroutine - -! ------------------------------------------------------------------------------ -! TO DO: -! - Set user-defined tic labels & limits (ref: http://gnuplot.sourceforge.net/demo_5.4/cerf.html) - -! ****************************************************************************** -! RAINBOW_COLORMAP MEMBERS -! ------------------------------------------------------------------------------ - function rcm_get_clr(this) result(x) - !! Gets the GNUPLOT string defining the color distribution. - class(rainbow_colormap), intent(in) :: this - !! The rainbow_colormap object. - character(len = :), allocatable :: x - !! The command string. - x = '0 "dark-blue", 1 "blue", 2 "cyan", 3 "green", 4 "yellow", ' // & - '5 "orange", 6 "red", 7 "dark-red"' - end function - -! ****************************************************************************** -! HOT_COLORMAP MEMBERS -! ------------------------------------------------------------------------------ - function hcm_get_clr(this) result(x) - !! Gets the GNUPLOT string defining the color distribution. - class(hot_colormap), intent(in) :: this - !! The hot_colormap object. - character(len = :), allocatable :: x - !! The command string. - x = '0 "black", 1 "red", 2 "orange", 3 "yellow", 4 "white"' - end function - -! ****************************************************************************** -! COOL_COLORMAP MEMBERS -! ------------------------------------------------------------------------------ - function ccm_get_clr(this) result(x) - !! Gets the GNUPLOT string defining the color distribution. - class(cool_colormap), intent(in) :: this - !! The cool_colormap object. - character(len = :), allocatable :: x - !! The command string. - - type(string_builder) :: str - - call str%append("0 '#08589E',") - call str%append("1 '#2B8CBE',") - call str%append("2 '#4EB3D3',") - call str%append("3 '#7BCCC4',") - call str%append("4 '#A8DDB5',") - call str%append("5 '#CCEBC5',") - call str%append("6 '#E0F3DB',") - call str%append("7 '#F7FCF0'") - - x = char(str%to_string()) - ! x = '0 "blue", 1 "turquoise", 2 "light-green"' - end function - -! ****************************************************************************** -! PARULA_COLORMAP MEMBERS -! ------------------------------------------------------------------------------ - function pcm_get_clr(this) result(x) - !! Gets the GNUPLOT string defining the color distribution. - class(parula_colormap), intent(in) :: this - !! The parula_colormap object. - character(len = :), allocatable :: x - !! The command string. - - type(string_builder) :: str +! ------------------------------------------------------------------------------ + type, extends(colormap) :: spectral_colormap + !! Defines the spectral colormap available at + !! https://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal. + contains + procedure, public :: get_color_string => spcm_get_clr + end type + +contains +! ****************************************************************************** +! COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function cm_get_cmd(this) result(x) + !! Gets the GNUPLOT command string to represent this colormap object. + class(colormap), intent(in) :: this + !! The colormap object. + character(len = :), allocatable :: x + !! The command string. + + ! Local Variables + type(string_builder) :: str + real(real32) :: sz(2), origin(2), length, thickness + + ! Initialization + call str%initialize() + sz = this%get_axes_size() + origin = this%get_axes_origin() + length = this%get_colorbar_length() + thickness = this%get_colorbar_thickness() + + ! Palette Definition + call str%append("set palette defined (") + call str%append(this%get_color_string()) + call str%append(")") + + if (len(this%get_label()) > 0) then + call str%append(new_line('a')) + call str%append('set cblabel "') + call str%append(this%get_label()) + call str%append('"') + end if + + ! Orientation + if (this%get_horizontal()) then + call str%append(new_line('a')) + call str%append("set colorbox horizontal") + call str%append(new_line('a')) + call str%append("set size ") + call str%append(to_string(sz(1))) + call str%append(",") + call str%append(to_string(sz(2))) + call str%append("; set origin ") + call str%append(to_string(origin(1))) + call str%append(",") + call str%append(to_string(origin(2) + 0.075)) + call str%append(new_line('a')) + call str%append("set colorbox user origin ") + call str%append(to_string(0.5 - 0.5 * length)) + call str%append(",0.1 size ") + call str%append(to_string(length)) + call str%append(",") + call str%append(to_string(thickness)) + + if (len(this%get_label()) > 0) then + call str%append(new_line('a')) + call str%append("set cblabel offset 0,0.8") + end if + else + call str%append(new_line('a')) + call str%append("set colorbox vertical") + call str%append(new_line('a')) + call str%append("set size ") + call str%append(to_string(sz(1))) + call str%append(",") + call str%append(to_string(sz(2))) + call str%append("; set origin ") + call str%append(to_string(origin(1))) + call str%append(",") + call str%append(to_string(origin(2))) + call str%append(new_line('a')) + call str%append("set colorbox user origin 0.9,") + call str%append(to_string(0.5 - 0.5 * length)) + call str%append(" size ") + call str%append(to_string(thickness)) + call str%append(",") + call str%append(to_string(length)) + end if + + ! Border & Tic Marks + if (.not.this%get_draw_border()) then + ! Eliminate the border + call str%append(new_line('a')) + call str%append("set colorbox noborder") + + ! Hide the tic marks + call str%append(new_line('a')) + call str%append("set cbtic scale 0") + else + ! Respect the tic mark visibility setting if the border is shown + if (.not.this%get_show_tics()) then + call str%append(new_line('a')) + call str%append("set cbtic scale 0") + end if + end if + + ! End + x = char(str%to_string()) + end function + +! ------------------------------------------------------------------------------ + pure function cm_get_label(this) result(rst) + !! Gets the label to associate with the colorbar. + class(colormap), intent(in) :: this + !! The colormap object. + character(len = :), allocatable :: rst + !! The label. + if (allocated(this%m_label)) then + rst = this%m_label + else + rst = "" + end if + end function + +! -------------------- + subroutine cm_set_label(this, x) + !! Sets the label to associate with the colorbar. + class(colormap), intent(inout) :: this + !! The colormap object. + character(len = *), intent(in) :: x + !! The label. + this%m_label = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_horizontal(this) result(rst) + !! Gets a logical value determining if the colormap should be + !! drawn horizontally and below the plot. + class(colormap), intent(in) :: this + !! The colormap object. + logical :: rst + !! Returns true if the colormap should be drawn horizontally; + !! else, false. + rst = this%m_horizontal + end function + +! -------------------- + subroutine cm_set_horizontal(this, x) + !! Sets a logical value determining if the colormap should be + !! drawn horizontally and below the plot. + class(colormap), intent(inout) :: this + !! The colormap object. + logical, intent(in) :: x + !! Set to true if the colormap should be drawn horizontally; + !! else, false. + this%m_horizontal = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_draw_border(this) result(rst) + !! Gets a logical value determining if the border should be drawn. + class(colormap), intent(in) :: this + !! The colormap object. + logical :: rst + !! Returns true if the border should be drawn; else, false. + rst = this%m_drawBorder + end function + +! -------------------- + subroutine cm_set_draw_border(this, x) + !! Sets a logical value determining if the border should be drawn. + class(colormap), intent(inout) :: this + !! The colormap object. + logical, intent(in) :: x + !! Set to true if the border should be drawn; else, false. + this%m_drawBorder = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_show_tics(this) result(rst) + !! Gets a logical value determining if the tic marks should be drawn. + class(colormap), intent(in) :: this + !! The colormap object. + logical :: rst + !! Returns true if the tic marks should be drawn; else, false. + rst = this%m_showTics + end function + +! -------------------- + subroutine cm_set_show_tics(this, x) + !! Sets a logical value determining if the tic marks should be drawn. + class(colormap), intent(inout) :: this + !! The colormap object. + logical, intent(in) :: x + !! Set to true if the tic marks should be drawn; else, false. + this%m_showTics = x + end subroutine - call str%append("0 '#352a87',") - call str%append("1 '#0363e1',") - call str%append("2 '#1485d4',") - call str%append("3 '#06a7c6',") - call str%append("4 '#38b99e',") - call str%append("5 '#92bf73',") - call str%append("6 '#d9ba56',") - call str%append("7 '#fcce2e',") - call str%append("8 '#f9fb0e'") +! ------------------------------------------------------------------------------ + pure function cm_get_colorbar_thickness(this) result(rst) + !! Gets the relative thickness of the colorbar. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32) :: rst + !! The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. + rst = this%m_colorbarThickness + end function - x = char(str%to_string()) - end function - -! ****************************************************************************** -! GREY_COLORMAP MEMBERS -! ------------------------------------------------------------------------------ - function gcm_get_clr(this) result(x) - !! Gets the GNUPLOT string defining the color distribution. - class(grey_colormap), intent(in) :: this - !! The grey_colormap object. - character(len = :), allocatable :: x - !! The command string. - - type(string_builder) :: str - - call str%append("0 '#FFFFFF',") - call str%append("1 '#F0F0F0',") - call str%append("2 '#D9D9D9',") - call str%append("3 '#BDBDBD',") - call str%append("4 '#969696',") - call str%append("5 '#737373',") - call str%append("6 '#525252',") - call str%append("7 '#252525'") - - x = char(str%to_string()) - end function - -! ****************************************************************************** -! EARTH_COLORMAP -! ------------------------------------------------------------------------------ - function ecm_get_clr(this) result(x) - !! Gets the GNUPLOT string defining the color distribution. - class(earth_colormap), intent(in) :: this - !! The earth_colormap object. - character(len = :), allocatable :: x - !! The command string. - - type(string_builder) :: str - - call str%append("0 '#8C510A',") - call str%append("1 '#BF812D',") - call str%append("2 '#DFC27D',") - call str%append("3 '#F6E8C3',") - call str%append("4 '#D9F0D3',") - call str%append("5 '#A6DBA0',") - call str%append("6 '#5AAE61',") - call str%append("7 '#1B7837'") - - x = char(str%to_string()) - end function - -! ------------------------------------------------------------------------------ -! Additional Color Maps: -! https://github.com/Gnuplotting/gnuplot-palettes - -! ****************************************************************************** -! ADDED: Jan. 08, 2024 - JAC -! CUSTOM_COLORMAP -! ------------------------------------------------------------------------------ - function custom_get_clr(this) result(x) - !! Gets the GNUPLOT string defining the color distribution. - class(custom_colormap), intent(in) :: this - !! The custom_colormap object. - character(len = :), allocatable :: x - !! The command string. - - type(string_builder) :: str - integer(int32) :: i, n, r, g, b, c - character(len = 6) :: ctxt +! -------------------- + subroutine cm_set_colorbar_thickness(this, x) + !! Sets the relative colorbar thickness, clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), intent(in) :: x + !! The requested thickness; 0 uses GNUPLOT's default. + this%m_colorbarThickness = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_colorbar_length(this) result(rst) + !! Gets the relative length of the colorbar. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32) :: rst + !! The length in [0.0, 1.0]; 0 uses GNUPLOT's default. + rst = this%m_colorbarLength + end function + +! -------------------- + subroutine cm_set_colorbar_length(this, x) + !! Sets the relative colorbar length, clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), intent(in) :: x + !! The requested length; 0 uses GNUPLOT's default. + this%m_colorbarLength = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_axes_size(this) result(rst) + !! Gets the relative width and height of the axes. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32), dimension(2) :: rst + !! The [width, height], each in [0.0, 1.0]. + rst = this%m_axesSize + end function + +! -------------------- + subroutine cm_set_axes_size(this, x) + !! Sets the axes width and height, each clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), dimension(2), intent(in) :: x + !! The requested [width, height]. + this%m_axesSize = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_axes_origin(this) result(rst) + !! Gets the relative x-y coordinates of the axes origin. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32), dimension(2) :: rst + !! The [x, y] coordinates, each in [0.0, 1.0]. + rst = this%m_axesOrigin + end function + +! -------------------- + subroutine cm_set_axes_origin(this, x) + !! Sets the axes origin coordinates, each clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), dimension(2), intent(in) :: x + !! The requested [x, y] coordinates. + this%m_axesOrigin = max(0.0, min(1.0, x)) + end subroutine - if (.not.associated(this%m_map)) then - allocate(character(len = 0) :: x) - return - end if - - n = this%m_map%get_levels() - do i = 0, n - 1 - ! Get the RGB triple - call this%m_map%get_RGB(i, r, g, b) - c = ishft(r, 16) + ishft(g, 8) + b - write(ctxt, '(Z6.6)') c - - ! Append the color information - call str%append(to_string(i)) - call str%append(" '#") - call str%append(ctxt) - call str%append("'") - if (i /= n - 1) then - call str%append(",") - end if - end do - - x = char(str%to_string()) - end function - -! ------------------------------------------------------------------------------ - subroutine custom_set(this, map, err) - !! Sets the FORCOLORMAP colormap object. - class(custom_colormap), intent(inout) :: this - !! The custom_colormap object. - class(cmap), intent(in) :: map - !! The FORCOLORMAP colormap object. The custom_colormap object - !! stores a copy of this object; therefore, any changes made to - !! x after calls to this routine will not impact the behavior of - !! the custom_colormap object. - class(errors), intent(inout), optional, target :: err - !! An error handling object. - - ! Local Variables - integer(int32) :: flag - class(errors), pointer :: errmgr - type(errors), target :: deferr - - ! Initialization - if (present(err)) then - errmgr => err - else - errmgr => deferr - end if +! ------------------------------------------------------------------------------ +! TO DO: +! - Set user-defined tic labels & limits (ref: http://gnuplot.sourceforge.net/demo_5.4/cerf.html) + +! ****************************************************************************** +! RAINBOW_COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function rcm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(rainbow_colormap), intent(in) :: this + !! The rainbow_colormap object. + character(len = :), allocatable :: x + !! The command string. + x = '0 "dark-blue", 1 "blue", 2 "cyan", 3 "green", 4 "yellow", ' // & + '5 "orange", 6 "red", 7 "dark-red"' + end function + +! ****************************************************************************** +! HOT_COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function hcm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(hot_colormap), intent(in) :: this + !! The hot_colormap object. + character(len = :), allocatable :: x + !! The command string. + x = '0 "black", 1 "red", 2 "orange", 3 "yellow", 4 "white"' + end function + +! ****************************************************************************** +! COOL_COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function ccm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(cool_colormap), intent(in) :: this + !! The cool_colormap object. + character(len = :), allocatable :: x + !! The command string. + + type(string_builder) :: str + + call str%append("0 '#08589E',") + call str%append("1 '#2B8CBE',") + call str%append("2 '#4EB3D3',") + call str%append("3 '#7BCCC4',") + call str%append("4 '#A8DDB5',") + call str%append("5 '#CCEBC5',") + call str%append("6 '#E0F3DB',") + call str%append("7 '#F7FCF0'") - ! Process - if (associated(this%m_map)) deallocate(this%m_map) - allocate(this%m_map, source = map, stat = flag) - if (flag /= 0) then - call report_memory_error(errmgr, "custom_set", flag) - return - end if - end subroutine - -! ------------------------------------------------------------------------------ - function custom_get(this) result(rst) - !! Gets a pointer to the FORCOLORMAP colormap object. - class(custom_colormap), intent(in) :: this - !! The custom_colormap object. - class(cmap), pointer :: rst - !! A pointer to the FORCOLORMAP colormap object. - rst => this%m_map - end function - -! ------------------------------------------------------------------------------ - subroutine custom_final(this) - type(custom_colormap), intent(inout) :: this - !! The custom_colormap object. - if (associated(this%m_map)) then - deallocate(this%m_map) - nullify(this%m_map) - end if - end subroutine + x = char(str%to_string()) + ! x = '0 "blue", 1 "turquoise", 2 "light-green"' + end function + +! ****************************************************************************** +! PARULA_COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function pcm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(parula_colormap), intent(in) :: this + !! The parula_colormap object. + character(len = :), allocatable :: x + !! The command string. + + type(string_builder) :: str + + call str%append("0 '#352a87',") + call str%append("1 '#0363e1',") + call str%append("2 '#1485d4',") + call str%append("3 '#06a7c6',") + call str%append("4 '#38b99e',") + call str%append("5 '#92bf73',") + call str%append("6 '#d9ba56',") + call str%append("7 '#fcce2e',") + call str%append("8 '#f9fb0e'") + + x = char(str%to_string()) + end function -! ------------------------------------------------------------------------------ -end module +! ****************************************************************************** +! GREY_COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function gcm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(grey_colormap), intent(in) :: this + !! The grey_colormap object. + character(len = :), allocatable :: x + !! The command string. + + type(string_builder) :: str + + call str%append("0 '#FFFFFF',") + call str%append("1 '#F0F0F0',") + call str%append("2 '#D9D9D9',") + call str%append("3 '#BDBDBD',") + call str%append("4 '#969696',") + call str%append("5 '#737373',") + call str%append("6 '#525252',") + call str%append("7 '#252525'") + + x = char(str%to_string()) + end function + +! ****************************************************************************** +! EARTH_COLORMAP +! ------------------------------------------------------------------------------ + function ecm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(earth_colormap), intent(in) :: this + !! The earth_colormap object. + character(len = :), allocatable :: x + !! The command string. + + type(string_builder) :: str + + call str%append("0 '#8C510A',") + call str%append("1 '#BF812D',") + call str%append("2 '#DFC27D',") + call str%append("3 '#F6E8C3',") + call str%append("4 '#D9F0D3',") + call str%append("5 '#A6DBA0',") + call str%append("6 '#5AAE61',") + call str%append("7 '#1B7837'") + + x = char(str%to_string()) + end function + +! ------------------------------------------------------------------------------ +! Additional Color Maps: +! https://github.com/Gnuplotting/gnuplot-palettes + +! ****************************************************************************** +! ADDED: Jan. 08, 2024 - JAC +! CUSTOM_COLORMAP +! ------------------------------------------------------------------------------ + function custom_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(custom_colormap), intent(in) :: this + !! The custom_colormap object. + character(len = :), allocatable :: x + !! The command string. + + type(string_builder) :: str + integer(int32) :: i, n, r, g, b, c + character(len = 6) :: ctxt + + if (.not.associated(this%m_map)) then + allocate(character(len = 0) :: x) + return + end if + + n = this%m_map%get_levels() + do i = 0, n - 1 + ! Get the RGB triple + call this%m_map%get_RGB(i, r, g, b) + c = ishft(r, 16) + ishft(g, 8) + b + write(ctxt, '(Z6.6)') c + + ! Append the color information + call str%append(to_string(i)) + call str%append(" '#") + call str%append(ctxt) + call str%append("'") + if (i /= n - 1) then + call str%append(",") + end if + end do + + x = char(str%to_string()) + end function + +! ------------------------------------------------------------------------------ + subroutine custom_set(this, map, err) + !! Sets the FORCOLORMAP colormap object. + class(custom_colormap), intent(inout) :: this + !! The custom_colormap object. + class(cmap), intent(in) :: map + !! The FORCOLORMAP colormap object. The custom_colormap object + !! stores a copy of this object; therefore, any changes made to + !! x after calls to this routine will not impact the behavior of + !! the custom_colormap object. + class(errors), intent(inout), optional, target :: err + !! An error handling object. + + ! Local Variables + integer(int32) :: flag + class(errors), pointer :: errmgr + type(errors), target :: deferr + + ! Initialization + if (present(err)) then + errmgr => err + else + errmgr => deferr + end if + + ! Process + if (associated(this%m_map)) deallocate(this%m_map) + allocate(this%m_map, source = map, stat = flag) + if (flag /= 0) then + call report_memory_error(errmgr, "custom_set", flag) + return + end if + end subroutine + +! ------------------------------------------------------------------------------ + function custom_get(this) result(rst) + !! Gets a pointer to the FORCOLORMAP colormap object. + class(custom_colormap), intent(in) :: this + !! The custom_colormap object. + class(cmap), pointer :: rst + !! A pointer to the FORCOLORMAP colormap object. + rst => this%m_map + end function + +! ------------------------------------------------------------------------------ + subroutine custom_final(this) + type(custom_colormap), intent(inout) :: this + !! The custom_colormap object. + if (associated(this%m_map)) then + deallocate(this%m_map) + nullify(this%m_map) + end if + end subroutine + +! ****************************************************************************** +! SPECTRAL_COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function spcm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(spectral_colormap), intent(in) :: this + !! The spectral_colormap object. + character(len = :), allocatable :: x + !! The command string. + + type(string_builder) :: str + + call str%append("0 '#D53E4F',") + call str%append("1 '#F46D43',") + call str%append("2 '#FDAE61',") + call str%append("3 '#FEE08B',") + call str%append("4 '#E6F598',") + call str%append("5 '#ABDDA4',") + call str%append("6 '#66C2A5',") + call str%append("7 '#3288BD'") + + x = char(str%to_string()) + end function + +! ------------------------------------------------------------------------------ +end module @@ -660,7 +830,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_colors.f90.html b/doc/sourcefile/fplot_colors.f90.html index dc01370a..c27f4f1a 100644 --- a/doc/sourcefile/fplot_colors.f90.html +++ b/doc/sourcefile/fplot_colors.f90.html @@ -74,7 +74,7 @@

    fplot_colors.f90
  • 144 statements + title=" 1.5% of total for source files.">144 statements
  • @@ -406,7 +406,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_constants.f90.html b/doc/sourcefile/fplot_constants.f90.html index 58acd1c7..1c248d14 100644 --- a/doc/sourcefile/fplot_constants.f90.html +++ b/doc/sourcefile/fplot_constants.f90.html @@ -344,7 +344,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_core.f90.html b/doc/sourcefile/fplot_core.f90.html index 3c042abe..efb557ab 100644 --- a/doc/sourcefile/fplot_core.f90.html +++ b/doc/sourcefile/fplot_core.f90.html @@ -74,7 +74,7 @@

    fplot_core.f90
  • 44 statements + title=" 0.4% of total for source files.">44 statements
  • @@ -220,7 +220,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_core_routines.f90.html b/doc/sourcefile/fplot_core_routines.f90.html index 65a082b8..76114e25 100644 --- a/doc/sourcefile/fplot_core_routines.f90.html +++ b/doc/sourcefile/fplot_core_routines.f90.html @@ -74,7 +74,7 @@

    fplot_core_routines.f90
  • 53 statements + title=" 0.5% of total for source files.">53 statements
  • @@ -258,7 +258,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_delaunay_tri_surface.f90.html b/doc/sourcefile/fplot_delaunay_tri_surface.f90.html index 25ee2075..e598dde0 100644 --- a/doc/sourcefile/fplot_delaunay_tri_surface.f90.html +++ b/doc/sourcefile/fplot_delaunay_tri_surface.f90.html @@ -74,7 +74,7 @@

    fplot_delaunay_tri_surface.f90
  • 133 statements + title=" 1.4% of total for source files.">133 statements
  • @@ -403,7 +403,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_errors.f90.html b/doc/sourcefile/fplot_errors.f90.html index f90c14b4..2761c08c 100644 --- a/doc/sourcefile/fplot_errors.f90.html +++ b/doc/sourcefile/fplot_errors.f90.html @@ -309,7 +309,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_filled_plot_data.f90.html b/doc/sourcefile/fplot_filled_plot_data.f90.html index b98dc5bb..e693a927 100644 --- a/doc/sourcefile/fplot_filled_plot_data.f90.html +++ b/doc/sourcefile/fplot_filled_plot_data.f90.html @@ -74,7 +74,7 @@

    fplot_filled_plot_data.f90
  • 129 statements + title=" 1.3% of total for source files.">129 statements
  • @@ -390,7 +390,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_label.f90.html b/doc/sourcefile/fplot_label.f90.html index d3bbab28..9a259f29 100644 --- a/doc/sourcefile/fplot_label.f90.html +++ b/doc/sourcefile/fplot_label.f90.html @@ -74,7 +74,7 @@

    fplot_label.f90
  • 91 statements + title=" 0.9% of total for source files.">91 statements
  • @@ -337,7 +337,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_latex_terminal.f90.html b/doc/sourcefile/fplot_latex_terminal.f90.html index c86a5564..7480ec84 100644 --- a/doc/sourcefile/fplot_latex_terminal.f90.html +++ b/doc/sourcefile/fplot_latex_terminal.f90.html @@ -74,7 +74,7 @@

    fplot_latex_terminal.f90
  • 23 statements + title=" 0.2% of total for source files.">23 statements
  • @@ -202,7 +202,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_legend.f90.html b/doc/sourcefile/fplot_legend.f90.html index 4a0441cf..e6d78a4d 100644 --- a/doc/sourcefile/fplot_legend.f90.html +++ b/doc/sourcefile/fplot_legend.f90.html @@ -74,7 +74,7 @@

    fplot_legend.f90
  • 151 statements + title=" 1.5% of total for source files.">151 statements
  • @@ -439,7 +439,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_multiplot.f90.html b/doc/sourcefile/fplot_multiplot.f90.html index cff6e117..e6d431cf 100644 --- a/doc/sourcefile/fplot_multiplot.f90.html +++ b/doc/sourcefile/fplot_multiplot.f90.html @@ -74,7 +74,7 @@

    fplot_multiplot.f90
  • 328 statements + title=" 4.8% of total for source files.">469 statements
  • @@ -187,498 +187,729 @@

    Source Code

    !! Has a title? class(terminal), pointer :: m_terminal => null() !! The GNUPLOT terminal object to target. - contains - final :: mp_clean - procedure, public :: get_command_string => mp_get_command - procedure, public :: initialize => mp_init - procedure, public :: get_row_count => mp_get_rows - procedure, public :: get_column_count => mp_get_cols - procedure, public :: get_plot_count => mp_get_count - procedure, public :: get_title => mp_get_title - procedure, public :: set_title => mp_set_title - procedure, public :: draw => mp_draw - procedure, public :: get => mp_get - procedure, public :: set => mp_set - procedure, public :: is_title_defined => mp_has_title - procedure, public :: get_terminal => mp_get_term - procedure, public :: save_file => mp_save - procedure, public :: get_font_name => mp_get_font - procedure, public :: set_font_name => mp_set_font - procedure, public :: get_font_size => mp_get_font_size - procedure, public :: set_font_size => mp_set_font_size - procedure, public :: set_window_size => mp_set_window_size - end type - -contains -! ------------------------------------------------------------------------------ - function mp_get_command(this) result(x) - !! Gets the GNUPLOT commands for this object. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - character(len = :), allocatable :: x - !! The command string. - - ! Local Variables - type(string_builder) :: str - integer(int32) :: i, j, m, n - class(plot), pointer :: ptr - - ! Initialization - call str%initialize() - m = this%get_row_count() - n = this%get_column_count() - - ! Set up the multiplot - call str%append("set multiplot layout ") - call str%append(to_string(m)) - call str%append(",") - call str%append(to_string(n)) - call str%append(" columnsfirst") - if (this%is_title_defined()) then - call str%append(" title ") - call str%append('"') - call str%append(this%get_title()) - call str%append('"') - end if - call str%append(new_line('a')) - - ! Write commands for each plot object - do j = 1, n - do i = 1, m - ptr => this%get(i, j) - call str%append(new_line('a')) - call str%append(ptr%get_command_string()) - end do - end do - - ! Close out the multiplot - call str%append(new_line('a')) - call str%append("unset multiplot") - - ! Get the string - x = char(str%to_string()) - end function - -! ------------------------------------------------------------------------------ - subroutine mp_init(this, m, n, term, width, height, fname, err) - !! Initializes the multiplot object. - class(multiplot), intent(inout) :: this - !! The [[multiplot]] object. - integer(int32), intent(in) :: m - !! The number of rows of plots. - integer(int32), intent(in) :: n - !! The number of columns of plots. - integer(int32), intent(in), optional :: term - !! An optional input that is used to define the terminal. The - !! default terminal is a WXT terminal. The acceptable inputs are: - !! - !! - GNUPLOT_TERMINAL_PNG - !! - !! - GNUPLOT_TERMINAL_QT - !! - !! - GNUPLOT_TERMINAL_WIN32 - !! - !! - GNUPLOT_TERMINAL_WXT - !! - !! - GNUPLOT_TERMINAL_LATEX - !! - !! - GNUPLOT_TERMINAL_SVG - !! - !! - GNUPLOT_TERMINAL_PDF - integer(int32), intent(in), optional :: width - !! Optionally, the width of the plot window. - integer(int32), intent(in), optional :: height - !! Optionally, the height of the plot window. - character(len = *), intent(in), optional :: fname - !! A filename to associate with terminals that print to file. - class(errors), intent(inout), optional, target :: err - !! An error handling object. + real(real32), private :: m_leftMargin = 0.12 + real(real32), private :: m_rightMargin = 0.95 + real(real32), private :: m_bottomMargin = 0.10 + real(real32), private :: m_topMargin = 0.95 + real(real32), private :: m_horizontalSpacing = 0.0 + real(real32), private :: m_verticalSpacing = 0.0 + logical, private :: m_useAutoMargins = .true. + contains + final :: mp_clean + procedure, public :: get_command_string => mp_get_command + procedure, public :: initialize => mp_init + procedure, public :: get_row_count => mp_get_rows + procedure, public :: get_column_count => mp_get_cols + procedure, public :: get_plot_count => mp_get_count + procedure, public :: get_title => mp_get_title + procedure, public :: set_title => mp_set_title + procedure, public :: draw => mp_draw + procedure, public :: get => mp_get + procedure, public :: set => mp_set + procedure, public :: is_title_defined => mp_has_title + procedure, public :: get_terminal => mp_get_term + procedure, public :: save_file => mp_save + procedure, public :: get_font_name => mp_get_font + procedure, public :: set_font_name => mp_set_font + procedure, public :: get_font_size => mp_get_font_size + procedure, public :: set_font_size => mp_set_font_size + procedure, public :: set_window_size => mp_set_window_size + procedure, public :: get_left_margin => mp_get_left_margin + procedure, public :: set_left_margin => mp_set_left_margin + procedure, public :: get_right_margin => mp_get_right_margin + procedure, public :: set_right_margin => mp_set_right_margin + procedure, public :: get_top_margin => mp_get_top_margin + procedure, public :: set_top_margin => mp_set_top_margin + procedure, public :: get_bottom_margin => mp_get_bottom_margin + procedure, public :: set_bottom_margin => mp_set_bottom_margin + procedure, public :: get_horizontal_spacing => mp_get_horizontal_spacing + procedure, public :: set_horizontal_spacing => mp_set_horizontal_spacing + procedure, public :: get_vertical_spacing => mp_get_vertical_spacing + procedure, public :: set_vertical_spacing => mp_set_vertical_spacing + procedure, public :: get_use_auto_generated_margins => mp_get_use_auto_generated_margins + procedure, public :: set_use_auto_generated_margins => mp_set_use_auto_generated_margins + end type + +contains +! ------------------------------------------------------------------------------ + function mp_get_command(this) result(x) + !! Gets the GNUPLOT commands for this object. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + character(len = :), allocatable :: x + !! The command string. + + ! Local Variables + type(string_builder) :: str + integer(int32) :: i, j, m, n + class(plot), pointer :: ptr + + ! Initialization + call str%initialize() + m = this%get_row_count() + n = this%get_column_count() + + ! Set up the multiplot + call str%append("set multiplot layout ") + call str%append(to_string(m)) + call str%append(",") + call str%append(to_string(n)) + call str%append(" columnsfirst") + if (this%is_title_defined()) then + call str%append(" title ") + call str%append('"') + call str%append(this%get_title()) + call str%append('"') + end if + if (.not.this%get_use_auto_generated_margins()) then + call str%append(" margins ") + call str%append(to_string(this%get_left_margin())) + call str%append(",") + call str%append(to_string(this%get_right_margin())) + call str%append(",") + call str%append(to_string(this%get_bottom_margin())) + call str%append(",") + call str%append(to_string(this%get_top_margin())) + end if + call str%append(" spacing ") + call str%append(to_string(this%get_horizontal_spacing())) + call str%append(",") + call str%append(to_string(this%get_vertical_spacing())) + call str%append(new_line('a')) + + ! Write commands for each plot object + do j = 1, n + do i = 1, m + ptr => this%get(i, j) + call str%append(new_line('a')) + call str%append(ptr%get_command_string()) + end do + end do + + ! Close out the multiplot + call str%append(new_line('a')) + call str%append("unset multiplot") + + ! Get the string + x = char(str%to_string()) + end function - ! Local Variables - integer(int32) :: flag, t, i - class(errors), pointer :: errmgr - type(errors), target :: deferr - type(wxt_terminal), pointer :: wxt - type(windows_terminal), pointer :: win - type(qt_terminal), pointer :: qt - type(png_terminal), pointer :: png - type(latex_terminal), pointer :: latex - type(svg_terminal), pointer :: svg - type(pdf_terminal), pointer :: pdf - - ! Initialization - if (present(err)) then - errmgr => err - else - errmgr => deferr - end if - if (present(term)) then - t = term - else - t = GNUPLOT_TERMINAL_WXT - end if - - ! Process - call this%m_plots%clear() - this%m_rows = m - this%m_cols = n - flag = 0 - - ! Populate the list with a dummy variable at the outset. This allows - ! the list to be appropriately sized so the user may use the "set" - ! subroutine appropriately - do i = 1, m * n - call this%m_plots%push(i) - end do - - ! Define the terminal - if (associated(this%m_terminal)) deallocate(this%m_terminal) - select case (t) - case (GNUPLOT_TERMINAL_PNG) - allocate(png, stat = flag) - if (present(fname)) call png%set_filename(fname) - this%m_terminal => png - case (GNUPLOT_TERMINAL_QT) - allocate(qt, stat = flag) - this%m_terminal => qt - case (GNUPLOT_TERMINAL_WIN32) - allocate(win, stat = flag) - this%m_terminal => win - case (GNUPLOT_TERMINAL_LATEX) - allocate(latex, stat = flag) - if (present(fname)) call latex%set_filename(fname) - this%m_terminal => latex - case (GNUPLOT_TERMINAL_SVG) - allocate(svg) - if (present(fname)) call svg%set_filename(fname) - this%m_terminal => svg - case (GNUPLOT_TERMINAL_PDF) - allocate(pdf, stat = flag) - if (present(fname)) call pdf%set_filename(fname) - this%m_terminal => pdf - case default ! WXT is the default - allocate(wxt, stat = flag) - this%m_terminal => wxt - end select - - ! Error Checking - if (flag /= 0) then - call report_memory_error(errmgr, "mp_init", flag) - return - end if - - ! Size the window? - if (present(width)) then - call this%m_terminal%set_window_width(width) - end if - if (present(height)) then - call this%m_terminal%set_window_height(height) - end if - end subroutine - -! ------------------------------------------------------------------------------ - subroutine mp_clean(this) - !! Cleans up resources held by the multiplot object. - type(multiplot), intent(inout) :: this - !! The [[multiplot]] object. - if (associated(this%m_terminal)) deallocate(this%m_terminal) - nullify(this%m_terminal) - end subroutine - -! ------------------------------------------------------------------------------ - pure function mp_get_rows(this) result(x) - !! Gets the number of rows of plots. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - integer(int32) :: x - !! The row count. - x = this%m_rows - end function - -! -------------------- - pure function mp_get_cols(this) result(x) - !! Gets the number of columns of plots. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - integer(int32) :: x - !! The column count. - x = this%m_cols - end function - -! -------------------- - pure function mp_get_count(this) result(x) - !! Gets the total number of plots. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - integer(int32) :: x - !! The plot count. - x = this%m_plots%count() - end function - -! ------------------------------------------------------------------------------ - function mp_get_title(this) result(x) - !! Gets the multiplot's title. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - character(len = :), allocatable :: x - !! The title. - x = this%m_title - end function - -! -------------------- - subroutine mp_set_title(this, x) - !! Sets the multiplot's title. - class(multiplot), intent(inout) :: this - !! The [[multiplot]] object. - character(len = *), intent(in) :: x - !! The title. - - ! Local Variables - integer(int32) :: n - - ! Process - n = min(len(x), PLOTDATA_MAX_NAME_LENGTH) - this%m_title = "" - if (n /= 0) then - this%m_title(1:n) = x(1:n) - this%m_hasTitle = .true. - else - this%m_hasTitle = .false. - end if - end subroutine - -! ------------------------------------------------------------------------------ - subroutine mp_draw(this, persist, err) - !! Launches GNUPLOT and draws the multiplot per the current state of - !! the command list. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - logical, intent(in), optional :: persist - !! An optional parameter that can be used to keep GNUPLOT open. - !! Set to true to force GNUPLOT to remain open; else, set to false - !! to allow GNUPLOT to close after drawing. The default is true. - class(errors), intent(inout), optional, target :: err - !! An error handling object. +! ------------------------------------------------------------------------------ + subroutine mp_init(this, m, n, term, width, height, fname, err) + !! Initializes the multiplot object. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + integer(int32), intent(in) :: m + !! The number of rows of plots. + integer(int32), intent(in) :: n + !! The number of columns of plots. + integer(int32), intent(in), optional :: term + !! An optional input that is used to define the terminal. The + !! default terminal is a WXT terminal. The acceptable inputs are: + !! + !! - GNUPLOT_TERMINAL_PNG + !! + !! - GNUPLOT_TERMINAL_QT + !! + !! - GNUPLOT_TERMINAL_WIN32 + !! + !! - GNUPLOT_TERMINAL_WXT + !! + !! - GNUPLOT_TERMINAL_LATEX + !! + !! - GNUPLOT_TERMINAL_SVG + !! + !! - GNUPLOT_TERMINAL_PDF + integer(int32), intent(in), optional :: width + !! Optionally, the width of the plot window. + integer(int32), intent(in), optional :: height + !! Optionally, the height of the plot window. + character(len = *), intent(in), optional :: fname + !! A filename to associate with terminals that print to file. + class(errors), intent(inout), optional, target :: err + !! An error handling object. + + ! Local Variables + integer(int32) :: flag, t, i + class(errors), pointer :: errmgr + type(errors), target :: deferr + type(wxt_terminal), pointer :: wxt + type(windows_terminal), pointer :: win + type(qt_terminal), pointer :: qt + type(png_terminal), pointer :: png + type(latex_terminal), pointer :: latex + type(svg_terminal), pointer :: svg + type(pdf_terminal), pointer :: pdf + + ! Initialization + if (present(err)) then + errmgr => err + else + errmgr => deferr + end if + if (present(term)) then + t = term + else + t = GNUPLOT_TERMINAL_WXT + end if + + ! Process + call this%m_plots%clear() + this%m_rows = m + this%m_cols = n + flag = 0 + + ! Populate the list with a dummy variable at the outset. This allows + ! the list to be appropriately sized so the user may use the "set" + ! subroutine appropriately + do i = 1, m * n + call this%m_plots%push(i) + end do + + ! Define the terminal + if (associated(this%m_terminal)) deallocate(this%m_terminal) + select case (t) + case (GNUPLOT_TERMINAL_PNG) + allocate(png, stat = flag) + if (present(fname)) call png%set_filename(fname) + this%m_terminal => png + case (GNUPLOT_TERMINAL_QT) + allocate(qt, stat = flag) + this%m_terminal => qt + case (GNUPLOT_TERMINAL_WIN32) + allocate(win, stat = flag) + this%m_terminal => win + case (GNUPLOT_TERMINAL_LATEX) + allocate(latex, stat = flag) + if (present(fname)) call latex%set_filename(fname) + this%m_terminal => latex + case (GNUPLOT_TERMINAL_SVG) + allocate(svg) + if (present(fname)) call svg%set_filename(fname) + this%m_terminal => svg + case (GNUPLOT_TERMINAL_PDF) + allocate(pdf, stat = flag) + if (present(fname)) call pdf%set_filename(fname) + this%m_terminal => pdf + case default ! WXT is the default + allocate(wxt, stat = flag) + this%m_terminal => wxt + end select + + ! Error Checking + if (flag /= 0) then + call report_memory_error(errmgr, "mp_init", flag) + return + end if + + ! Size the window? + if (present(width)) then + call this%m_terminal%set_window_width(width) + end if + if (present(height)) then + call this%m_terminal%set_window_height(height) + end if + end subroutine + +! ------------------------------------------------------------------------------ + subroutine mp_clean(this) + !! Cleans up resources held by the multiplot object. + type(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + if (associated(this%m_terminal)) deallocate(this%m_terminal) + nullify(this%m_terminal) + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_rows(this) result(x) + !! Gets the number of rows of plots. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + integer(int32) :: x + !! The row count. + x = this%m_rows + end function + +! -------------------- + pure function mp_get_cols(this) result(x) + !! Gets the number of columns of plots. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + integer(int32) :: x + !! The column count. + x = this%m_cols + end function + +! -------------------- + pure function mp_get_count(this) result(x) + !! Gets the total number of plots. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + integer(int32) :: x + !! The plot count. + x = this%m_plots%count() + end function + +! ------------------------------------------------------------------------------ + function mp_get_title(this) result(x) + !! Gets the multiplot's title. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + character(len = :), allocatable :: x + !! The title. + x = this%m_title + end function - ! Parameters - character(len = *), parameter :: fname = "temp_gnuplot_file.plt" - - ! Local Variables - logical :: p - integer(int32) :: fid, flag - class(errors), pointer :: errmgr - type(errors), target :: deferr - class(terminal), pointer :: term - - ! Initialization - if (present(persist)) then - p = persist - else - p = .true. - end if - if (present(err)) then - errmgr => err - else - errmgr => deferr - end if - term => this%get_terminal() - - ! Open the file for writing, and write the contents to file - open(newunit = fid, file = fname, iostat = flag) - if (flag > 0) then - call report_file_create_error(errmgr, "mp_draw", fname, flag) - return - end if - write(fid, '(A)') term%get_command_string() - write(fid, '(A)') new_line('a') - write(fid, '(A)') this%get_command_string() - close(fid) - - ! Launch GNUPLOT - if (p) then - call execute_command_line("gnuplot --persist " // fname) - else - call execute_command_line("gnuplot " // fname) - end if - - ! Clean up by deleting the file - open(newunit = fid, file = fname) - close(fid, status = "delete") - end subroutine - -! ------------------------------------------------------------------------------ - function mp_get(this, i, j) result(x) - !! Gets the requested plot object. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - integer(int32), intent(in) :: i - !! The row index of the plot to retrieve. - integer(int32), intent(in) :: j - !! The column index of the plot to retrieve. - class(plot), pointer :: x - !! A pointer to the plot object. +! -------------------- + subroutine mp_set_title(this, x) + !! Sets the multiplot's title. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + character(len = *), intent(in) :: x + !! The title. + + ! Local Variables + integer(int32) :: n + + ! Process + n = min(len(x), PLOTDATA_MAX_NAME_LENGTH) + this%m_title = "" + if (n /= 0) then + this%m_title(1:n) = x(1:n) + this%m_hasTitle = .true. + else + this%m_hasTitle = .false. + end if + end subroutine + +! ------------------------------------------------------------------------------ + subroutine mp_draw(this, persist, err) + !! Launches GNUPLOT and draws the multiplot per the current state of + !! the command list. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + logical, intent(in), optional :: persist + !! An optional parameter that can be used to keep GNUPLOT open. + !! Set to true to force GNUPLOT to remain open; else, set to false + !! to allow GNUPLOT to close after drawing. The default is true. + class(errors), intent(inout), optional, target :: err + !! An error handling object. + + ! Parameters + character(len = *), parameter :: fname = "temp_gnuplot_file.plt" + + ! Local Variables + logical :: p + integer(int32) :: fid, flag + class(errors), pointer :: errmgr + type(errors), target :: deferr + class(terminal), pointer :: term + + ! Initialization + if (present(persist)) then + p = persist + else + p = .true. + end if + if (present(err)) then + errmgr => err + else + errmgr => deferr + end if + term => this%get_terminal() - ! Local Variables - class(*), pointer :: item - integer(int32) :: ind - - ! Process - ind = this%m_rows * (j - 1) + i - item => this%m_plots%get(ind) - select type (item) - class is (plot) - x => item - class default - nullify(x) - end select - end function - -! -------------------- - subroutine mp_set(this, i, j, x) - !! Replaces the specified plot. - class(multiplot), intent(inout) :: this - !! The [[multiplot]] object. - integer(int32), intent(in) :: i - !! The row index of the plot to replace. - integer(int32), intent(in) :: j - !! The column index of the plot to replace. - class(plot), intent(in) :: x - !! The new plot. - - ! Local Variables - integer(int32) :: ind - - ! Process - ind = this%m_rows * (j - 1) + i - call this%m_plots%set(ind, x) - end subroutine - -! ------------------------------------------------------------------------------ - pure function mp_has_title(this) result(x) - !! Gets a value determining if a title has been defined for the - !! multiplot object. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - logical :: x - !! Returns true if a title has been defined for this multiplot; - !! else, returns false. - x = this%m_hasTitle - end function - -! ------------------------------------------------------------------------------ - function mp_get_term(this) result(x) - !! Gets the GNUPLOT terminal object. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - class(terminal), pointer :: x - !! A pointer to the terminal object. - x => this%m_terminal - end function - -! ------------------------------------------------------------------------------ - subroutine mp_save(this, fname, err) - !! Saves a GNUPLOT command file. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - character(len = *), intent(in) :: fname - !! The filename. - class(errors), intent(inout), optional, target :: err - !! An error handling object. - - ! Local Variables - integer(int32) :: fid, flag - class(errors), pointer :: errmgr - type(errors), target :: deferr - class(terminal), pointer :: term - - ! Initialization - if (present(err)) then - errmgr => err - else - errmgr => deferr - end if - term => this%get_terminal() - - ! Open the file for writing, and write the contents to file - open(newunit = fid, file = fname, iostat = flag) - if (flag > 0) then - call report_file_create_error(errmgr, "mp_save", fname, flag) - return - end if - write(fid, '(A)') term%get_command_string() - write(fid, '(A)') new_line('a') - write(fid, '(A)') this%get_command_string() - close(fid) - end subroutine - -! ------------------------------------------------------------------------------ - function mp_get_font(this) result(x) - !! Gets the name of the font used for plot text. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - character(len = :), allocatable :: x - !! The font name. - class(terminal), pointer :: term - term => this%get_terminal() - x = term%get_font_name() - end function - -! -------------------- - subroutine mp_set_font(this, x) - !! Sets the name of the font used for plot text. - class(multiplot), intent(inout) :: this - !! The [[multiplot]] object. - character(len = *), intent(in) :: x - !! The font name. - class(terminal), pointer :: term - term => this%get_terminal() - call term%set_font_name(x) - end subroutine - -! ------------------------------------------------------------------------------ - function mp_get_font_size(this) result(x) - !! Gets the size of the font used by the plot. - class(multiplot), intent(in) :: this - !! The [[multiplot]] object. - integer(int32) :: x - !! The font size. - class(terminal), pointer :: term - term => this%get_terminal() - x = term%get_font_size() - end function - -! -------------------- - subroutine mp_set_font_size(this, x) - !! Sets the size of the font used by the plot. - class(multiplot), intent(inout) :: this - !! The [[multiplot]] object. - integer(int32), intent(in) :: x - !! The font size. - class(terminal), pointer :: term - term => this%get_terminal() - call term%set_font_size(x) - end subroutine - -! ****************************************************************************** -! ADDED AUG. 16, 2026 - V1.9.0 -! ------------------------------------------------------------------------------ - subroutine mp_set_window_size(this, width, height) - !! Sets the height and width of the plot window. - class(multiplot), intent(inout) :: this - !! The [[multiplot]] object. - integer(int32), intent(in) :: width - !! The plot window width. - integer(int32), intent(in) :: height - !! The plot window height. - - if (associated(this%m_terminal)) then - call this%m_terminal%set_window_width(width) - call this%m_terminal%set_window_height(height) - end if - end subroutine - -! ------------------------------------------------------------------------------ -end module + ! Open the file for writing, and write the contents to file + open(newunit = fid, file = fname, iostat = flag) + if (flag > 0) then + call report_file_create_error(errmgr, "mp_draw", fname, flag) + return + end if + write(fid, '(A)') term%get_command_string() + write(fid, '(A)') new_line('a') + write(fid, '(A)') this%get_command_string() + close(fid) + + ! Launch GNUPLOT + if (p) then + call execute_command_line("gnuplot --persist " // fname) + else + call execute_command_line("gnuplot " // fname) + end if + + ! Clean up by deleting the file + open(newunit = fid, file = fname) + close(fid, status = "delete") + end subroutine + +! ------------------------------------------------------------------------------ + function mp_get(this, i, j) result(x) + !! Gets the requested plot object. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + integer(int32), intent(in) :: i + !! The row index of the plot to retrieve. + integer(int32), intent(in) :: j + !! The column index of the plot to retrieve. + class(plot), pointer :: x + !! A pointer to the plot object. + + ! Local Variables + class(*), pointer :: item + integer(int32) :: ind + + ! Process + ind = this%m_rows * (j - 1) + i + item => this%m_plots%get(ind) + select type (item) + class is (plot) + x => item + class default + nullify(x) + end select + end function + +! -------------------- + subroutine mp_set(this, i, j, x) + !! Replaces the specified plot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + integer(int32), intent(in) :: i + !! The row index of the plot to replace. + integer(int32), intent(in) :: j + !! The column index of the plot to replace. + class(plot), intent(in) :: x + !! The new plot. + + ! Local Variables + integer(int32) :: ind + + ! Process + ind = this%m_rows * (j - 1) + i + call this%m_plots%set(ind, x) + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_has_title(this) result(x) + !! Gets a value determining if a title has been defined for the + !! multiplot object. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + logical :: x + !! Returns true if a title has been defined for this multiplot; + !! else, returns false. + x = this%m_hasTitle + end function + +! ------------------------------------------------------------------------------ + function mp_get_term(this) result(x) + !! Gets the GNUPLOT terminal object. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + class(terminal), pointer :: x + !! A pointer to the terminal object. + x => this%m_terminal + end function + +! ------------------------------------------------------------------------------ + subroutine mp_save(this, fname, err) + !! Saves a GNUPLOT command file. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + character(len = *), intent(in) :: fname + !! The filename. + class(errors), intent(inout), optional, target :: err + !! An error handling object. + + ! Local Variables + integer(int32) :: fid, flag + class(errors), pointer :: errmgr + type(errors), target :: deferr + class(terminal), pointer :: term + + ! Initialization + if (present(err)) then + errmgr => err + else + errmgr => deferr + end if + term => this%get_terminal() + + ! Open the file for writing, and write the contents to file + open(newunit = fid, file = fname, iostat = flag) + if (flag > 0) then + call report_file_create_error(errmgr, "mp_save", fname, flag) + return + end if + write(fid, '(A)') term%get_command_string() + write(fid, '(A)') new_line('a') + write(fid, '(A)') this%get_command_string() + close(fid) + end subroutine + +! ------------------------------------------------------------------------------ + function mp_get_font(this) result(x) + !! Gets the name of the font used for plot text. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + character(len = :), allocatable :: x + !! The font name. + class(terminal), pointer :: term + term => this%get_terminal() + x = term%get_font_name() + end function + +! -------------------- + subroutine mp_set_font(this, x) + !! Sets the name of the font used for plot text. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + character(len = *), intent(in) :: x + !! The font name. + class(terminal), pointer :: term + term => this%get_terminal() + call term%set_font_name(x) + end subroutine + +! ------------------------------------------------------------------------------ + function mp_get_font_size(this) result(x) + !! Gets the size of the font used by the plot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + integer(int32) :: x + !! The font size. + class(terminal), pointer :: term + term => this%get_terminal() + x = term%get_font_size() + end function + +! -------------------- + subroutine mp_set_font_size(this, x) + !! Sets the size of the font used by the plot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + integer(int32), intent(in) :: x + !! The font size. + class(terminal), pointer :: term + term => this%get_terminal() + call term%set_font_size(x) + end subroutine + +! ------------------------------------------------------------------------------ + subroutine mp_set_window_size(this, width, height) + !! Sets the height and width of the plot window. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + integer(int32), intent(in) :: width + !! The plot window width. + integer(int32), intent(in) :: height + !! The plot window height. + + if (associated(this%m_terminal)) then + call this%m_terminal%set_window_width(width) + call this%m_terminal%set_window_height(height) + end if + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_left_margin(this) result(rst) + !! Gets the left margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_leftMargin + end function + +! -------------------- + subroutine mp_set_left_margin(this, x) + !! Sets the left margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_leftMargin = 0.0 + else if (x > 1.0) then + this%m_leftMargin = 1.0 + else + this%m_leftMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_right_margin(this) result(rst) + !! Gets the right margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_rightMargin + end function + +! -------------------- + subroutine mp_set_right_margin(this, x) + !! Sets the right margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_rightMargin = 0.0 + else if (x > 1.0) then + this%m_rightMargin = 1.0 + else + this%m_rightMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_top_margin(this) result(rst) + !! Gets the top margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_topMargin + end function + +! -------------------- + subroutine mp_set_top_margin(this, x) + !! Sets the top margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_topMargin = 0.0 + else if (x > 1.0) then + this%m_topMargin = 1.0 + else + this%m_topMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_bottom_margin(this) result(rst) + !! Gets the bottom margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_bottomMargin + end function + +! -------------------- + subroutine mp_set_bottom_margin(this, x) + !! Sets the bottom margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_bottomMargin = 0.0 + else if (x > 1.0) then + this%m_bottomMargin = 1.0 + else + this%m_bottomMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_horizontal_spacing(this) result(rst) + !! Gets the horizontal spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The spacing value. + rst = this%m_horizontalSpacing + end function + +! -------------------- + subroutine mp_set_horizontal_spacing(this, x) + !! Sets the horizontal spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The spacing value. This value will be clamped to zero if + !! a negative value is supplied. + if (x < 0.0) then + this%m_horizontalSpacing = 0.0 + else + this%m_horizontalSpacing = x + end if + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_vertical_spacing(this) result(rst) + !! Gets the vertical spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The spacing value. + rst = this%m_verticalSpacing + end function + +! -------------------- + subroutine mp_set_vertical_spacing(this, x) + !! Sets the vertical spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The spacing value. This value will be clamped to zero if + !! a negative value is supplied. + if (x < 0.0) then + this%m_verticalSpacing = 0.0 + else + this%m_verticalSpacing = x + end if + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_use_auto_generated_margins(this) result(rst) + !! Gets a value determining if the global margins should be + !! automatically calculated. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + logical :: rst + !! True if the margins should be automatically calculated; else, + !! false to use manually defined margins. + rst = this%m_useAutoMargins + end function + +! -------------------- + subroutine mp_set_use_auto_generated_margins(this, x) + !! Sets a value determining if the global margins should be + !! automatically calculated. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + logical, intent(in) :: x + !! True if the margins should be automatically calculated; else, + !! false to use manually defined margins. + this%m_useAutoMargins = x + end subroutine + +! ------------------------------------------------------------------------------ +end module @@ -697,7 +928,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_pdf_terminal.f90.html b/doc/sourcefile/fplot_pdf_terminal.f90.html index 6ad90356..790e9a2d 100644 --- a/doc/sourcefile/fplot_pdf_terminal.f90.html +++ b/doc/sourcefile/fplot_pdf_terminal.f90.html @@ -265,7 +265,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot.f90.html b/doc/sourcefile/fplot_plot.f90.html index 65223224..34596bb5 100644 --- a/doc/sourcefile/fplot_plot.f90.html +++ b/doc/sourcefile/fplot_plot.f90.html @@ -74,7 +74,7 @@

    fplot_plot.f90
  • 833 statements + title=" 8.5% of total for source files.">833 statements
  • @@ -1726,7 +1726,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_2d.f90.html b/doc/sourcefile/fplot_plot_2d.f90.html index 258b08f2..5159a07c 100644 --- a/doc/sourcefile/fplot_plot_2d.f90.html +++ b/doc/sourcefile/fplot_plot_2d.f90.html @@ -74,7 +74,7 @@

    fplot_plot_2d.f90
  • 408 statements + title=" 4.1% of total for source files.">408 statements
  • @@ -797,7 +797,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_3d.f90.html b/doc/sourcefile/fplot_plot_3d.f90.html index ff043877..8ac8166d 100644 --- a/doc/sourcefile/fplot_plot_3d.f90.html +++ b/doc/sourcefile/fplot_plot_3d.f90.html @@ -74,7 +74,7 @@

    fplot_plot_3d.f90
  • 545 statements + title=" 5.5% of total for source files.">545 statements
  • @@ -1093,7 +1093,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_axis.f90.html b/doc/sourcefile/fplot_plot_axis.f90.html index 87b7e2b5..bfe73922 100644 --- a/doc/sourcefile/fplot_plot_axis.f90.html +++ b/doc/sourcefile/fplot_plot_axis.f90.html @@ -74,7 +74,7 @@

    fplot_plot_axis.f90
  • 470 statements + title=" 5.1% of total for source files.">501 statements
  • @@ -232,777 +232,839 @@

    Source Code

    !! Use manual (user-defined) tic labels? type(name_value_pair), private, allocatable, dimension(:) :: m_ticLabels !! A list of user-defined tic labels. - contains - procedure, public :: get_title => pa_get_title - procedure, public :: set_title => pa_set_title - procedure, public :: is_title_defined => pa_has_title - procedure, public :: get_autoscale => pa_get_autoscale - procedure, public :: set_autoscale => pa_set_autoscale - procedure, public :: get_limits => pa_get_axis_limits - procedure, public :: set_limits => pa_set_axis_limits - procedure, public :: get_is_log_scaled => pa_get_log_scale - procedure, public :: set_is_log_scaled => pa_set_log_scale - procedure, public :: get_command_string => pa_get_cmd_string - procedure, public :: get_zero_axis => pa_get_zero_axis - procedure, public :: set_zero_axis => pa_set_zero_axis - procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width - procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width - procedure(pa_get_string_result), deferred, public :: get_id_string - procedure, public :: get_use_default_tic_label_format => & - pa_get_use_dft_tic_lbl_fmt - procedure, public :: set_use_default_tic_label_format => & - pa_set_use_dft_tic_lbl_fmt - procedure, public :: get_tic_label_format => pa_get_tic_label_fmt - procedure, public :: set_tic_label_format => pa_set_tic_label_fmt - procedure, public :: get_show_tic_labels => pa_get_show_tic_labels - procedure, public :: set_show_tic_labels => pa_set_show_tic_labels - procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset - procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset - procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset - procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset - procedure, public :: get_tic_label_angle => pa_get_tic_label_angle - procedure, public :: set_tic_label_angle => pa_set_tic_label_angle - procedure, public :: get_tic_label_rotation_origin => & - pa_get_tic_rotation_origin - procedure, public :: set_tic_label_rotation_origin => & - pa_set_tic_rotation_origin - procedure, public :: get_tic_label_alignment => & - pa_get_tic_label_alignment - procedure, public :: set_tic_label_alignment => & - pa_set_tic_label_alignment - procedure, public :: get_offset_tics => pa_get_offset_tics - procedure, public :: set_offset_tics => pa_set_offset_tics - procedure, public :: get_title_x_offset => pa_get_title_x_offset - procedure, public :: set_title_x_offset => pa_set_title_x_offset - procedure, public :: get_title_y_offset => pa_get_title_y_offset - procedure, public :: set_title_y_offset => pa_set_title_y_offset - procedure, public :: get_use_manual_tic_labels => & - pa_get_use_manual_tic_labels - procedure, public :: set_use_manual_tic_labels => & - pa_set_use_manual_tic_labels - procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels - procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels - end type - - interface - function pa_get_string_result(this) result(x) - !! Retrieves a string from a plot_axis. - import plot_axis - class(plot_axis), intent(in) :: this - !! The plot_axis object. - character(len = :), allocatable :: x - !! The string. - end function - end interface + real(real32), private :: m_titleAngle = 0.0 + !! The angle at which to rotate the axis title. + logical, private :: m_autoCalcTitleAngle = .true. + !! True if GNUPLOT should automatically rotate the title; else, + !! false if the m_titleAngle property should determine the angle. + contains + procedure, public :: get_title => pa_get_title + procedure, public :: set_title => pa_set_title + procedure, public :: is_title_defined => pa_has_title + procedure, public :: get_autoscale => pa_get_autoscale + procedure, public :: set_autoscale => pa_set_autoscale + procedure, public :: get_limits => pa_get_axis_limits + procedure, public :: set_limits => pa_set_axis_limits + procedure, public :: get_is_log_scaled => pa_get_log_scale + procedure, public :: set_is_log_scaled => pa_set_log_scale + procedure, public :: get_command_string => pa_get_cmd_string + procedure, public :: get_zero_axis => pa_get_zero_axis + procedure, public :: set_zero_axis => pa_set_zero_axis + procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width + procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width + procedure(pa_get_string_result), deferred, public :: get_id_string + procedure, public :: get_use_default_tic_label_format => & + pa_get_use_dft_tic_lbl_fmt + procedure, public :: set_use_default_tic_label_format => & + pa_set_use_dft_tic_lbl_fmt + procedure, public :: get_tic_label_format => pa_get_tic_label_fmt + procedure, public :: set_tic_label_format => pa_set_tic_label_fmt + procedure, public :: get_show_tic_labels => pa_get_show_tic_labels + procedure, public :: set_show_tic_labels => pa_set_show_tic_labels + procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset + procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset + procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset + procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset + procedure, public :: get_tic_label_angle => pa_get_tic_label_angle + procedure, public :: set_tic_label_angle => pa_set_tic_label_angle + procedure, public :: get_tic_label_rotation_origin => & + pa_get_tic_rotation_origin + procedure, public :: set_tic_label_rotation_origin => & + pa_set_tic_rotation_origin + procedure, public :: get_tic_label_alignment => & + pa_get_tic_label_alignment + procedure, public :: set_tic_label_alignment => & + pa_set_tic_label_alignment + procedure, public :: get_offset_tics => pa_get_offset_tics + procedure, public :: set_offset_tics => pa_set_offset_tics + procedure, public :: get_title_x_offset => pa_get_title_x_offset + procedure, public :: set_title_x_offset => pa_set_title_x_offset + procedure, public :: get_title_y_offset => pa_get_title_y_offset + procedure, public :: set_title_y_offset => pa_set_title_y_offset + procedure, public :: get_title_angle => pa_get_title_angle + procedure, public :: set_title_angle => pa_set_title_angle + procedure, public :: get_auto_calculate_title_angle => & + pa_get_auto_calc_title_angle + procedure, public :: set_auto_calculate_title_angle => & + pa_set_auto_calc_title_angle + procedure, public :: get_use_manual_tic_labels => & + pa_get_use_manual_tic_labels + procedure, public :: set_use_manual_tic_labels => & + pa_set_use_manual_tic_labels + procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels + procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels + end type - type, extends(plot_axis) :: x_axis - !! Defines an x-axis object. - character, private :: m_id = "x" - !! The ID character. - contains - procedure, public :: get_id_string => xa_get_id - end type - - type, extends(plot_axis) :: y_axis - !! Defines a y-axis object. - character, private :: m_id = "y" - !! The ID character. - contains - procedure, public :: get_id_string => ya_get_id - end type - - type, extends(plot_axis) :: y2_axis - !! Defines a secondary y-axis object. - character(len = 2), private :: m_id = "y2" - !! The ID character. - contains - procedure, public :: get_id_string => y2a_get_id - end type - - type, extends(plot_axis) :: z_axis - !! Defines a z-axis object. - character, private :: m_id = "z" - !! The ID character. - contains - procedure, public :: get_id_string => za_get_id - end type - -contains -! ------------------------------------------------------------------------------ - function pa_get_title(this) result(txt) - !! Gets the axis title. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - character(len = :), allocatable :: txt - !! The title. - integer(int32) :: n - n = len_trim(this%m_title) - allocate(character(len = n) :: txt) - txt = trim(this%m_title) - end function - -! -------------------- - subroutine pa_set_title(this, txt) - !! Sets the axis title. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - character(len = *), intent(in) :: txt - !! The title. - - ! Local Variables - integer(int32) :: n + interface + function pa_get_string_result(this) result(x) + !! Retrieves a string from a plot_axis. + import plot_axis + class(plot_axis), intent(in) :: this + !! The plot_axis object. + character(len = :), allocatable :: x + !! The string. + end function + end interface + + type, extends(plot_axis) :: x_axis + !! Defines an x-axis object. + character, private :: m_id = "x" + !! The ID character. + contains + procedure, public :: get_id_string => xa_get_id + end type + + type, extends(plot_axis) :: y_axis + !! Defines a y-axis object. + character, private :: m_id = "y" + !! The ID character. + contains + procedure, public :: get_id_string => ya_get_id + end type + + type, extends(plot_axis) :: y2_axis + !! Defines a secondary y-axis object. + character(len = 2), private :: m_id = "y2" + !! The ID character. + contains + procedure, public :: get_id_string => y2a_get_id + end type + + type, extends(plot_axis) :: z_axis + !! Defines a z-axis object. + character, private :: m_id = "z" + !! The ID character. + contains + procedure, public :: get_id_string => za_get_id + end type + +contains +! ------------------------------------------------------------------------------ + function pa_get_title(this) result(txt) + !! Gets the axis title. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + character(len = :), allocatable :: txt + !! The title. + integer(int32) :: n + n = len_trim(this%m_title) + allocate(character(len = n) :: txt) + txt = trim(this%m_title) + end function - ! Process - n = min(len_trim(txt), PLOTDATA_MAX_NAME_LENGTH) - this%m_title = "" - if (n /= 0) then - this%m_title(1:n) = txt(1:n) - this%m_hasTitle = .true. - else - this%m_hasTitle = .false. - end if - end subroutine +! -------------------- + subroutine pa_set_title(this, txt) + !! Sets the axis title. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + character(len = *), intent(in) :: txt + !! The title. + + ! Local Variables + integer(int32) :: n -! ------------------------------------------------------------------------------ - pure function pa_has_title(this) result(x) - !! Gets a value determining if a title has been defined for this axis. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - logical :: x - !! Returns true if a title has been defined; else, false. - x = this%m_hasTitle - end function - -! ------------------------------------------------------------------------------ - pure function pa_get_autoscale(this) result(x) - !! Gets a value determining if the axis should be automatically scaled - !! to fit the data. + ! Process + n = min(len_trim(txt), PLOTDATA_MAX_NAME_LENGTH) + this%m_title = "" + if (n /= 0) then + this%m_title(1:n) = txt(1:n) + this%m_hasTitle = .true. + else + this%m_hasTitle = .false. + end if + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_has_title(this) result(x) + !! Gets a value determining if a title has been defined for this axis. class(plot_axis), intent(in) :: this !! The plot_axis object. logical :: x - !! Returns true if the axis should be automatically scaled; else, - !! false. - x = this%m_autoscale - end function - -! -------------------- - subroutine pa_set_autoscale(this, x) - !! Sets a value determining if the axis should be automatically scaled - !! to fit the data. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - logical, intent(in) :: x - !! Set to true if the axis should be automatically scaled; else, - !! set to false. - this%m_autoscale = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_axis_limits(this) result(x) - !! Gets the axis display limits, assuming autoscaling is not - !! active for this axis. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - real(real64), dimension(2) :: x - !! A two-element array containing the limits as follows: - !! [lower, upper]. - x(1) = minval(this%m_limits) - x(2) = maxval(this%m_limits) - end function - -! -------------------- - subroutine pa_set_axis_limits(this, lower, upper) - !! Gets the axis display limits, assuming autoscaling is not - !! active for this axis. This routine also calls set_autoscale and - !! sets the property value to false. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - real(real64), intent(in) :: lower - !! The lower display limit. - real(real64), intent(in) :: upper - !! The upper display limit. - this%m_limits(1) = min(lower, upper) - this%m_limits(2) = max(lower, upper) - call this%set_autoscale(.false.) - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_log_scale(this) result(x) - !! Gets a logical value defining if the axis should be log scaled. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - logical :: x - !! Returns true if log scaling is applied to the axis; else, false. - x = this%m_logScale - end function - -! -------------------- - subroutine pa_set_log_scale(this, x) - !! Sets a logical value defining if the axis should be log scaled. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - logical, intent(in) :: x - !! Set to true if log scaling is applied to the axis; else, false. - this%m_logScale = x - end subroutine - -! ------------------------------------------------------------------------------ - function pa_get_cmd_string(this) result(txt) - !! Returns the appropriate GNUPLOT command string to define the - !! plot_axis properties. - class(plot_axis), intent(in) :: this + !! Returns true if a title has been defined; else, false. + x = this%m_hasTitle + end function + +! ------------------------------------------------------------------------------ + pure function pa_get_autoscale(this) result(x) + !! Gets a value determining if the axis should be automatically scaled + !! to fit the data. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: x + !! Returns true if the axis should be automatically scaled; else, + !! false. + x = this%m_autoscale + end function + +! -------------------- + subroutine pa_set_autoscale(this, x) + !! Sets a value determining if the axis should be automatically scaled + !! to fit the data. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true if the axis should be automatically scaled; else, + !! set to false. + this%m_autoscale = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_axis_limits(this) result(x) + !! Gets the axis display limits, assuming autoscaling is not + !! active for this axis. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + real(real64), dimension(2) :: x + !! A two-element array containing the limits as follows: + !! [lower, upper]. + x(1) = minval(this%m_limits) + x(2) = maxval(this%m_limits) + end function + +! -------------------- + subroutine pa_set_axis_limits(this, lower, upper) + !! Gets the axis display limits, assuming autoscaling is not + !! active for this axis. This routine also calls set_autoscale and + !! sets the property value to false. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + real(real64), intent(in) :: lower + !! The lower display limit. + real(real64), intent(in) :: upper + !! The upper display limit. + this%m_limits(1) = min(lower, upper) + this%m_limits(2) = max(lower, upper) + call this%set_autoscale(.false.) + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_log_scale(this) result(x) + !! Gets a logical value defining if the axis should be log scaled. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: x + !! Returns true if log scaling is applied to the axis; else, false. + x = this%m_logScale + end function + +! -------------------- + subroutine pa_set_log_scale(this, x) + !! Sets a logical value defining if the axis should be log scaled. + class(plot_axis), intent(inout) :: this !! The plot_axis object. - character(len = :), allocatable :: txt - !! The GNUPLOT command string. - - ! Local Variables - type(string_builder) :: str - real(real32) :: angle - character(len = :), allocatable :: axis, fmt - real(real64) :: lim(2) - integer(int32) :: i - type(name_value_pair), allocatable, dimension(:) :: ticLabels - - ! Process - axis = this%get_id_string() - fmt = this%get_tic_label_format() - lim = this%get_limits() - call str%initialize() - - ! Formatting - if (.not.this%get_use_default_tic_label_format()) then - call str%append("set format ") - call str%append(axis) - call str%append('"') - call str%append(fmt) - call str%append('"') - call str%append(new_line('a')) - end if - - ! Show Tic Labels? - if (this%get_show_tic_labels()) then - call str%append("set ") - else - call str%append("unset ") - end if - call str%append(axis) - call str%append("tics") - call str%append(new_line('a')) - - ! Tic Label Offsets - if (this%get_show_tic_labels() .and. this%get_offset_tics()) then - call str%append("set ") - call str%append(axis) - call str%append("tics ") - call str%append(this%get_tic_label_alignment()) - call str%append(" offset ") - call str%append(to_string(this%get_tic_label_x_offset())) - call str%append(",") - call str%append(to_string(this%get_tic_label_y_offset())) - call str%append(new_line('a')) - end if - - ! Tic Label Rotation - angle = this%get_tic_label_angle() - if (this%get_show_tic_labels() .and. angle /= 0.0) then - call str%append("set ") - call str%append(axis) - call str%append("tics rotate by ") - call str%append(to_string(angle)) - call str%append(" ") - call str%append(this%get_tic_label_rotation_origin()) - call str%append(new_line('a')) - end if - - ! Axis Limits - if (this%get_autoscale()) then + logical, intent(in) :: x + !! Set to true if log scaling is applied to the axis; else, false. + this%m_logScale = x + end subroutine + +! ------------------------------------------------------------------------------ + function pa_get_cmd_string(this) result(txt) + !! Returns the appropriate GNUPLOT command string to define the + !! plot_axis properties. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + character(len = :), allocatable :: txt + !! The GNUPLOT command string. + + ! Local Variables + type(string_builder) :: str + real(real32) :: angle + character(len = :), allocatable :: axis, fmt + real(real64) :: lim(2) + integer(int32) :: i + type(name_value_pair), allocatable, dimension(:) :: ticLabels + + ! Process + axis = this%get_id_string() + fmt = this%get_tic_label_format() + lim = this%get_limits() + call str%initialize() + + ! Formatting + if (.not.this%get_use_default_tic_label_format()) then + call str%append("set format ") + call str%append(axis) + call str%append('"') + call str%append(fmt) + call str%append('"') + call str%append(new_line('a')) + end if + + ! Show Tic Labels? + if (this%get_show_tic_labels()) then + call str%append("set ") + else + call str%append("unset ") + end if + call str%append(axis) + call str%append("tics") + call str%append(new_line('a')) + + ! Tic Label Offsets + if (this%get_show_tic_labels() .and. this%get_offset_tics()) then + call str%append("set ") + call str%append(axis) + call str%append("tics ") + call str%append(this%get_tic_label_alignment()) + call str%append(" offset ") + call str%append(to_string(this%get_tic_label_x_offset())) + call str%append(",") + call str%append(to_string(this%get_tic_label_y_offset())) + call str%append(new_line('a')) + end if + + ! Tic Label Rotation + angle = this%get_tic_label_angle() + if (this%get_show_tic_labels() .and. angle /= 0.0) then call str%append("set ") call str%append(axis) - call str%append("range [*:*]") - else - call str%append("set ") - call str%append(axis) - call str%append("range [") - call str%append(to_string(lim(1))) - call str%append(":") - call str%append(to_string(lim(2))) - call str%append("]") - end if - - ! Titles - call str%append(new_line('a')) - if (this%is_title_defined()) then - ! Title - call str%append("set ") - call str%append(axis) - call str%append("label ") - call str%append('"') - call str%append(this%get_title()) - call str%append('"') + call str%append("tics rotate by ") + call str%append(to_string(angle)) + call str%append(" ") + call str%append(this%get_tic_label_rotation_origin()) + call str%append(new_line('a')) + end if + + ! Axis Limits + if (this%get_autoscale()) then + call str%append("set ") + call str%append(axis) + call str%append("range [*:*]") + else + call str%append("set ") + call str%append(axis) + call str%append("range [") + call str%append(to_string(lim(1))) + call str%append(":") + call str%append(to_string(lim(2))) + call str%append("]") + end if - ! Offsets - if (this%get_title_x_offset() /= 0 .or. & - this%get_title_y_offset() /= 0) & - then - call str%append(" offset ") - call str%append(to_string(this%get_title_x_offset())) - call str%append(",") - call str%append(to_string(this%get_title_y_offset())) - end if - else - call str%append("set ") - call str%append(axis) - call str%append("label ") - call str%append('""') - end if - call str%append(new_line('a')) + ! Titles + call str%append(new_line('a')) + if (this%is_title_defined()) then + ! Title + call str%append("set ") + call str%append(axis) + call str%append("label ") + call str%append('"') + call str%append(this%get_title()) + call str%append('"') + + ! Rotation + if (.not.this%get_auto_calculate_title_angle()) then + call str%append(" rotate by ") + call str%append(to_string(this%get_title_angle())) + end if - ! Scaling - call str%append(new_line('a')) - if (this%get_is_log_scaled()) then - call str%append("set log ") - call str%append(axis) - else - call str%append("unset log ") - call str%append(axis) - end if - - ! Zero Axis - if (this%get_zero_axis()) then - call str%append(new_line('a')) - call str%append("set ") - call str%append(this%get_id_string()) - call str%append("zeroaxis linestyle -1 linewidth ") - call str%append(to_string(this%get_zero_axis_line_width())) - end if - - ! Use manual labels - ticLabels = this%get_manual_tic_labels() - if (this%get_use_manual_tic_labels() .and. size(ticLabels) > 0) then - call str%append(new_line('a')) - call str%append("set ") - call str%append(this%get_id_string() // "tics(") - do i = 1, size(ticLabels) - call str%append('"') - call str%append(ticLabels(i)%name) - call str%append('" ') - call str%append(to_string(ticLabels(i)%value)) - if (i /= size(ticLabels)) call str%append(", ") - end do - call str%append(")") - end if - - ! Output - txt = char(str%to_string()) - end function - -! ------------------------------------------------------------------------------ - pure function pa_get_zero_axis(this) result(x) - !! Gets a value determining if the axis should be drawn through - !! zero of opposing axes. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - logical :: x - !! Returns true to draw as a zero axis; else, set to false. - x = this%m_zeroAxis - end function - -! -------------------- - subroutine pa_set_zero_axis(this, x) - !! Sets a value determining if the axis should be drawn through - !! zero of opposing axes. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - logical, intent(in) :: x - !! Set to true to draw as a zero axis; else, set to false. - this%m_zeroAxis = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_zero_axis_width(this) result(x) - !! Gets the width of the line used to represent the zero axis line, if - !! active. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - real(real32) :: x - !! The width of the line, in pixels. - x = this%m_axisWidth - end function - -! -------------------- - subroutine pa_set_zero_axis_width(this, x) - !! Sets the width of the line used to represent the zero axis line, if - !! active. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - real(real32), intent(in) :: x - !! The width of the line, in pixels. - this%m_axisWidth = x - end subroutine - -! ADDED March 29, 2023 - JAC -! ------------------------------------------------------------------------------ - pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) - !! Gets a value determining if the default tic label format will be - !! used. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - logical :: rst - !! Returns true if the default tic label format will be used; else, - !! false. - rst = this%m_defaultTicLabels - end function - -! -------------------- - subroutine pa_set_use_dft_tic_lbl_fmt(this, x) - !! Sets a value determining if the default tic label format will be - !! used. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - logical, intent(in) :: x - !! Set to true if the default tic label format will be used; else, - !! false. - this%m_defaultTicLabels = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_tic_label_fmt(this) result(rst) - !! Gets the tic label format. The format string can be any format - !! string accepted by the C command 'printf.' - class(plot_axis), intent(in) :: this - !! The plot_axis object. - character(len = :), allocatable :: rst - !! The tic label format string. - rst = trim(this%m_ticLabelFmt) - end function - -! -------------------- - subroutine pa_set_tic_label_fmt(this, x) - !! Sets the tic label format. The format string can be any format - !! string accepted by the C command 'printf.' - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - character(len = *), intent(in) :: x - !! The tic label format string. - this%m_ticLabelFmt = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_show_tic_labels(this) result(x) - !! Gets a value determining if tic labels should be shown. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - logical :: x - !! Returns true to show tic labels; else, set to false. - x = this%m_showTicLabels - end function - -! -------------------- - subroutine pa_set_show_tic_labels(this, x) - !! Sets a value determining if tic labels should be shown. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - logical, intent(in) :: x - !! Set to true to show tic labels; else, set to false. - this%m_showTicLabels = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_tic_x_offset(this) result(x) - !! Gets the tic label x-offset, in characters. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - integer(int32) :: x - !! The tic label x-offset, in characters. - x = this%m_ticXOffset - end function - -! -------------------- - subroutine pa_set_tic_x_offset(this, x) - !! Sets the tic label x-offset, in characters. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - integer(int32), intent(in) :: x - !! The tic label x-offset, in characters. - this%m_ticXOffset = x - call this%set_offset_tics(.true.) - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_tic_y_offset(this) result(x) - !! Gets the tic label y-offset, in characters. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - integer(int32) :: x - !! The tic label y-offset, in characters. - x = this%m_ticYOffset - end function - -! -------------------- - subroutine pa_set_tic_y_offset(this, x) - !! Sets the tic label y-offset, in characters. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - integer(int32), intent(in) :: x - !! The tic label y-offset, in characters. - this%m_ticYOffset = x - call this%set_offset_tics(.true.) - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_tic_label_angle(this) result(x) - !! Gets the tic label angle, in degrees. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - real(real32) :: x - !! The tic label angle, in degrees. - x = this%m_ticLabelAngle - end function - -! -------------------- - subroutine pa_set_tic_label_angle(this, x) - !! Sets the tic label angle, in degrees. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - real(real32), intent(in) :: x - !! The tic label angle, in degrees. - this%m_ticLabelAngle = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_tic_rotation_origin(this) result(x) - !! Gets the tic label rotation origin. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - character(len = :), allocatable :: x - !! The tic label rotation origin. The tic label rotation origin - !! must be one of the following: - !! - !! - GNUPLOT_ROTATION_ORIGIN_RIGHT - !! - !! - GNUPLOT_ROTATION_ORIGIN_LEFT - !! - !! - GNUPLOT_ROTATION_ORIGIN_CENTER - integer(int32) :: n - n = len_trim(this%m_ticRotationOrigin) - allocate(character(len = n) :: x) - x = trim(this%m_ticRotationOrigin) - end function - -! -------------------- - subroutine pa_set_tic_rotation_origin(this, x) - !! Sets the tic label rotation origin. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - character(len = *), intent(in) :: x - !! The tic label rotation origin. The tic label rotation origin - !! must be one of the following: - !! - !! - GNUPLOT_ROTATION_ORIGIN_RIGHT - !! - !! - GNUPLOT_ROTATION_ORIGIN_LEFT - !! - !! - GNUPLOT_ROTATION_ORIGIN_CENTER - this%m_ticRotationOrigin = x - end subroutine + ! Offsets + if (this%get_title_x_offset() /= 0 .or. & + this%get_title_y_offset() /= 0) & + then + call str%append(" offset ") + call str%append(to_string(this%get_title_x_offset())) + call str%append(",") + call str%append(to_string(this%get_title_y_offset())) + end if + else + call str%append("set ") + call str%append(axis) + call str%append("label ") + call str%append('""') + end if + call str%append(new_line('a')) + + ! Scaling + call str%append(new_line('a')) + if (this%get_is_log_scaled()) then + call str%append("set log ") + call str%append(axis) + else + call str%append("unset log ") + call str%append(axis) + end if + + ! Zero Axis + if (this%get_zero_axis()) then + call str%append(new_line('a')) + call str%append("set ") + call str%append(this%get_id_string()) + call str%append("zeroaxis linestyle -1 linewidth ") + call str%append(to_string(this%get_zero_axis_line_width())) + end if + + ! Use manual labels + ticLabels = this%get_manual_tic_labels() + if (this%get_use_manual_tic_labels() .and. size(ticLabels) > 0) then + call str%append(new_line('a')) + call str%append("set ") + call str%append(this%get_id_string() // "tics(") + do i = 1, size(ticLabels) + call str%append('"') + call str%append(ticLabels(i)%name) + call str%append('" ') + call str%append(to_string(ticLabels(i)%value)) + if (i /= size(ticLabels)) call str%append(", ") + end do + call str%append(")") + end if + + ! Output + txt = char(str%to_string()) + end function + +! ------------------------------------------------------------------------------ + pure function pa_get_zero_axis(this) result(x) + !! Gets a value determining if the axis should be drawn through + !! zero of opposing axes. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: x + !! Returns true to draw as a zero axis; else, set to false. + x = this%m_zeroAxis + end function + +! -------------------- + subroutine pa_set_zero_axis(this, x) + !! Sets a value determining if the axis should be drawn through + !! zero of opposing axes. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true to draw as a zero axis; else, set to false. + this%m_zeroAxis = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_zero_axis_width(this) result(x) + !! Gets the width of the line used to represent the zero axis line, if + !! active. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + real(real32) :: x + !! The width of the line, in pixels. + x = this%m_axisWidth + end function + +! -------------------- + subroutine pa_set_zero_axis_width(this, x) + !! Sets the width of the line used to represent the zero axis line, if + !! active. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + real(real32), intent(in) :: x + !! The width of the line, in pixels. + this%m_axisWidth = x + end subroutine + +! ADDED March 29, 2023 - JAC +! ------------------------------------------------------------------------------ + pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) + !! Gets a value determining if the default tic label format will be + !! used. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: rst + !! Returns true if the default tic label format will be used; else, + !! false. + rst = this%m_defaultTicLabels + end function + +! -------------------- + subroutine pa_set_use_dft_tic_lbl_fmt(this, x) + !! Sets a value determining if the default tic label format will be + !! used. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true if the default tic label format will be used; else, + !! false. + this%m_defaultTicLabels = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_tic_label_fmt(this) result(rst) + !! Gets the tic label format. The format string can be any format + !! string accepted by the C command 'printf.' + class(plot_axis), intent(in) :: this + !! The plot_axis object. + character(len = :), allocatable :: rst + !! The tic label format string. + rst = trim(this%m_ticLabelFmt) + end function + +! -------------------- + subroutine pa_set_tic_label_fmt(this, x) + !! Sets the tic label format. The format string can be any format + !! string accepted by the C command 'printf.' + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + character(len = *), intent(in) :: x + !! The tic label format string. + this%m_ticLabelFmt = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_show_tic_labels(this) result(x) + !! Gets a value determining if tic labels should be shown. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: x + !! Returns true to show tic labels; else, set to false. + x = this%m_showTicLabels + end function + +! -------------------- + subroutine pa_set_show_tic_labels(this, x) + !! Sets a value determining if tic labels should be shown. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true to show tic labels; else, set to false. + this%m_showTicLabels = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_tic_x_offset(this) result(x) + !! Gets the tic label x-offset, in characters. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + integer(int32) :: x + !! The tic label x-offset, in characters. + x = this%m_ticXOffset + end function + +! -------------------- + subroutine pa_set_tic_x_offset(this, x) + !! Sets the tic label x-offset, in characters. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + integer(int32), intent(in) :: x + !! The tic label x-offset, in characters. + this%m_ticXOffset = x + call this%set_offset_tics(.true.) + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_tic_y_offset(this) result(x) + !! Gets the tic label y-offset, in characters. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + integer(int32) :: x + !! The tic label y-offset, in characters. + x = this%m_ticYOffset + end function + +! -------------------- + subroutine pa_set_tic_y_offset(this, x) + !! Sets the tic label y-offset, in characters. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + integer(int32), intent(in) :: x + !! The tic label y-offset, in characters. + this%m_ticYOffset = x + call this%set_offset_tics(.true.) + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_tic_label_angle(this) result(x) + !! Gets the tic label angle, in degrees. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + real(real32) :: x + !! The tic label angle, in degrees. + x = this%m_ticLabelAngle + end function + +! -------------------- + subroutine pa_set_tic_label_angle(this, x) + !! Sets the tic label angle, in degrees. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + real(real32), intent(in) :: x + !! The tic label angle, in degrees. + this%m_ticLabelAngle = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_tic_rotation_origin(this) result(x) + !! Gets the tic label rotation origin. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + character(len = :), allocatable :: x + !! The tic label rotation origin. The tic label rotation origin + !! must be one of the following: + !! + !! - GNUPLOT_ROTATION_ORIGIN_RIGHT + !! + !! - GNUPLOT_ROTATION_ORIGIN_LEFT + !! + !! - GNUPLOT_ROTATION_ORIGIN_CENTER + integer(int32) :: n + n = len_trim(this%m_ticRotationOrigin) + allocate(character(len = n) :: x) + x = trim(this%m_ticRotationOrigin) + end function -! ------------------------------------------------------------------------------ - pure function pa_get_tic_label_alignment(this) result(x) - !! Gets the tic label alignment. - class(plot_axis), intent(in) :: this +! -------------------- + subroutine pa_set_tic_rotation_origin(this, x) + !! Sets the tic label rotation origin. + class(plot_axis), intent(inout) :: this !! The plot_axis object. - character(len = :), allocatable :: x - !! The tic label alignment. The tic label alignment must be one of - !! the following: + character(len = *), intent(in) :: x + !! The tic label rotation origin. The tic label rotation origin + !! must be one of the following: !! - !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT + !! - GNUPLOT_ROTATION_ORIGIN_RIGHT !! - !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER + !! - GNUPLOT_ROTATION_ORIGIN_LEFT !! - !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT - integer(int32) :: n - n = len_trim(this%m_ticLabelAlignment) - allocate(character(len = n) :: x) - x = trim(this%m_ticLabelAlignment) - end function - -! -------------------- - subroutine pa_set_tic_label_alignment(this, x) - !! Sets the tic label alignment. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - character(len = *), intent(in) :: x - !! The tic label alignment. The tic label alignment must be one of - !! the following: - !! - !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT - !! - !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER - !! - !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT - this%m_ticLabelAlignment = x - end subroutine + !! - GNUPLOT_ROTATION_ORIGIN_CENTER + this%m_ticRotationOrigin = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_tic_label_alignment(this) result(x) + !! Gets the tic label alignment. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + character(len = :), allocatable :: x + !! The tic label alignment. The tic label alignment must be one of + !! the following: + !! + !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT + !! + !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER + !! + !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT + integer(int32) :: n + n = len_trim(this%m_ticLabelAlignment) + allocate(character(len = n) :: x) + x = trim(this%m_ticLabelAlignment) + end function -! ------------------------------------------------------------------------------ - pure function pa_get_offset_tics(this) result(x) - !! Gets a value determining if the tics should be offset. - class(plot_axis), intent(in) :: this +! -------------------- + subroutine pa_set_tic_label_alignment(this, x) + !! Sets the tic label alignment. + class(plot_axis), intent(inout) :: this !! The plot_axis object. - logical :: x - !! Returns true to offset the tics; else, set to false. - x = this%m_offsetTics - end function - -! -------------------- - subroutine pa_set_offset_tics(this, x) - !! Sets a value determining if the tics should be offset. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - logical, intent(in) :: x - !! Set to true to offset the tics; else, set to false. - this%m_offsetTics = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_title_x_offset(this) result(x) - !! Gets the axis title x-offset, in characters. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - integer(int32) :: x - !! The axis title x-offset, in characters. - x = this%m_titleXOffset - end function - -! -------------------- - subroutine pa_set_title_x_offset(this, x) - !! Sets the axis title x-offset, in characters. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - integer(int32), intent(in) :: x - !! The axis title x-offset, in characters. - this%m_titleXOffset = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_title_y_offset(this) result(x) - !! Gets the axis title y-offset, in characters. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - integer(int32) :: x - !! The axis title y-offset, in characters. - x = this%m_titleYOffset - end function - -! -------------------- - subroutine pa_set_title_y_offset(this, x) - !! Sets the axis title y-offset, in characters. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - integer(int32), intent(in) :: x - !! The axis title y-offset, in characters. - this%m_titleYOffset = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_use_manual_tic_labels(this) result(rst) - !! Gets a value determining if manual tic labels should be used. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - logical :: rst - !! True if manual tic labels should be used; else, false. - rst = this%m_useManualTicLabels - end function - -! -------------------- - subroutine pa_set_use_manual_tic_labels(this, x) - !! Sets a value determining if manual tic labels should be used. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - logical, intent(in) :: x - !! Set to true if manual tic labels should be used; else, false. - this%m_useManualTicLabels = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function pa_get_manual_tic_labels(this) result(rst) - !! Gets a list of manual tic labels. - class(plot_axis), intent(in) :: this - !! The plot_axis object. - type(name_value_pair), allocatable, dimension(:) :: rst - !! A list of name-value pairs where the name defines the label - !! shown with the corresponding axis value. - if (allocated(this%m_ticLabels)) then - rst = this%m_ticLabels - else - allocate(rst(0)) - end if - end function - -! -------------------- - subroutine pa_set_manual_tic_labels(this, x) - !! Sets a list of manual tic labels. This routine also sets - !! set_use_manual_tic_labels to true. - class(plot_axis), intent(inout) :: this - !! The plot_axis object. - type(name_value_pair), intent(in), dimension(:) :: x - !! The list of tic values with the name component representing the - !! displayed label text and the value is the associated axis value. - - if (allocated(this%m_ticLabels)) deallocate(this%m_ticLabels) - allocate(this%m_ticLabels(size(x)), source = x) - call this%set_use_manual_tic_labels(.true.) - end subroutine + character(len = *), intent(in) :: x + !! The tic label alignment. The tic label alignment must be one of + !! the following: + !! + !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT + !! + !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER + !! + !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT + this%m_ticLabelAlignment = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_offset_tics(this) result(x) + !! Gets a value determining if the tics should be offset. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: x + !! Returns true to offset the tics; else, set to false. + x = this%m_offsetTics + end function + +! -------------------- + subroutine pa_set_offset_tics(this, x) + !! Sets a value determining if the tics should be offset. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true to offset the tics; else, set to false. + this%m_offsetTics = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_title_x_offset(this) result(x) + !! Gets the axis title x-offset, in characters. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + integer(int32) :: x + !! The axis title x-offset, in characters. + x = this%m_titleXOffset + end function + +! -------------------- + subroutine pa_set_title_x_offset(this, x) + !! Sets the axis title x-offset, in characters. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + integer(int32), intent(in) :: x + !! The axis title x-offset, in characters. + this%m_titleXOffset = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_title_y_offset(this) result(x) + !! Gets the axis title y-offset, in characters. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + integer(int32) :: x + !! The axis title y-offset, in characters. + x = this%m_titleYOffset + end function + +! -------------------- + subroutine pa_set_title_y_offset(this, x) + !! Sets the axis title y-offset, in characters. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + integer(int32), intent(in) :: x + !! The axis title y-offset, in characters. + this%m_titleYOffset = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_title_angle(this) result(x) + !! Gets the axis title angle, in degrees. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + real(real32) :: x + !! The axis title angle, in degrees. + x = this%m_titleAngle + end function + +! -------------------- + subroutine pa_set_title_angle(this, x) + !! Sets the axis title angle, in degrees. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + real(real32), intent(in) :: x + !! The axis title angle, in degrees. + this%m_titleAngle = x + this%m_autoCalcTitleAngle = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_auto_calc_title_angle(this) result(x) + !! Gets whether GNUPLOT should automatically calculate the axis + !! title angle. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: x + !! True if GNUPLOT should automatically calculate the title + !! angle; else, false. + x = this%m_autoCalcTitleAngle + end function -! ****************************************************************************** -! X_AXIS MEMBERS -! ------------------------------------------------------------------------------ - function xa_get_id(this) result(x) - !! Gets the axis identification string. - class(x_axis), intent(in) :: this - !! The x_axis object. - character(len = :), allocatable :: x - !! The identification string. - x = this%m_id - end function +! -------------------- + subroutine pa_set_auto_calc_title_angle(this, x) + !! Sets whether GNUPLOT should automatically calculate the axis + !! title angle. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true to automatically calculate the title angle; + !! else, set to false. + this%m_autoCalcTitleAngle = x + end subroutine -! ****************************************************************************** -! Y_AXIS MEMBERS -! ------------------------------------------------------------------------------ - function ya_get_id(this) result(x) - !! Gets the axis identification string. - class(y_axis), intent(in) :: this - !! The y_axis object. - character(len = :), allocatable :: x - !! The identification string. - x = this%m_id - end function - -! ****************************************************************************** -! Y2_AXIS MEMBERS -! ------------------------------------------------------------------------------ - function y2a_get_id(this) result(x) - !! Gets the axis identification string. - class(y2_axis), intent(in) :: this - !! The y2_axis object. - character(len = :), allocatable :: x - !! The identification string. - x = this%m_id - end function - -! ****************************************************************************** -! Z_AXIS MEMBERS -! ------------------------------------------------------------------------------ - function za_get_id(this) result(x) - !! Gets the axis identification string. - class(z_axis), intent(in) :: this - !! The z_axis object. - character(len = :), allocatable :: x - !! The identification string. - x = this%m_id - end function - -! ------------------------------------------------------------------------------ -end module +! ------------------------------------------------------------------------------ + pure function pa_get_use_manual_tic_labels(this) result(rst) + !! Gets a value determining if manual tic labels should be used. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: rst + !! True if manual tic labels should be used; else, false. + rst = this%m_useManualTicLabels + end function + +! -------------------- + subroutine pa_set_use_manual_tic_labels(this, x) + !! Sets a value determining if manual tic labels should be used. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true if manual tic labels should be used; else, false. + this%m_useManualTicLabels = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_manual_tic_labels(this) result(rst) + !! Gets a list of manual tic labels. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + type(name_value_pair), allocatable, dimension(:) :: rst + !! A list of name-value pairs where the name defines the label + !! shown with the corresponding axis value. + if (allocated(this%m_ticLabels)) then + rst = this%m_ticLabels + else + allocate(rst(0)) + end if + end function + +! -------------------- + subroutine pa_set_manual_tic_labels(this, x) + !! Sets a list of manual tic labels. This routine also sets + !! set_use_manual_tic_labels to true. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + type(name_value_pair), intent(in), dimension(:) :: x + !! The list of tic values with the name component representing the + !! displayed label text and the value is the associated axis value. + + if (allocated(this%m_ticLabels)) deallocate(this%m_ticLabels) + allocate(this%m_ticLabels(size(x)), source = x) + call this%set_use_manual_tic_labels(.true.) + end subroutine + +! ****************************************************************************** +! X_AXIS MEMBERS +! ------------------------------------------------------------------------------ + function xa_get_id(this) result(x) + !! Gets the axis identification string. + class(x_axis), intent(in) :: this + !! The x_axis object. + character(len = :), allocatable :: x + !! The identification string. + x = this%m_id + end function + +! ****************************************************************************** +! Y_AXIS MEMBERS +! ------------------------------------------------------------------------------ + function ya_get_id(this) result(x) + !! Gets the axis identification string. + class(y_axis), intent(in) :: this + !! The y_axis object. + character(len = :), allocatable :: x + !! The identification string. + x = this%m_id + end function + +! ****************************************************************************** +! Y2_AXIS MEMBERS +! ------------------------------------------------------------------------------ + function y2a_get_id(this) result(x) + !! Gets the axis identification string. + class(y2_axis), intent(in) :: this + !! The y2_axis object. + character(len = :), allocatable :: x + !! The identification string. + x = this%m_id + end function + +! ****************************************************************************** +! Z_AXIS MEMBERS +! ------------------------------------------------------------------------------ + function za_get_id(this) result(x) + !! Gets the axis identification string. + class(z_axis), intent(in) :: this + !! The z_axis object. + character(len = :), allocatable :: x + !! The identification string. + x = this%m_id + end function + +! ------------------------------------------------------------------------------ +end module @@ -1021,7 +1083,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_bar.f90.html b/doc/sourcefile/fplot_plot_bar.f90.html index bce45aeb..f612734e 100644 --- a/doc/sourcefile/fplot_plot_bar.f90.html +++ b/doc/sourcefile/fplot_plot_bar.f90.html @@ -74,7 +74,7 @@

    fplot_plot_bar.f90
  • 80 statements + title=" 0.8% of total for source files.">80 statements
  • @@ -312,7 +312,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data.f90.html b/doc/sourcefile/fplot_plot_data.f90.html index 9625ba21..c5fd6682 100644 --- a/doc/sourcefile/fplot_plot_data.f90.html +++ b/doc/sourcefile/fplot_plot_data.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data.f90
  • 459 statements + title=" 4.7% of total for source files.">459 statements
  • @@ -1037,7 +1037,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data_2d.f90.html b/doc/sourcefile/fplot_plot_data_2d.f90.html index 6024aa8f..6f7c35c3 100644 --- a/doc/sourcefile/fplot_plot_data_2d.f90.html +++ b/doc/sourcefile/fplot_plot_data_2d.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data_2d.f90
  • 315 statements + title=" 3.2% of total for source files.">315 statements
  • @@ -640,7 +640,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data_3d.f90.html b/doc/sourcefile/fplot_plot_data_3d.f90.html index 12bf5a64..8b98f6be 100644 --- a/doc/sourcefile/fplot_plot_data_3d.f90.html +++ b/doc/sourcefile/fplot_plot_data_3d.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data_3d.f90
  • 316 statements + title=" 3.2% of total for source files.">316 statements
  • @@ -617,7 +617,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data_bar.f90.html b/doc/sourcefile/fplot_plot_data_bar.f90.html index 81cb9c7c..083768b7 100644 --- a/doc/sourcefile/fplot_plot_data_bar.f90.html +++ b/doc/sourcefile/fplot_plot_data_bar.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data_bar.f90
  • 570 statements + title=" 5.8% of total for source files.">570 statements
  • @@ -1090,7 +1090,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data_box_whisker.f90.html b/doc/sourcefile/fplot_plot_data_box_whisker.f90.html index 5cf5f8fd..d8b27ac0 100644 --- a/doc/sourcefile/fplot_plot_data_box_whisker.f90.html +++ b/doc/sourcefile/fplot_plot_data_box_whisker.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data_box_whisker.f90
  • 282 statements + title=" 2.9% of total for source files.">282 statements
  • @@ -642,7 +642,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data_error_bars.f90.html b/doc/sourcefile/fplot_plot_data_error_bars.f90.html index 75054f33..63e9ee18 100644 --- a/doc/sourcefile/fplot_plot_data_error_bars.f90.html +++ b/doc/sourcefile/fplot_plot_data_error_bars.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data_error_bars.f90
  • 483 statements + title=" 4.9% of total for source files.">483 statements
  • @@ -923,7 +923,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data_function.f90.html b/doc/sourcefile/fplot_plot_data_function.f90.html index c9a66d79..d809dd56 100644 --- a/doc/sourcefile/fplot_plot_data_function.f90.html +++ b/doc/sourcefile/fplot_plot_data_function.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data_function.f90
  • 143 statements + title=" 1.5% of total for source files.">143 statements
  • @@ -424,7 +424,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data_histogram.f90.html b/doc/sourcefile/fplot_plot_data_histogram.f90.html index 73f68791..9aa960ba 100644 --- a/doc/sourcefile/fplot_plot_data_histogram.f90.html +++ b/doc/sourcefile/fplot_plot_data_histogram.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data_histogram.f90
  • 188 statements + title=" 1.9% of total for source files.">188 statements
  • @@ -492,7 +492,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_data_tri_2d.f90.html b/doc/sourcefile/fplot_plot_data_tri_2d.f90.html index 8b34bc8a..56000e40 100644 --- a/doc/sourcefile/fplot_plot_data_tri_2d.f90.html +++ b/doc/sourcefile/fplot_plot_data_tri_2d.f90.html @@ -74,7 +74,7 @@

    fplot_plot_data_tri_2d.f90
  • 167 statements + title=" 1.7% of total for source files.">167 statements
  • @@ -463,7 +463,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_object.f90.html b/doc/sourcefile/fplot_plot_object.f90.html index d31997bb..608de41f 100644 --- a/doc/sourcefile/fplot_plot_object.f90.html +++ b/doc/sourcefile/fplot_plot_object.f90.html @@ -190,7 +190,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_plot_polar.f90.html b/doc/sourcefile/fplot_plot_polar.f90.html index c41b4a8e..c126ed06 100644 --- a/doc/sourcefile/fplot_plot_polar.f90.html +++ b/doc/sourcefile/fplot_plot_polar.f90.html @@ -74,7 +74,7 @@

    fplot_plot_polar.f90
  • 240 statements + title=" 2.4% of total for source files.">240 statements
  • @@ -600,7 +600,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_png_terminal.f90.html b/doc/sourcefile/fplot_png_terminal.f90.html index 0aeaef5d..96b349a3 100644 --- a/doc/sourcefile/fplot_png_terminal.f90.html +++ b/doc/sourcefile/fplot_png_terminal.f90.html @@ -74,7 +74,7 @@

    fplot_png_terminal.f90
  • 23 statements + title=" 0.2% of total for source files.">23 statements
  • @@ -204,7 +204,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_qt_terminal.f90.html b/doc/sourcefile/fplot_qt_terminal.f90.html index 29b00235..a8b1b781 100644 --- a/doc/sourcefile/fplot_qt_terminal.f90.html +++ b/doc/sourcefile/fplot_qt_terminal.f90.html @@ -199,7 +199,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_simplify.f90.html b/doc/sourcefile/fplot_simplify.f90.html index 841b3f42..232e0f38 100644 --- a/doc/sourcefile/fplot_simplify.f90.html +++ b/doc/sourcefile/fplot_simplify.f90.html @@ -74,7 +74,7 @@

    fplot_simplify.f90
  • 218 statements + title=" 2.2% of total for source files.">218 statements
  • @@ -521,7 +521,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_stats_plots.f90.html b/doc/sourcefile/fplot_stats_plots.f90.html index 4d29363b..e5627e68 100644 --- a/doc/sourcefile/fplot_stats_plots.f90.html +++ b/doc/sourcefile/fplot_stats_plots.f90.html @@ -74,7 +74,7 @@

    fplot_stats_plots.f90
  • 203 statements + title=" 2.1% of total for source files.">203 statements
  • @@ -523,7 +523,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_surface_plot.f90.html b/doc/sourcefile/fplot_surface_plot.f90.html index 989024be..f6d9c523 100644 --- a/doc/sourcefile/fplot_surface_plot.f90.html +++ b/doc/sourcefile/fplot_surface_plot.f90.html @@ -74,7 +74,7 @@

    fplot_surface_plot.f90
  • 183 statements + title=" 1.9% of total for source files.">183 statements
  • @@ -580,7 +580,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_surface_plot_data.f90.html b/doc/sourcefile/fplot_surface_plot_data.f90.html index 3a6c14a8..7d5c957d 100644 --- a/doc/sourcefile/fplot_surface_plot_data.f90.html +++ b/doc/sourcefile/fplot_surface_plot_data.f90.html @@ -74,7 +74,7 @@

    fplot_surface_plot_data.f90
  • 208 statements + title=" 2.1% of total for source files.">208 statements
  • @@ -502,7 +502,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_svg_terminal.f90.html b/doc/sourcefile/fplot_svg_terminal.f90.html index d4b7b387..6ec7b431 100644 --- a/doc/sourcefile/fplot_svg_terminal.f90.html +++ b/doc/sourcefile/fplot_svg_terminal.f90.html @@ -74,7 +74,7 @@

    fplot_svg_terminal.f90
  • 23 statements + title=" 0.2% of total for source files.">23 statements
  • @@ -202,7 +202,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_terminal.f90.html b/doc/sourcefile/fplot_terminal.f90.html index 1b637911..844c93e2 100644 --- a/doc/sourcefile/fplot_terminal.f90.html +++ b/doc/sourcefile/fplot_terminal.f90.html @@ -74,7 +74,7 @@

    fplot_terminal.f90
  • 214 statements + title=" 2.2% of total for source files.">214 statements
  • @@ -498,7 +498,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_tri_surface_plot_data.f90.html b/doc/sourcefile/fplot_tri_surface_plot_data.f90.html index 4ebf6157..e2c1f803 100644 --- a/doc/sourcefile/fplot_tri_surface_plot_data.f90.html +++ b/doc/sourcefile/fplot_tri_surface_plot_data.f90.html @@ -74,7 +74,7 @@

    fplot_tri_surface_plot_data.f90
  • 145 statements + title=" 1.5% of total for source files.">145 statements
  • @@ -407,7 +407,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_triangulations_delaunay_2d.f90.html b/doc/sourcefile/fplot_triangulations_delaunay_2d.f90.html index 7a54cf49..3d6ca1fb 100644 --- a/doc/sourcefile/fplot_triangulations_delaunay_2d.f90.html +++ b/doc/sourcefile/fplot_triangulations_delaunay_2d.f90.html @@ -74,7 +74,7 @@

    fplot_triangulations_delaunay_2d.f90
  • 148 statements + title=" 1.5% of total for source files.">148 statements
  • @@ -153,7 +153,7 @@

    Modules

    Source Code

    module fplot_triangulations_delaunay_2d
         use iso_fortran_env
    -    use geompack
    +    use delaunay
         use fplot_errors
         implicit none
         private
    @@ -420,7 +420,7 @@ 

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_vector_field_plot_data.f90.html b/doc/sourcefile/fplot_vector_field_plot_data.f90.html index 3e601110..912aa06b 100644 --- a/doc/sourcefile/fplot_vector_field_plot_data.f90.html +++ b/doc/sourcefile/fplot_vector_field_plot_data.f90.html @@ -74,7 +74,7 @@

    fplot_vector_field_plot_data.f90
  • 208 statements + title=" 2.1% of total for source files.">208 statements
  • @@ -495,7 +495,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_windows_terminal.f90.html b/doc/sourcefile/fplot_windows_terminal.f90.html index c3ab7dc7..a7267faf 100644 --- a/doc/sourcefile/fplot_windows_terminal.f90.html +++ b/doc/sourcefile/fplot_windows_terminal.f90.html @@ -201,7 +201,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/sourcefile/fplot_wxt_terminal.f90.html b/doc/sourcefile/fplot_wxt_terminal.f90.html index 414dc0a5..fa560dda 100644 --- a/doc/sourcefile/fplot_wxt_terminal.f90.html +++ b/doc/sourcefile/fplot_wxt_terminal.f90.html @@ -199,7 +199,7 @@

    Source Code

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/src/delaunay.f90 b/doc/src/delaunay.f90 new file mode 100644 index 00000000..b81426df --- /dev/null +++ b/doc/src/delaunay.f90 @@ -0,0 +1,884 @@ +module delaunay + !! Provides a minimal, in-house implementation of the subset of the + !! GEOMPACK library used by FPLOT to construct 2D Delaunay + !! triangulations. + !! + !! Original FORTRAN77 version by Barry Joe. FORTRAN90 version by + !! John Burkardt. Reference: Barry Joe, GEOMPACK - a software + !! package for the generation of meshes using geometric algorithms, + !! Advances in Engineering Software, Volume 13, pages 325-331, 1991. + use iso_fortran_env, only : int32, real64 + implicit none + private + public :: r8tris2 + +contains +! ------------------------------------------------------------------------------ + subroutine r8tris2(node_num, node_xy, triangle_num, triangle_node, & + triangle_neighbor) + !! Constructs a Delaunay triangulation of 2D vertices. + !! + !! The routine constructs the Delaunay triangulation of a set of + !! 2D vertices using an incremental approach and diagonal edge + !! swaps. Vertices are first sorted in lexicographically + !! increasing (X,Y) order, and then are inserted one at a time + !! from outside the convex hull. + integer(int32), intent(in) :: node_num + !! The number of vertices. + real(real64), intent(inout), dimension(2, node_num) :: node_xy + !! The coordinates of the vertices. On output, the vertices + !! have been sorted into dictionary order. + integer(int32), intent(out) :: triangle_num + !! The number of triangles in the triangulation; + !! TRIANGLE_NUM is equal to 2*NODE_NUM - NB - 2, where NB is + !! the number of boundary vertices. + integer(int32), intent(out), dimension(3, 2 * node_num) :: & + triangle_node + !! The nodes that make up each triangle. The elements are + !! indices of the vertex array. The vertices of the + !! triangles are in counter clockwise order. + integer(int32), intent(out), dimension(3, 2 * node_num) :: & + triangle_neighbor + !! The triangle neighbor list. Positive elements are + !! indices of TRIANGLE_NODE; negative elements are used for + !! links of a counter clockwise linked list of boundary + !! edges; LINK = -(3*I + J-1) where I, J = triangle, edge + !! index; TRIANGLE_NEIGHBOR(J,I) refers to the neighbor + !! along the edge from vertex J to J+1 (mod 3). + + ! Local Variables + real(real64) :: cmax, tol + integer(int32) :: e, i, j, k, l, ledg, lr, ltri, m, m1, m2, & + n, redg, rtri, t, top + integer(int32), dimension(node_num) :: indx, stack + + ! Initialization + tol = 100.0d0 * epsilon(tol) + + ! Sort the vertices by increasing (x,y) + call r82vec_sort_heap_index_a(node_num, node_xy, indx) + call r82vec_permute(node_num, node_xy, indx) + + ! Make sure that the data points are "reasonably" distinct + m1 = 1 + do i = 2, node_num + m = m1 + m1 = i + k = 0 + do j = 1, 2 + cmax = max(abs(node_xy(j, m)), abs(node_xy(j, m1))) + if (tol * (cmax + 1.0d0) < & + abs(node_xy(j, m) - node_xy(j, m1))) then + k = j + exit + end if + end do + if (k == 0) then + error stop & + "R8TRIS2 - Fatal error! Two points are too close together." + end if + end do + + ! Starting from points M1 and M2, search for a third point M that + ! makes a "healthy" triangle (M1,M2,M) + m1 = 1 + m2 = 2 + j = 3 + do + if (node_num < j) then + error stop & + "R8TRIS2 - Fatal error! Could not find a non-collinear point." + end if + + m = j + lr = lrline(node_xy(1, m), node_xy(2, m), node_xy(1, m1), & + node_xy(2, m1), node_xy(1, m2), node_xy(2, m2), 0.0d0) + if (lr /= 0) exit + j = j + 1 + end do + + ! Set up the triangle information for (M1,M2,M), and for any + ! other triangles created because points were collinear with M1, + ! M2 + triangle_num = j - 2 + + if (lr == -1) then + triangle_node(1, 1) = m1 + triangle_node(2, 1) = m2 + triangle_node(3, 1) = m + triangle_neighbor(3, 1) = -3 + + do i = 2, triangle_num + m1 = m2 + m2 = i + 1 + triangle_node(1, i) = m1 + triangle_node(2, i) = m2 + triangle_node(3, i) = m + triangle_neighbor(1, i - 1) = -3 * i + triangle_neighbor(2, i - 1) = i + triangle_neighbor(3, i) = i - 1 + end do + + triangle_neighbor(1, triangle_num) = -3 * triangle_num - 1 + triangle_neighbor(2, triangle_num) = -5 + ledg = 2 + ltri = triangle_num + else + triangle_node(1, 1) = m2 + triangle_node(2, 1) = m1 + triangle_node(3, 1) = m + triangle_neighbor(1, 1) = -4 + + do i = 2, triangle_num + m1 = m2 + m2 = i + 1 + triangle_node(1, i) = m2 + triangle_node(2, i) = m1 + triangle_node(3, i) = m + triangle_neighbor(3, i - 1) = i + triangle_neighbor(1, i) = -3 * i - 3 + triangle_neighbor(2, i) = i - 1 + end do + + triangle_neighbor(3, triangle_num) = -3 * triangle_num + triangle_neighbor(2, 1) = -3 * triangle_num - 2 + ledg = 2 + ltri = 1 + end if + + ! Insert the vertices one at a time from outside the convex + ! hull, determine visible boundary edges, and apply diagonal + ! edge swaps until the Delaunay triangulation of the vertices + ! (so far) is obtained + top = 0 + + do i = j + 1, node_num + m = i + m1 = triangle_node(ledg, ltri) + + if (ledg <= 2) then + m2 = triangle_node(ledg + 1, ltri) + else + m2 = triangle_node(1, ltri) + end if + + lr = lrline(node_xy(1, m), node_xy(2, m), node_xy(1, m1), & + node_xy(2, m1), node_xy(1, m2), node_xy(2, m2), 0.0d0) + + if (0 < lr) then + rtri = ltri + redg = ledg + ltri = 0 + else + l = -triangle_neighbor(ledg, ltri) + rtri = l / 3 + redg = mod(l, 3) + 1 + end if + + call vbedg(node_xy(1, m), node_xy(2, m), node_num, node_xy, & + triangle_num, triangle_node, triangle_neighbor, ltri, & + ledg, rtri, redg) + + n = triangle_num + 1 + l = -triangle_neighbor(ledg, ltri) + + do + t = l / 3 + e = mod(l, 3) + 1 + l = -triangle_neighbor(e, t) + m2 = triangle_node(e, t) + + if (e <= 2) then + m1 = triangle_node(e + 1, t) + else + m1 = triangle_node(1, t) + end if + + triangle_num = triangle_num + 1 + triangle_neighbor(e, t) = triangle_num + triangle_node(1, triangle_num) = m1 + triangle_node(2, triangle_num) = m2 + triangle_node(3, triangle_num) = m + triangle_neighbor(1, triangle_num) = t + triangle_neighbor(2, triangle_num) = triangle_num - 1 + triangle_neighbor(3, triangle_num) = triangle_num + 1 + top = top + 1 + + if (node_num < top) then + error stop "R8TRIS2 - Fatal error! Stack overflow." + end if + + stack(top) = triangle_num + + if (t == rtri .and. e == redg) exit + end do + + triangle_neighbor(ledg, ltri) = -3 * n - 1 + triangle_neighbor(2, n) = -3 * triangle_num - 2 + triangle_neighbor(3, triangle_num) = -l + ltri = n + ledg = 2 + + call swapec(m, top, ltri, ledg, node_num, node_xy, & + triangle_num, triangle_node, triangle_neighbor, stack) + end do + + ! Now account for the sorting that was done + do i = 1, 3 + do j = 1, triangle_num + triangle_node(i, j) = indx(triangle_node(i, j)) + end do + end do + + call perm_inverse(node_num, indx) + call r82vec_permute(node_num, node_xy, indx) + end subroutine + +! ------------------------------------------------------------------------------ + pure subroutine r82vec_sort_heap_index_a(n, a, indx) + !! Computes an indexed heap ascending sort of an R82VEC. + !! + !! The sorting is not actually carried out. Rather an index + !! array is created which defines the sorting. + integer(int32), intent(in) :: n + !! The number of entries in the array. + real(real64), intent(in), dimension(2, n) :: a + !! The array to be index-sorted. + integer(int32), intent(out), dimension(n) :: indx + !! The sort index. The I-th element of the sorted array is + !! A(1:2,INDX(I)). + + ! Local Variables + real(real64), dimension(2) :: aval + integer(int32) :: i, indxt, ir, j, l + + if (n < 1) return + + do i = 1, n + indx(i) = i + end do + + if (n == 1) return + + l = n / 2 + 1 + ir = n + + do + if (1 < l) then + l = l - 1 + indxt = indx(l) + aval = a(:, indxt) + else + indxt = indx(ir) + aval = a(:, indxt) + indx(ir) = indx(1) + ir = ir - 1 + if (ir == 1) then + indx(1) = indxt + exit + end if + end if + + i = l + j = l + l + + do while (j <= ir) + if (j < ir) then + if (a(1, indx(j)) < a(1, indx(j + 1)) .or. & + (a(1, indx(j)) == a(1, indx(j + 1)) .and. & + a(2, indx(j)) < a(2, indx(j + 1)))) then + j = j + 1 + end if + end if + + if (aval(1) < a(1, indx(j)) .or. & + (aval(1) == a(1, indx(j)) .and. & + aval(2) < a(2, indx(j)))) then + indx(i) = indx(j) + i = j + j = j + j + else + j = ir + 1 + end if + end do + + indx(i) = indxt + end do + end subroutine + +! ------------------------------------------------------------------------------ + subroutine r82vec_permute(n, a, p) + !! Permutes an R82VEC in place, according to a given permutation. + integer(int32), intent(in) :: n + !! The number of objects. + real(real64), intent(inout), dimension(2, n) :: a + !! The array to be permuted. + integer(int32), intent(inout), dimension(n) :: p + !! The permutation. P(I) = J means that the I-th element of + !! the output array should be the J-th element of the input + !! array. + + ! Local Variables + real(real64), dimension(2) :: a_temp + integer(int32) :: ierror, iget, iput, istart + + call perm_check(n, p, ierror) + if (ierror /= 0) then + error stop & + "R82VEC_PERMUTE - Fatal error! P does not represent a permutation." + end if + + do istart = 1, n + if (p(istart) < 0) then + cycle + else if (p(istart) == istart) then + p(istart) = -p(istart) + cycle + else + a_temp = a(:, istart) + iget = istart + + do + iput = iget + iget = p(iget) + p(iput) = -p(iput) + + if (iget < 1 .or. n < iget) then + error stop & + "R82VEC_PERMUTE - Fatal error! Invalid permutation entry." + end if + + if (iget == istart) then + a(:, iput) = a_temp + exit + end if + + a(:, iput) = a(:, iget) + end do + end if + end do + + p = -p + end subroutine + +! ------------------------------------------------------------------------------ + pure subroutine perm_check(n, p, ierror) + !! Checks that a vector represents a permutation. + integer(int32), intent(in) :: n + !! The number of entries. + integer(int32), intent(in), dimension(n) :: p + !! The array to check. + integer(int32), intent(out) :: ierror + !! 0 if the array represents a permutation; otherwise, the + !! smallest missing value. + + ! Local Variables + integer(int32) :: ifind, iseek + + ierror = 0 + do iseek = 1, n + ierror = iseek + do ifind = 1, n + if (p(ifind) == iseek) then + ierror = 0 + exit + end if + end do + if (ierror /= 0) return + end do + end subroutine + +! ------------------------------------------------------------------------------ + subroutine perm_inverse(n, p) + !! Inverts a permutation in-place. + integer(int32), intent(in) :: n + !! The number of objects being permuted. + integer(int32), intent(inout), dimension(n) :: p + !! The permutation, in standard index form. On output, P + !! describes the inverse permutation. + + ! Local Variables + integer(int32) :: i, i0, i1, i2, ierror, is + + if (n <= 0) then + error stop "PERM_INVERSE - Fatal error! N <= 0." + end if + + call perm_check(n, p, ierror) + if (ierror /= 0) then + error stop & + "PERM_INVERSE - Fatal error! P does not represent a permutation." + end if + + is = 1 + do i = 1, n + i1 = p(i) + do while (i < i1) + i2 = p(i1) + p(i1) = -i2 + i1 = i2 + end do + is = -sign(1, p(i)) + p(i) = sign(p(i), is) + end do + + do i = 1, n + i1 = -p(i) + if (0 <= i1) then + i0 = i + do + i2 = p(i1) + p(i1) = i0 + if (i2 < 0) exit + i0 = i1 + i1 = i2 + end do + end if + end do + end subroutine + +! ------------------------------------------------------------------------------ + pure function lrline(xu, yu, xv1, yv1, xv2, yv2, dv) result(rst) + !! Determines if a point is left of, right of, or on a directed + !! line. + !! + !! The directed line is parallel to, and at a signed distance DV + !! from a directed base line from (XV1,YV1) to (XV2,YV2). + real(real64), intent(in) :: xu + !! The x-coordinate of the point whose position relative to + !! the directed line is to be determined. + real(real64), intent(in) :: yu + !! The y-coordinate of the point whose position relative to + !! the directed line is to be determined. + real(real64), intent(in) :: xv1 + !! The x-coordinate of the first point defining the base + !! line. + real(real64), intent(in) :: yv1 + !! The y-coordinate of the first point defining the base + !! line. + real(real64), intent(in) :: xv2 + !! The x-coordinate of the second point defining the base + !! line. + real(real64), intent(in) :: yv2 + !! The y-coordinate of the second point defining the base + !! line. + real(real64), intent(in) :: dv + !! The signed distance of the directed line from the + !! directed base line. DV is positive for a line to the + !! left of the base line. + integer(int32) :: rst + !! +1 if the point is to the right of the directed line; 0 if + !! the point is on the directed line; -1 if the point is to + !! the left of the directed line. + + ! Local Variables + real(real64) :: dx, dxu, dy, dyu, t, tol, tolabs + + tol = 100.0d0 * epsilon(tol) + + dx = xv2 - xv1 + dy = yv2 - yv1 + dxu = xu - xv1 + dyu = yu - yv1 + + tolabs = tol * max(abs(dx), abs(dy), abs(dxu), abs(dyu), abs(dv)) + + t = dy * dxu - dx * dyu + dv * sqrt(dx * dx + dy * dy) + + if (tolabs < t) then + rst = 1 + else if (-tolabs <= t) then + rst = 0 + else + rst = -1 + end if + end function + +! ------------------------------------------------------------------------------ + pure function diaedg(x0, y0, x1, y1, x2, y2, x3, y3) result(rst) + !! Chooses a diagonal edge. + !! + !! The routine determines whether 0--2 or 1--3 is the diagonal + !! edge that should be chosen, based on the circumcircle + !! criterion, where (X0,Y0), (X1,Y1), (X2,Y2), (X3,Y3) are the + !! vertices of a simple quadrilateral in counterclockwise order. + real(real64), intent(in) :: x0, y0, x1, y1, x2, y2, x3, y3 + !! The coordinates of the vertices of the quadrilateral. + integer(int32) :: rst + !! +1 if diagonal edge 02 is chosen; -1 if diagonal edge 13 + !! is chosen; 0 if the four vertices are cocircular. + + ! Local Variables + real(real64) :: ca, cb, dx10, dx12, dx30, dx32, dy10, dy12, dy30, & + dy32, s, tol, tola, tolb + + tol = 100.0d0 * epsilon(tol) + + dx10 = x1 - x0 + dy10 = y1 - y0 + dx12 = x1 - x2 + dy12 = y1 - y2 + dx30 = x3 - x0 + dy30 = y3 - y0 + dx32 = x3 - x2 + dy32 = y3 - y2 + + tola = tol * max(abs(dx10), abs(dy10), abs(dx30), abs(dy30)) + tolb = tol * max(abs(dx12), abs(dy12), abs(dx32), abs(dy32)) + + ca = dx10 * dx30 + dy10 * dy30 + cb = dx12 * dx32 + dy12 * dy32 + + if (tola < ca .and. tolb < cb) then + rst = -1 + else if (ca < -tola .and. cb < -tolb) then + rst = 1 + else + tola = max(tola, tolb) + s = (dx10 * dy30 - dx30 * dy10) * cb + & + (dx32 * dy12 - dx12 * dy32) * ca + if (tola < s) then + rst = -1 + else if (s < -tola) then + rst = 1 + else + rst = 0 + end if + end if + end function + +! ------------------------------------------------------------------------------ + pure function i4_modp(i, j) result(rst) + !! Returns the nonnegative remainder of I4 division. + integer(int32), intent(in) :: i + !! The number to be divided. + integer(int32), intent(in) :: j + !! The number that divides I. + integer(int32) :: rst + !! The nonnegative remainder when I is divided by J. + + rst = mod(i, j) + if (rst < 0) rst = rst + abs(j) + end function + +! ------------------------------------------------------------------------------ + pure function i4_wrap(ival, ilo, ihi) result(rst) + !! Forces an I4 to lie between given limits by wrapping. + integer(int32), intent(in) :: ival + !! The value to wrap. + integer(int32), intent(in) :: ilo + !! The lower bound. + integer(int32), intent(in) :: ihi + !! The upper bound. + integer(int32) :: rst + !! A "wrapped" version of IVAL. + + ! Local Variables + integer(int32) :: jhi, jlo, wide + + jlo = min(ilo, ihi) + jhi = max(ilo, ihi) + wide = jhi - jlo + 1 + + if (wide == 1) then + rst = jlo + else + rst = jlo + i4_modp(ival - jlo, wide) + end if + end function + +! ------------------------------------------------------------------------------ + pure subroutine vbedg(x, y, node_num, node_xy, triangle_num, & + triangle_node, triangle_neighbor, ltri, ledg, rtri, redg) + !! Determines which boundary edges are visible to a point. + !! + !! The point (X,Y) is assumed to be outside the convex hull of + !! the region covered by the 2D triangulation. + real(real64), intent(in) :: x + !! The x-coordinate of a point outside the convex hull of + !! the current triangulation. + real(real64), intent(in) :: y + !! The y-coordinate of a point outside the convex hull of + !! the current triangulation. + integer(int32), intent(in) :: node_num + !! The number of points. + real(real64), intent(in), dimension(2, node_num) :: node_xy + !! The coordinates of the vertices. + integer(int32), intent(in) :: triangle_num + !! The number of triangles. + integer(int32), intent(in), dimension(3, triangle_num) :: & + triangle_node + !! The triangle incidence list. + integer(int32), intent(in), dimension(3, triangle_num) :: & + triangle_neighbor + !! The triangle neighbor list; negative values are used for + !! links of a counterclockwise linked list of boundary + !! edges; LINK = -(3*I + J-1) where I, J = triangle, edge + !! index. + integer(int32), intent(inout) :: ltri + !! If LTRI /= 0 then this value is assumed to be already + !! computed and is not changed, else it is updated. On + !! output, LTRI is the index of the boundary triangle to the + !! left of the leftmost boundary triangle visible from + !! (X,Y). + integer(int32), intent(inout) :: ledg + !! The boundary edge of triangle LTRI to the left of the + !! leftmost boundary edge visible from (X,Y). 1 <= LEDG <= + !! 3. + integer(int32), intent(inout) :: rtri + !! On input, the index of the boundary triangle to begin the + !! search at. On output, the index of the rightmost + !! boundary triangle visible from (X,Y). + integer(int32), intent(inout) :: redg + !! The edge of triangle RTRI that is visible from (X,Y). + !! 1 <= REDG <= 3. + + ! Local Variables + integer(int32) :: a, b, e, l, lr, t + logical :: ldone + + ! Find the rightmost visible boundary edge using links, then + ! possibly the leftmost visible boundary edge using triangle + ! neighbor information + if (ltri == 0) then + ldone = .false. + ltri = rtri + ledg = redg + else + ldone = .true. + end if + + do + l = -triangle_neighbor(redg, rtri) + t = l / 3 + e = mod(l, 3) + 1 + a = triangle_node(e, t) + + if (e <= 2) then + b = triangle_node(e + 1, t) + else + b = triangle_node(1, t) + end if + + lr = lrline(x, y, node_xy(1, a), node_xy(2, a), & + node_xy(1, b), node_xy(2, b), 0.0d0) + + if (lr <= 0) exit + + rtri = t + redg = e + end do + + if (ldone) return + + t = ltri + e = ledg + + do + b = triangle_node(e, t) + e = i4_wrap(e - 1, 1, 3) + + do while (0 < triangle_neighbor(e, t)) + t = triangle_neighbor(e, t) + if (triangle_node(1, t) == b) then + e = 3 + else if (triangle_node(2, t) == b) then + e = 1 + else + e = 2 + end if + end do + + a = triangle_node(e, t) + + lr = lrline(x, y, node_xy(1, a), node_xy(2, a), & + node_xy(1, b), node_xy(2, b), 0.0d0) + + if (lr <= 0) exit + end do + + ltri = t + ledg = e + end subroutine + +! ------------------------------------------------------------------------------ + pure subroutine swapec(i, top, btri, bedg, node_num, node_xy, & + triangle_num, triangle_node, triangle_neighbor, stack) + !! Swaps diagonal edges until all triangles are Delaunay. + !! + !! The routine swaps diagonal edges in a 2D triangulation, based + !! on the empty circumcircle criterion, until all triangles are + !! Delaunay, given that I is the index of the new vertex added + !! to the triangulation. + integer(int32), intent(in) :: i + !! The index of the new vertex. + integer(int32), intent(inout) :: top + !! The index of the top of the stack. On output, TOP is + !! zero. + integer(int32), intent(inout) :: btri + !! On input, if positive, the triangle index of a boundary + !! edge whose updated index must be recorded. On output, + !! this may be updated because of swaps. + integer(int32), intent(inout) :: bedg + !! On input, if positive, the edge index of a boundary edge + !! whose updated index must be recorded. On output, this + !! may be updated because of swaps. + integer(int32), intent(in) :: node_num + !! The number of points. + real(real64), intent(in), dimension(2, node_num) :: node_xy + !! The coordinates of the points. + integer(int32), intent(in) :: triangle_num + !! The number of triangles. + integer(int32), intent(inout), dimension(3, triangle_num) :: & + triangle_node + !! The triangle incidence list. May be updated on output + !! because of swaps. + integer(int32), intent(inout), dimension(3, triangle_num) :: & + triangle_neighbor + !! The triangle neighbor list; negative values are used for + !! links of the counter-clockwise linked list of boundary + !! edges. May be updated on output because of swaps. + integer(int32), intent(inout), dimension(node_num) :: stack + !! On input, entries 1 through TOP contain the indices of + !! initial triangles (involving vertex I) put in the stack; + !! the edges opposite I should be in the interior; entries + !! TOP+1 through NODE_NUM are used as a stack. + + ! Local Variables + integer(int32) :: a, b, c, e, ee, em1, ep1, f, fm1, fp1, l, r, s, & + swap, t, tt, u + real(real64) :: x, y + + x = node_xy(1, i) + y = node_xy(2, i) + + do + if (top <= 0) exit + + t = stack(top) + top = top - 1 + + if (triangle_node(1, t) == i) then + e = 2 + b = triangle_node(3, t) + else if (triangle_node(2, t) == i) then + e = 3 + b = triangle_node(1, t) + else + e = 1 + b = triangle_node(2, t) + end if + + a = triangle_node(e, t) + u = triangle_neighbor(e, t) + + if (triangle_neighbor(1, u) == t) then + f = 1 + c = triangle_node(3, u) + else if (triangle_neighbor(2, u) == t) then + f = 2 + c = triangle_node(1, u) + else + f = 3 + c = triangle_node(2, u) + end if + + swap = diaedg(x, y, node_xy(1, a), node_xy(2, a), & + node_xy(1, c), node_xy(2, c), node_xy(1, b), & + node_xy(2, b)) + + if (swap == 1) then + em1 = i4_wrap(e - 1, 1, 3) + ep1 = i4_wrap(e + 1, 1, 3) + fm1 = i4_wrap(f - 1, 1, 3) + fp1 = i4_wrap(f + 1, 1, 3) + + triangle_node(ep1, t) = c + triangle_node(fp1, u) = i + r = triangle_neighbor(ep1, t) + s = triangle_neighbor(fp1, u) + triangle_neighbor(ep1, t) = u + triangle_neighbor(fp1, u) = t + triangle_neighbor(e, t) = s + triangle_neighbor(f, u) = r + + if (0 < triangle_neighbor(fm1, u)) then + top = top + 1 + stack(top) = u + end if + + if (0 < s) then + if (triangle_neighbor(1, s) == u) then + triangle_neighbor(1, s) = t + else if (triangle_neighbor(2, s) == u) then + triangle_neighbor(2, s) = t + else + triangle_neighbor(3, s) = t + end if + + top = top + 1 + if (node_num < top) then + error stop "SWAPEC - Fatal error! Stack overflow." + end if + stack(top) = t + else + if (u == btri .and. fp1 == bedg) then + btri = t + bedg = e + end if + + l = -(3 * t + e - 1) + tt = t + ee = em1 + + do while (0 < triangle_neighbor(ee, tt)) + tt = triangle_neighbor(ee, tt) + if (triangle_node(1, tt) == a) then + ee = 3 + else if (triangle_node(2, tt) == a) then + ee = 1 + else + ee = 2 + end if + end do + + triangle_neighbor(ee, tt) = l + end if + + if (0 < r) then + if (triangle_neighbor(1, r) == t) then + triangle_neighbor(1, r) = u + else if (triangle_neighbor(2, r) == t) then + triangle_neighbor(2, r) = u + else + triangle_neighbor(3, r) = u + end if + else + if (t == btri .and. ep1 == bedg) then + btri = u + bedg = f + end if + + l = -(3 * u + f - 1) + tt = u + ee = fm1 + + do while (0 < triangle_neighbor(ee, tt)) + tt = triangle_neighbor(ee, tt) + if (triangle_node(1, tt) == b) then + ee = 3 + else if (triangle_node(2, tt) == b) then + ee = 1 + else + ee = 2 + end if + end do + + triangle_neighbor(ee, tt) = l + end if + end if + end do + end subroutine + +! ------------------------------------------------------------------------------ +end module diff --git a/doc/src/fplot_colormap.f90 b/doc/src/fplot_colormap.f90 index da4ec14c..0bc91a3d 100644 --- a/doc/src/fplot_colormap.f90 +++ b/doc/src/fplot_colormap.f90 @@ -19,6 +19,7 @@ module fplot_colormap public :: grey_colormap public :: earth_colormap public :: custom_colormap + public :: spectral_colormap type, abstract, extends(plot_object) :: colormap !! A colormap object for a surface plot. @@ -26,10 +27,24 @@ module fplot_colormap !! The label to associate with the colormap. logical, private :: m_horizontal = .false. !! The colormap should be drawn horizontally. - logical, private :: m_drawBorder = .true. + logical, private :: m_drawBorder = .false. !! Draw the colormap border. - logical, private :: m_showTics = .true. + logical, private :: m_showTics = .false. !! Show the tic marks. + real(real32), private :: m_colorbarThickness = 0.02 + !! The relative thickness of the colorbar itself. A value of 0 + !! allows GNUPLOT to use it's defaults. This value is clamped to + !! the range [0.0, 1.0]. + real(real32), private :: m_colorbarLength = 0.4 + !! The relative length of the colorbar itself. A value of 0 + !! allows GNUPLOT to use it's defaults. This value is clamped to + !! the range [0.0, 1.0]. + real(real32), private :: m_axesSize(2) = [0.85, 0.85] + !! The size of the axes size defined as [width, height] + !! clamped to the interval [0.0, 1.0]. + real(real32), private :: m_axesOrigin(2) = [0.05, 0.05] + !! The x-y coordinates of the axes clamped to the interval + !! [0.0, 1.0]. contains procedure, public :: get_command_string => cm_get_cmd procedure(cm_get_string_result), deferred, public :: get_color_string @@ -41,6 +56,14 @@ module fplot_colormap procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_show_tics => cm_set_show_tics + procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness + procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness + procedure, public :: get_colorbar_length => cm_get_colorbar_length + procedure, public :: set_colorbar_length => cm_set_colorbar_length + procedure, public :: get_axes_size => cm_get_axes_size + procedure, public :: set_axes_size => cm_set_axes_size + procedure, public :: get_axes_origin => cm_get_axes_origin + procedure, public :: set_axes_origin => cm_set_axes_origin end type interface @@ -109,6 +132,13 @@ function cm_get_string_result(this) result(x) end type ! ------------------------------------------------------------------------------ + type, extends(colormap) :: spectral_colormap + !! Defines the spectral colormap available at + !! https://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal. + contains + procedure, public :: get_color_string => spcm_get_clr + end type + contains ! ****************************************************************************** ! COLORMAP MEMBERS @@ -122,9 +152,14 @@ function cm_get_cmd(this) result(x) ! Local Variables type(string_builder) :: str + real(real32) :: sz(2), origin(2), length, thickness ! Initialization call str%initialize() + sz = this%get_axes_size() + origin = this%get_axes_origin() + length = this%get_colorbar_length() + thickness = this%get_colorbar_thickness() ! Palette Definition call str%append("set palette defined (") @@ -143,14 +178,45 @@ function cm_get_cmd(this) result(x) call str%append(new_line('a')) call str%append("set colorbox horizontal") call str%append(new_line('a')) - call str%append("set size 0.8,0.8; set origin 0.1,0.2") + call str%append("set size ") + call str%append(to_string(sz(1))) + call str%append(",") + call str%append(to_string(sz(2))) + call str%append("; set origin ") + call str%append(to_string(origin(1))) + call str%append(",") + call str%append(to_string(origin(2) + 0.075)) call str%append(new_line('a')) - call str%append("set colorbox user origin 0.1,0.175 size 0.8,0.055") + call str%append("set colorbox user origin ") + call str%append(to_string(0.5 - 0.5 * length)) + call str%append(",0.1 size ") + call str%append(to_string(length)) + call str%append(",") + call str%append(to_string(thickness)) if (len(this%get_label()) > 0) then call str%append(new_line('a')) call str%append("set cblabel offset 0,0.8") end if + else + call str%append(new_line('a')) + call str%append("set colorbox vertical") + call str%append(new_line('a')) + call str%append("set size ") + call str%append(to_string(sz(1))) + call str%append(",") + call str%append(to_string(sz(2))) + call str%append("; set origin ") + call str%append(to_string(origin(1))) + call str%append(",") + call str%append(to_string(origin(2))) + call str%append(new_line('a')) + call str%append("set colorbox user origin 0.9,") + call str%append(to_string(0.5 - 0.5 * length)) + call str%append(" size ") + call str%append(to_string(thickness)) + call str%append(",") + call str%append(to_string(length)) end if ! Border & Tic Marks @@ -262,6 +328,86 @@ subroutine cm_set_show_tics(this, x) this%m_showTics = x end subroutine +! ------------------------------------------------------------------------------ + pure function cm_get_colorbar_thickness(this) result(rst) + !! Gets the relative thickness of the colorbar. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32) :: rst + !! The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. + rst = this%m_colorbarThickness + end function + +! -------------------- + subroutine cm_set_colorbar_thickness(this, x) + !! Sets the relative colorbar thickness, clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), intent(in) :: x + !! The requested thickness; 0 uses GNUPLOT's default. + this%m_colorbarThickness = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_colorbar_length(this) result(rst) + !! Gets the relative length of the colorbar. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32) :: rst + !! The length in [0.0, 1.0]; 0 uses GNUPLOT's default. + rst = this%m_colorbarLength + end function + +! -------------------- + subroutine cm_set_colorbar_length(this, x) + !! Sets the relative colorbar length, clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), intent(in) :: x + !! The requested length; 0 uses GNUPLOT's default. + this%m_colorbarLength = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_axes_size(this) result(rst) + !! Gets the relative width and height of the axes. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32), dimension(2) :: rst + !! The [width, height], each in [0.0, 1.0]. + rst = this%m_axesSize + end function + +! -------------------- + subroutine cm_set_axes_size(this, x) + !! Sets the axes width and height, each clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), dimension(2), intent(in) :: x + !! The requested [width, height]. + this%m_axesSize = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_axes_origin(this) result(rst) + !! Gets the relative x-y coordinates of the axes origin. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32), dimension(2) :: rst + !! The [x, y] coordinates, each in [0.0, 1.0]. + rst = this%m_axesOrigin + end function + +! -------------------- + subroutine cm_set_axes_origin(this, x) + !! Sets the axes origin coordinates, each clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), dimension(2), intent(in) :: x + !! The requested [x, y] coordinates. + this%m_axesOrigin = max(0.0, min(1.0, x)) + end subroutine + ! ------------------------------------------------------------------------------ ! TO DO: ! - Set user-defined tic labels & limits (ref: http://gnuplot.sourceforge.net/demo_5.4/cerf.html) @@ -487,5 +633,29 @@ subroutine custom_final(this) end if end subroutine +! ****************************************************************************** +! SPECTRAL_COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function spcm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(spectral_colormap), intent(in) :: this + !! The spectral_colormap object. + character(len = :), allocatable :: x + !! The command string. + + type(string_builder) :: str + + call str%append("0 '#D53E4F',") + call str%append("1 '#F46D43',") + call str%append("2 '#FDAE61',") + call str%append("3 '#FEE08B',") + call str%append("4 '#E6F598',") + call str%append("5 '#ABDDA4',") + call str%append("6 '#66C2A5',") + call str%append("7 '#3288BD'") + + x = char(str%to_string()) + end function + ! ------------------------------------------------------------------------------ end module diff --git a/doc/src/fplot_multiplot.f90 b/doc/src/fplot_multiplot.f90 index 6dad1481..6ea6bb9c 100644 --- a/doc/src/fplot_multiplot.f90 +++ b/doc/src/fplot_multiplot.f90 @@ -34,6 +34,13 @@ module fplot_multiplot !! Has a title? class(terminal), pointer :: m_terminal => null() !! The GNUPLOT terminal object to target. + real(real32), private :: m_leftMargin = 0.12 + real(real32), private :: m_rightMargin = 0.95 + real(real32), private :: m_bottomMargin = 0.10 + real(real32), private :: m_topMargin = 0.95 + real(real32), private :: m_horizontalSpacing = 0.0 + real(real32), private :: m_verticalSpacing = 0.0 + logical, private :: m_useAutoMargins = .true. contains final :: mp_clean procedure, public :: get_command_string => mp_get_command @@ -54,6 +61,20 @@ module fplot_multiplot procedure, public :: get_font_size => mp_get_font_size procedure, public :: set_font_size => mp_set_font_size procedure, public :: set_window_size => mp_set_window_size + procedure, public :: get_left_margin => mp_get_left_margin + procedure, public :: set_left_margin => mp_set_left_margin + procedure, public :: get_right_margin => mp_get_right_margin + procedure, public :: set_right_margin => mp_set_right_margin + procedure, public :: get_top_margin => mp_get_top_margin + procedure, public :: set_top_margin => mp_set_top_margin + procedure, public :: get_bottom_margin => mp_get_bottom_margin + procedure, public :: set_bottom_margin => mp_set_bottom_margin + procedure, public :: get_horizontal_spacing => mp_get_horizontal_spacing + procedure, public :: set_horizontal_spacing => mp_set_horizontal_spacing + procedure, public :: get_vertical_spacing => mp_get_vertical_spacing + procedure, public :: set_vertical_spacing => mp_set_vertical_spacing + procedure, public :: get_use_auto_generated_margins => mp_get_use_auto_generated_margins + procedure, public :: set_use_auto_generated_margins => mp_set_use_auto_generated_margins end type contains @@ -87,6 +108,20 @@ function mp_get_command(this) result(x) call str%append(this%get_title()) call str%append('"') end if + if (.not.this%get_use_auto_generated_margins()) then + call str%append(" margins ") + call str%append(to_string(this%get_left_margin())) + call str%append(",") + call str%append(to_string(this%get_right_margin())) + call str%append(",") + call str%append(to_string(this%get_bottom_margin())) + call str%append(",") + call str%append(to_string(this%get_top_margin())) + end if + call str%append(" spacing ") + call str%append(to_string(this%get_horizontal_spacing())) + call str%append(",") + call str%append(to_string(this%get_vertical_spacing())) call str%append(new_line('a')) ! Write commands for each plot object @@ -506,8 +541,6 @@ subroutine mp_set_font_size(this, x) call term%set_font_size(x) end subroutine -! ****************************************************************************** -! ADDED AUG. 16, 2026 - V1.9.0 ! ------------------------------------------------------------------------------ subroutine mp_set_window_size(this, width, height) !! Sets the height and width of the plot window. @@ -524,5 +557,203 @@ subroutine mp_set_window_size(this, width, height) end if end subroutine +! ------------------------------------------------------------------------------ + pure function mp_get_left_margin(this) result(rst) + !! Gets the left margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_leftMargin + end function + +! -------------------- + subroutine mp_set_left_margin(this, x) + !! Sets the left margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_leftMargin = 0.0 + else if (x > 1.0) then + this%m_leftMargin = 1.0 + else + this%m_leftMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_right_margin(this) result(rst) + !! Gets the right margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_rightMargin + end function + +! -------------------- + subroutine mp_set_right_margin(this, x) + !! Sets the right margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_rightMargin = 0.0 + else if (x > 1.0) then + this%m_rightMargin = 1.0 + else + this%m_rightMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_top_margin(this) result(rst) + !! Gets the top margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_topMargin + end function + +! -------------------- + subroutine mp_set_top_margin(this, x) + !! Sets the top margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_topMargin = 0.0 + else if (x > 1.0) then + this%m_topMargin = 1.0 + else + this%m_topMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_bottom_margin(this) result(rst) + !! Gets the bottom margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_bottomMargin + end function + +! -------------------- + subroutine mp_set_bottom_margin(this, x) + !! Sets the bottom margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_bottomMargin = 0.0 + else if (x > 1.0) then + this%m_bottomMargin = 1.0 + else + this%m_bottomMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_horizontal_spacing(this) result(rst) + !! Gets the horizontal spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The spacing value. + rst = this%m_horizontalSpacing + end function + +! -------------------- + subroutine mp_set_horizontal_spacing(this, x) + !! Sets the horizontal spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The spacing value. This value will be clamped to zero if + !! a negative value is supplied. + if (x < 0.0) then + this%m_horizontalSpacing = 0.0 + else + this%m_horizontalSpacing = x + end if + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_vertical_spacing(this) result(rst) + !! Gets the vertical spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The spacing value. + rst = this%m_verticalSpacing + end function + +! -------------------- + subroutine mp_set_vertical_spacing(this, x) + !! Sets the vertical spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The spacing value. This value will be clamped to zero if + !! a negative value is supplied. + if (x < 0.0) then + this%m_verticalSpacing = 0.0 + else + this%m_verticalSpacing = x + end if + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_use_auto_generated_margins(this) result(rst) + !! Gets a value determining if the global margins should be + !! automatically calculated. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + logical :: rst + !! True if the margins should be automatically calculated; else, + !! false to use manually defined margins. + rst = this%m_useAutoMargins + end function + +! -------------------- + subroutine mp_set_use_auto_generated_margins(this, x) + !! Sets a value determining if the global margins should be + !! automatically calculated. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + logical, intent(in) :: x + !! True if the margins should be automatically calculated; else, + !! false to use manually defined margins. + this%m_useAutoMargins = x + end subroutine + ! ------------------------------------------------------------------------------ end module diff --git a/doc/src/fplot_plot_axis.f90 b/doc/src/fplot_plot_axis.f90 index 5d0de852..bb6a2e6b 100644 --- a/doc/src/fplot_plot_axis.f90 +++ b/doc/src/fplot_plot_axis.f90 @@ -79,6 +79,11 @@ module fplot_plot_axis !! Use manual (user-defined) tic labels? type(name_value_pair), private, allocatable, dimension(:) :: m_ticLabels !! A list of user-defined tic labels. + real(real32), private :: m_titleAngle = 0.0 + !! The angle at which to rotate the axis title. + logical, private :: m_autoCalcTitleAngle = .true. + !! True if GNUPLOT should automatically rotate the title; else, + !! false if the m_titleAngle property should determine the angle. contains procedure, public :: get_title => pa_get_title procedure, public :: set_title => pa_set_title @@ -123,6 +128,12 @@ module fplot_plot_axis procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset + procedure, public :: get_title_angle => pa_get_title_angle + procedure, public :: set_title_angle => pa_set_title_angle + procedure, public :: get_auto_calculate_title_angle => & + pa_get_auto_calc_title_angle + procedure, public :: set_auto_calculate_title_angle => & + pa_set_auto_calc_title_angle procedure, public :: get_use_manual_tic_labels => & pa_get_use_manual_tic_labels procedure, public :: set_use_manual_tic_labels => & @@ -387,6 +398,12 @@ function pa_get_cmd_string(this) result(txt) call str%append(this%get_title()) call str%append('"') + ! Rotation + if (.not.this%get_auto_calculate_title_angle()) then + call str%append(" rotate by ") + call str%append(to_string(this%get_title_angle())) + end if + ! Offsets if (this%get_title_x_offset() /= 0 .or. & this%get_title_y_offset() /= 0) & @@ -750,6 +767,51 @@ subroutine pa_set_title_y_offset(this, x) this%m_titleYOffset = x end subroutine +! ------------------------------------------------------------------------------ + pure function pa_get_title_angle(this) result(x) + !! Gets the axis title angle, in degrees. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + real(real32) :: x + !! The axis title angle, in degrees. + x = this%m_titleAngle + end function + +! -------------------- + subroutine pa_set_title_angle(this, x) + !! Sets the axis title angle, in degrees. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + real(real32), intent(in) :: x + !! The axis title angle, in degrees. + this%m_titleAngle = x + this%m_autoCalcTitleAngle = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_auto_calc_title_angle(this) result(x) + !! Gets whether GNUPLOT should automatically calculate the axis + !! title angle. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: x + !! True if GNUPLOT should automatically calculate the title + !! angle; else, false. + x = this%m_autoCalcTitleAngle + end function + +! -------------------- + subroutine pa_set_auto_calc_title_angle(this, x) + !! Sets whether GNUPLOT should automatically calculate the axis + !! title angle. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true to automatically calculate the title angle; + !! else, set to false. + this%m_autoCalcTitleAngle = x + end subroutine + ! ------------------------------------------------------------------------------ pure function pa_get_use_manual_tic_labels(this) result(rst) !! Gets a value determining if manual tic labels should be used. diff --git a/doc/src/fplot_triangulations_delaunay_2d.f90 b/doc/src/fplot_triangulations_delaunay_2d.f90 index bf52fee8..0290065a 100644 --- a/doc/src/fplot_triangulations_delaunay_2d.f90 +++ b/doc/src/fplot_triangulations_delaunay_2d.f90 @@ -1,6 +1,6 @@ module fplot_triangulations_delaunay_2d use iso_fortran_env - use geompack + use delaunay use fplot_errors implicit none private diff --git a/doc/tipuesearch/tipuesearch_content.js b/doc/tipuesearch/tipuesearch_content.js index 5661ccd7..0091f149 100644 --- a/doc/tipuesearch/tipuesearch_content.js +++ b/doc/tipuesearch/tipuesearch_content.js @@ -1 +1 @@ -var tipuesearch = {"pages":[{"title":" FPLOT ","text":"FPLOT Developer Info Jason Christopherson","tags":"home","loc":"index.html"},{"title":"plot_data_3d – FPLOT ","text":"type, public, extends( scatter_plot_data ) :: plot_data_3d Defines a three-dimensional plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pd3d_clear_data private subroutine pd3d_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pd3d_set_data_1 private subroutine pd3d_set_data_1(this, x, y, z, c, ps, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinate data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinate data. real(kind=real64), intent(in), dimension(:) :: z An N-element array containing the z coordinate data. real(kind=real64), intent(in), optional, dimension(:) :: c An N-element array defining how color should vary with the \ncurrent colormap for each value. real(kind=real64), intent(in), optional, dimension(:) :: ps An N-element array defining the size of each data point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_axes_string => pd3d_get_axes_cmd private function pd3d_get_axes_cmd(this) result(x) Gets the GNUPLOT command string defining which axes the data\nis to be plotted against. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_color_data => pd3d_get_c_array private function pd3d_get_c_array(this) result(x) Gets the stored color scaling data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => spd_get_cmd public function spd_get_cmd (this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => pd3d_get_data_count private pure function pd3d_get_data_count(this) result(x) Gets the number of data points. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value integer(kind=int32) The number of data points. procedure, public :: get_data_string => pd3d_get_data_cmd private function pd3d_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data to plot. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_fill_curve => spd_get_filled private pure function spd_get_filled(this) result(rst) Gets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the curve should be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_point_size_data => pd3d_get_c_array private function pd3d_get_c_array(this) result(x) Gets the stored color scaling data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_simplification_factor => spd_get_simplify_factor private pure function spd_get_simplify_factor(this) result(x) Gets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real64) The scaling factor. procedure, public :: get_simplify_data => spd_get_simplify_data private pure function spd_get_simplify_data(this) result(x) Gets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors private pure function spd_get_data_dependent_colors(this) result(rst) Gets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if data-dependent colors should be used; else, false. procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size private pure function spd_get_use_var_point_size(this) result(rst) Gets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if variable size points should be used; else, false. procedure, public :: get_x => pd3d_get_x_data private pure function pd3d_get_x_data(this, index) result(x) Gets the requested X data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_x_data => pd3d_get_x_array private function pd3d_get_x_array(this) result(x) Gets the stored X data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_y => pd3d_get_y_data private pure function pd3d_get_y_data(this, index) result(x) Gets the requested Y data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_y_data => pd3d_get_y_array private function pd3d_get_y_array(this) result(x) Gets the stored Y data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_z => pd3d_get_z_data private pure function pd3d_get_z_data(this, index) result(x) Gets the requested Z data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_z_data => pd3d_get_z_array private function pd3d_get_z_array(this) result(x) Gets the stored Z data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_fill_curve => spd_set_filled private subroutine spd_set_filled(this, x) Sets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the curve should be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_simplification_factor => spd_set_simplify_factor private subroutine spd_set_simplify_factor(this, x) Sets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real64), intent(in) :: x The scaling factor. procedure, public :: set_simplify_data => spd_set_simplify_data private subroutine spd_set_simplify_data(this, x) Sets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors private subroutine spd_set_data_dependent_colors(this, x) Sets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if data-dependent colors should be used; else, false. procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size private subroutine spd_set_use_var_point_size(this, x) Sets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if variable size points should be used; else, false. procedure, public :: set_x => pd3d_set_x_data private subroutine pd3d_set_x_data(this, index, x) Sets the requested X data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point. procedure, public :: set_y => pd3d_set_y_data private subroutine pd3d_set_y_data(this, index, x) Sets the requested Y data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point. procedure, public :: set_z => pd3d_set_z_data private subroutine pd3d_set_z_data(this, index, x) Sets the requested Z data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point.","tags":"","loc":"type\\plot_data_3d.html"},{"title":"plot_data_2d – FPLOT ","text":"type, public, extends( scatter_plot_data ) :: plot_data_2d Defines a two-dimensional plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pd2d_clear_data private subroutine pd2d_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. generic, public :: define_data => pd2d_set_data_1 , pd2d_set_data_2 private subroutine pd2d_set_data_1(this, x, y, c, ps, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinate data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinate data. real(kind=real64), intent(in), optional, dimension(:) :: c An N-element array defining how color should vary with the \ncurrent colormap for each value. real(kind=real64), intent(in), optional, dimension(:) :: ps An N-element array defining the size of each data point. class( errors ), intent(inout), optional, target :: err An error-handling object. private subroutine pd2d_set_data_2(this, y, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinate data. This\ndata will be plotted against its own index. class( errors ), intent(inout), optional, target :: err An error-handling object. procedure, public :: get_axes_string => pd2d_get_axes_cmd private function pd2d_get_axes_cmd(this) result(x) Gets the GNUPLOT command string defining which axes the data\nis to be plotted against. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_color_data => pd2d_get_c_array private function pd2d_get_c_array(this) result(x) Gets the stored color scaling data array. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => spd_get_cmd public function spd_get_cmd (this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => pd2d_get_data_count private pure function pd2d_get_data_count(this) result(x) Gets the number of data points. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value integer(kind=int32) The number of data points. procedure, public :: get_data_string => pd2d_get_data_cmd private function pd2d_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data\nto plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => pd2d_get_draw_against_y2 private pure function pd2d_get_draw_against_y2(this) result(x) Gets a value determining if the data should be plotted against\nthe secondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value logical Returns true if the data should be plotted against the secondary\ny-axis; else, false to plot against the primary y-axis. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_fill_curve => spd_get_filled private pure function spd_get_filled(this) result(rst) Gets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the curve should be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_point_size_data => pd2d_get_ps_array private function pd2d_get_ps_array(this) result(x) Gets the stored point size data array. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_simplification_factor => spd_get_simplify_factor private pure function spd_get_simplify_factor(this) result(x) Gets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real64) The scaling factor. procedure, public :: get_simplify_data => spd_get_simplify_data private pure function spd_get_simplify_data(this) result(x) Gets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors private pure function spd_get_data_dependent_colors(this) result(rst) Gets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if data-dependent colors should be used; else, false. procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size private pure function spd_get_use_var_point_size(this) result(rst) Gets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if variable size points should be used; else, false. procedure, public :: get_x => pd2d_get_x_data private pure function pd2d_get_x_data(this, index) result(x) Gets the requested X data point. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_x_data => pd2d_get_x_array private function pd2d_get_x_array(this) result(x) Gets the stored X data array. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_y => pd2d_get_y_data private pure function pd2d_get_y_data(this, index) result(x) Gets the requested Y data point. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_y_data => pd2d_get_y_array private function pd2d_get_y_array(this) result(x) Gets the stored Y data array. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: pd2d_set_data_1 private subroutine pd2d_set_data_1(this, x, y, c, ps, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinate data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinate data. real(kind=real64), intent(in), optional, dimension(:) :: c An N-element array defining how color should vary with the \ncurrent colormap for each value. real(kind=real64), intent(in), optional, dimension(:) :: ps An N-element array defining the size of each data point. class( errors ), intent(inout), optional, target :: err An error-handling object. procedure, public :: pd2d_set_data_2 private subroutine pd2d_set_data_2(this, y, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinate data. This\ndata will be plotted against its own index. class( errors ), intent(inout), optional, target :: err An error-handling object. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => pd2d_set_draw_against_y2 private subroutine pd2d_set_draw_against_y2(this, x) Sets a value determining if the data should be plotted against\nthe secondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. logical, intent(in) :: x Set to true if the data should be plotted against the\nsecondary y-axis; else, false to plot against the primary y-axis. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_fill_curve => spd_set_filled private subroutine spd_set_filled(this, x) Sets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the curve should be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_simplification_factor => spd_set_simplify_factor private subroutine spd_set_simplify_factor(this, x) Sets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real64), intent(in) :: x The scaling factor. procedure, public :: set_simplify_data => spd_set_simplify_data private subroutine spd_set_simplify_data(this, x) Sets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors private subroutine spd_set_data_dependent_colors(this, x) Sets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if data-dependent colors should be used; else, false. procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size private subroutine spd_set_use_var_point_size(this, x) Sets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if variable size points should be used; else, false. procedure, public :: set_x => pd2d_set_x_data private subroutine pd2d_set_x_data(this, index, x) Sets the requested X data point. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point. procedure, public :: set_y => pd2d_set_y_data private subroutine pd2d_set_y_data(this, index, x) Sets the requested Y data point. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point.","tags":"","loc":"type\\plot_data_2d.html"},{"title":"windows_terminal – FPLOT ","text":"type, public, extends( terminal ) :: windows_terminal A Windows-specific terminal. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string private function term_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => wt_get_term_string private function wt_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( windows_terminal ), intent(in) :: this The windows_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\windows_terminal.html"},{"title":"latex_terminal – FPLOT ","text":"type, public, extends( file_terminal ) :: latex_terminal A LATEX terminal. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string private function fterm_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => tex_get_term_string private function tex_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( latex_terminal ), intent(in) :: this The latex_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\latex_terminal.html"},{"title":"plot_polar – FPLOT ","text":"type, public, extends( plot ) :: plot_polar Finalization Procedures final :: plr_clean_up private subroutine plr_clean_up(this) Cleans up resources held by the plot_polar object. Arguments Type Intent Optional Attributes Name type( plot_polar ), intent(inout) :: this The plot_polar object. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_autoscale => plr_get_autoscale private pure function plr_get_autoscale(this) result(rst) Gets a logical value determining if the axis should be \nautomatically scaled to fit the data. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value logical Returns true if the plot will autoscale; else, false. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => plr_get_cmd private function plr_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot_polar object. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_radial_limits => plr_get_limits private pure function plr_get_limits(this) result(rst) Gets the radial axis limits if autoscaling is inactive. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value real(kind=real64), (2) A 2-element array containing the minimum and maximum limit\nvalues in that order. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_theta_direction => plr_get_theta_direction private pure function plr_get_theta_direction(this) result(rst) Gets the direction. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value character(len=:), allocatable The direction. It is one of the following flags. POLAR_THETA_CCW POLAR_THETA_CW procedure, public :: get_theta_start_position => plr_get_theta_start private pure function plr_get_theta_start(this) result(rst) Gets the position for . Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value character(len=:), allocatable The starting position. It is one of the following flags. POLAR_THETA_BOTTOM POLAR_THETA_TOP POLAR_THETA_RIGHT POLAR_THETA_LEFT procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: initialize => plr_init private subroutine plr_init(this, term, fname, err) Initializes the plot_polar object. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: plr_push_data private subroutine plr_push_data(this, angle, radial, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. real(kind=real64), intent(in), dimension(:) :: angle The angular values. real(kind=real64), intent(in), dimension(size(angle)) :: radial The radial values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , plr_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine plr_push_data(this, angle, radial, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. real(kind=real64), intent(in), dimension(:) :: angle The angular values. real(kind=real64), intent(in), dimension(size(angle)) :: radial The radial values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_autoscale => plr_set_autoscale private subroutine plr_set_autoscale(this, x) Sets a logical value determining if the axis should be \nautomatically scaled to fit the data. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. logical, intent(in) :: x Set to true if the plot will autoscale; else, false. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_radial_limits => plr_set_limits private subroutine plr_set_limits(this, x) Sets the radial axis limits if autoscaling is inactive. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. real(kind=real64), intent(in) :: x (2) A 2-element array containing the minimum and maximum limit\nvalues in that order. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_theta_direction => plr_set_theta_direction private subroutine plr_set_theta_direction(this, x) Sets the direction. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. character(len=*), intent(in) :: x The direction. It is one of the following flags. POLAR_THETA_CCW POLAR_THETA_CW procedure, public :: set_theta_start_position => plr_set_theta_start private subroutine plr_set_theta_start(this, x) Sets the position for . Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. character(len=*), intent(in) :: x The starting position. It is one of the following flags. POLAR_THETA_BOTTOM POLAR_THETA_TOP POLAR_THETA_RIGHT POLAR_THETA_LEFT procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot_polar.html"},{"title":"png_terminal – FPLOT ","text":"type, public, extends( file_terminal ) :: png_terminal Defines a terminal used for producing PNG outputs. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string private function fterm_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => png_get_term_string private function png_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( png_terminal ), intent(in) :: this The png_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\png_terminal.html"},{"title":"plot_2d – FPLOT ","text":"type, public, extends( plot ) :: plot_2d A plot object defining a 2D plot. Finalization Procedures final :: p2d_clean_up private subroutine p2d_clean_up(this) Cleans up resources held by the plot_2d object. Arguments Type Intent Optional Attributes Name type( plot_2d ), intent(inout) :: this The plot_2d object. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => p2d_get_cmd private function p2d_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot_2d object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_jitter_overlap => p2d_get_jitter_overlap private pure function p2d_get_jitter_overlap(this) result(rst) Gets the jitter overalp. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value real(kind=real32) The jitter overlap. procedure, public :: get_jitter_spread => p2d_get_jitter_spread private pure function p2d_get_jitter_spread(this) result(rst) Gets the jitter horizontal spread. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value real(kind=real32) The jitter horizontal spread. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_square_axes => p2d_get_square_axes private pure function p2d_get_square_axes(this) result(rst) Gets a logical flag determining if the axes size should be squared\noff. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical Returns true if the axes are to be sized to a square; else,\nfalse. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_use_jittering => p2d_get_use_jitter private pure function p2d_get_use_jitter(this) result(rst) Gets a logical value determining if jittering should be used. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical True if jittering should be used; else, false. procedure, public :: get_use_y2_axis => p2d_get_use_y2 private pure function p2d_get_use_y2(this) result(x) Gets a flag determining if the secondary y-axis should be\ndisplayed. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical Returns true if the axis should be displayed; else, false. procedure, public :: get_x_axis => p2d_get_x_axis private function p2d_get_x_axis(this) result(ptr) Gets the x-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the x-axis object. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y2_axis => p2d_get_y2_axis private function p2d_get_y2_axis(this) result(ptr) Gets the secondary y-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the secondary y-axis object. procedure, public :: get_y_axis => p2d_get_y_axis private function p2d_get_y_axis(this) result(ptr) Gets the y-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the y-axis object. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: initialize => p2d_init private subroutine p2d_init(this, term, fname, err) Initializes the plot_2d object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: p2d_push_data private subroutine p2d_push_data(this, x, y, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , p2d_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine p2d_push_data(this, x, y, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_jitter_overlap => p2d_set_jitter_overlap private subroutine p2d_set_jitter_overlap(this, x) Sets the jitter overlap. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real32), intent(in) :: x The jitter overlap. procedure, public :: set_jitter_spread => p2d_set_jitter_spread private subroutine p2d_set_jitter_spread(this, x) Sets the jitter horizontal spread. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real32), intent(in) :: x The jitter horizontal spread. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_square_axes => p2d_set_square_axes private subroutine p2d_set_square_axes(this, x) Sets a logical flag determining if the axes size should be\nsquared off. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if the axes are to be sized to a square; else,\nfalse. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_use_jittering => p2d_set_use_jitter private subroutine p2d_set_use_jitter(this, x) Sets a logical value determining if jittering should be used. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if jittering should be used; else, false. procedure, public :: set_use_y2_axis => p2d_set_use_y2 private subroutine p2d_set_use_y2(this, x) Sets a flag determining if the secondary y-axis should be\ndisplayed. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if the axis should be displayed; else, false. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_axis_title => p2d_set_x_axis_title private subroutine p2d_set_x_axis_title(this, x) Sets the title associated with the plot's x-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y2_axis_title => p2d_set_y2_axis_title private subroutine p2d_set_y2_axis_title(this, x) Sets the title associated with the plot's secondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_axis_title => p2d_set_y_axis_title private subroutine p2d_set_y_axis_title(this, x) Sets the title associated with the plot's y-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot_2d.html"},{"title":"plot – FPLOT ","text":"type, public, extends( plot_object ) :: plot Defines the basic GNUPLOT plot. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => plt_get_cmd private function plt_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: initialize => plt_init private subroutine plt_init(this, term, fname, err) Initializes the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\nThe default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot.html"},{"title":"plot_label – FPLOT ","text":"type, public, extends( plot_object ) :: plot_label Defines a plot label. Type-Bound Procedures procedure, public :: get_angle => lbl_get_angle private pure function lbl_get_angle(this) result(x) Gets the angle of the label text, in degrees. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value real(kind=real32) The angle, in degrees. procedure, public :: get_command_string => lbl_get_cmd private function lbl_get_cmd(this) result(x) Gets the GNUPLOT command string for the label. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value character(len=:), allocatable The command string. procedure, public :: get_is_visible => lbl_get_is_visible private pure function lbl_get_is_visible(this) result(x) Gets a value determining if the label is to be drawn. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value logical Returns true if the label is to be drawn; else, false. procedure, public :: get_position => lbl_get_position private pure function lbl_get_position(this) result(x) Gets the position of the label in terms of plot coordinates. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value real(kind=real32), dimension(3) A 3-element array containing the X, Y, and Z position of the \nlabel. procedure, public :: get_text => lbl_get_txt private function lbl_get_txt(this) result(x) Gets the text displayed by the label. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value character(len=:), allocatable The text string to display. procedure, public :: set_angle => lbl_set_angle private subroutine lbl_set_angle(this, x) Sets the angle of the label text, in degrees. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(inout) :: this The plot_label object. real(kind=real32), intent(in) :: x The angle, in degrees. procedure, public :: set_is_visible => lbl_set_is_visible private subroutine lbl_set_is_visible(this, x) Sets a value determining if the label is to be drawn. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(inout) :: this The plot_label object. logical, intent(in) :: x Set to true if the label is to be drawn; else, false. procedure, public :: set_position => lbl_set_position private subroutine lbl_set_position(this, x) Sets the position of the label in terms of plot coordinates. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(inout) :: this The plot_label object. real(kind=real32), intent(in), dimension(3) :: x A 3-element array containing the X, Y, and Z position of the \nlabel. procedure, public :: set_text => lbl_set_txt private subroutine lbl_set_txt(this, x) Sets the text displayed by the label. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(inout) :: this The plot_label object. character(len=*), intent(in) :: x The text string to display.","tags":"","loc":"type\\plot_label.html"},{"title":"plot_data_histogram – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_histogram A container for plotting data in the form of a histogram. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdh_clear_data private subroutine pdh_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pdh_define_data private subroutine pdh_define_data(this, x, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. real(kind=real64), intent(in), dimension(:) :: x The data set to plot. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get => pdh_get_bin_data private subroutine pdh_get_bin_data(this, i, x, cnt) Gets the requested binned data. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. integer(kind=int32), intent(in) :: i The bin number to get. real(kind=real64), intent(out) :: x The center of the bin. integer(kind=int32), intent(out) :: cnt The number of items in the bin. procedure, public :: get_axes_string => pdh_get_axes_cmd private function pdh_get_axes_cmd(this) result(rst) Gets the GNUPLOT command string defining which axes the data is to be\nplotted against. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value character(len=:), allocatable The command string. procedure, public :: get_bin_count => pdh_get_bin_count private pure function pdh_get_bin_count(this) result(x) Gets the number of bins. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value integer(kind=int32) The bin count. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdh_get_cmd private function pdh_get_cmd(this) result(rst) Gets the GNUPLOT command string for this object. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => pdh_get_data_cmd private function pdh_get_data_cmd(this) result(rst) Gets the GNUPLOT command string defining the data for this object. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => pdh_get_use_y2 private pure function pdh_get_use_y2(this) result(rst) Gets a value determining if the data is to be plotted against the\nsecondary y axis. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value logical Returns true if the data is to be plotted against the secondary y \naxis; else, false for the primary y axis. procedure, public :: get_is_filled => pdh_get_is_filled private pure function pdh_get_is_filled(this) result(rst) Gets a value determining if each box is filled. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value logical Returns true if the boxes are filled; else, false for an empty box. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_maximum_value => pdh_get_max_x private pure function pdh_get_max_x(this) result(x) Gets the maximum data value. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value real(kind=real64) The maximum data value. procedure, public :: get_minimum_value => pdh_get_min_x private pure function pdh_get_min_x(this) result(x) Gets the minimum data value. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value real(kind=real64) The minimum data value. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_bin_count => pdh_set_bin_count private subroutine pdh_set_bin_count(this, x) Sets the bin count. For this property to have an effect, call before\ncalling the define_data subroutine or bin_data subroutine. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. integer(kind=int32), intent(in) :: x The bin count. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => pdh_set_use_y2 private subroutine pdh_set_use_y2(this, x) Sets a value determining if the data is to be plotted against the\nsecondary y axis. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. logical, intent(in) :: x Set to true if the data is to be plotted against the secondary y \naxis; else, false for the primary y axis. procedure, public :: set_is_filled => pdh_set_is_filled private subroutine pdh_set_is_filled(this, x) Sets a value determining if each box is filled. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. logical, intent(in) :: x Set to true if the boxes should be filled; else, false for an empty\nbox. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\plot_data_histogram.html"},{"title":"delaunay_tri_2d – FPLOT ","text":"type, public :: delaunay_tri_2d Provides a container for a 2D Delaunay triangulation. Type-Bound Procedures procedure, public :: create => d2d_init private subroutine d2d_init(this, x, y, err) Creates an unconstrained 2D Delaunay triangulation given a \nset of x-y points. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(inout) :: this The delaunay_tri_2d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of each\ndata point. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of each\ndata point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: find_triangle => d2d_get_tri_with_pt private pure function d2d_get_tri_with_pt(this, x, y) result(rst) Finds the triangle that contains the specified point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. real(kind=real64), intent(in) :: x The x-coordinate of the point. real(kind=real64), intent(in) :: y The y-coordinate of the point. Return Value integer(kind=int32) Returns the index of the triangle containing the specified\npoint. If no triangle contains the specified point, a value of\n-1 is returned. procedure, public :: get_indices => d2d_get_tris private pure function d2d_get_tris(this) result(rst) Gets a list of the indices of each triangle vertex. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32), allocatable, dimension(:,:) An N-by-3 matrix with each column containing the index of the\nvertex of each triangle where N is the number of triangles. procedure, public :: get_point_count => d2d_get_pt_count private pure function d2d_get_pt_count(this) result(rst) Gets the number of points in the triangulation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32) The number of points in the triangulation. procedure, public :: get_points_x => d2d_get_x_pts private pure function d2d_get_x_pts(this) result(rst) Gets the x-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value real(kind=real64), allocatable, dimension(:) An array of the x-coordinates of each point. procedure, public :: get_points_y => d2d_get_y_pts private pure function d2d_get_y_pts(this) result(rst) Gets the y-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value real(kind=real64), allocatable, dimension(:) An array of the y-coordinates of each point. procedure, public :: get_triangle_count => d2d_get_tri_count private pure function d2d_get_tri_count(this) result(rst) Gets the number of triangles in the triangulation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32) The number of triangles in the triangulation.","tags":"","loc":"type\\delaunay_tri_2d.html"},{"title":"plot_data_function – FPLOT ","text":"type, public, extends( line_plot_data ) :: plot_data_function Defines a function to plot. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdf_clear_data private subroutine pdf_clear_data(this) Clears the function from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pdf_define_data private subroutine pdf_define_data(this, f, fname, minX, maxX, name) Defines the function to plot. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. character(len=*), intent(in) :: f The function to plot (e.g. sin(x)). character(len=*), intent(in) :: fname The name of the function to plot (e.g. f(x)). real(kind=real64), intent(in), optional :: minX The minimum value to plot. If not supplied, this will default\nto a value of -1. real(kind=real64), intent(in), optional :: maxX The maximum x value to plot. If not supplied, this will default\nto a value of 1. character(len=*), intent(in), optional :: name An optional input that specifies the name that will be displayed\nin the legend. If nothing is supplied, the input string for \nparameter f will be utilized. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdf_get_cmd private function pdf_get_cmd(this) result(rst) Gets the GNUPLOT command string for this object. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => pdf_get_data_cmd private function pdf_get_data_cmd(this) result(rst) Gets the GNUPLOT command string defining the data for this object. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_function => pdf_get_function private pure function pdf_get_function(this) result(rst) Gets the function to plot. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value character(len=:), allocatable The function. procedure, public :: get_function_name => pdf_get_function_name private pure function pdf_get_function_name(this) result(rst) Gets the name of the function to plot (e.g. f(x), g(x), etc.). Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value character(len=:), allocatable The function name. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_maximum_x => pdf_get_max_x private pure function pdf_get_max_x(this) result(rst) Gets the maximum X plot range value. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value real(kind=real64) The value. procedure, public :: get_minimum_x => pdf_get_min_x private pure function pdf_get_min_x(this) result(rst) Gets the minimum X plot range value. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value real(kind=real64) The value. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_sample_count => pfd_get_sample_count private pure function pfd_get_sample_count(this) result(rst) Gets the number of times to sample the function. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value integer(kind=int32) The sample count. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_maximum_x => pdf_set_max_x private subroutine pdf_set_max_x(this, x) Sets the maximum X plot range value. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. real(kind=real64), intent(in) :: x The value. procedure, public :: set_minimum_x => pdf_set_min_x private subroutine pdf_set_min_x(this, x) Sets the minimum X plot range value. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. real(kind=real64), intent(in) :: x The value. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_sample_count => pfd_set_sample_count private subroutine pfd_set_sample_count(this, x) Sets the number of times to sample the function. This variable is \nglobal for all function plots as GNUPLOT does not allow inline\nsample modification currently. Hopefully this will change somewhere\ndown the road. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. integer(kind=int32), intent(in) :: x The sample count. Must be greater than 1.","tags":"","loc":"type\\plot_data_function.html"},{"title":"legend – FPLOT ","text":"type, public, extends( plot_object ) :: legend Defines a legend object. Type-Bound Procedures procedure, public :: get_command_string => leg_get_command_txt private function leg_get_command_txt(this) result(txt) Gets the command string defining the legend properties. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_draw_border => leg_get_box private pure function leg_get_box(this) result(x) Gets a value determining if the legend should have a border. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value logical True if the legend should have a border; else, false. procedure, public :: get_draw_inside_axes => leg_get_inside private pure function leg_get_inside(this) result(x) Gets a value determining if the legend should be drawn inside\nor outside the axes border. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value logical True to draw inside the axes border; else, false for outside. procedure, public :: get_horizontal_position => leg_get_horz_pos private pure function leg_get_horz_pos(this) result(x) Gets the horizontal position of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value character(len=:), allocatable The horizontal position of the legend (LEGEND_LEFT,\nLEGEND_CENTER, or LEGEND_RIGHT). procedure, public :: get_is_opaque => leg_get_opaque private pure function leg_get_opaque(this) result(rst) Gets a value determining if the legend is to be opaque. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value logical True if the legend is to be opaque; else, false. procedure, public :: get_is_visible => leg_get_visible private pure function leg_get_visible(this) result(x) Gets a value determining if the legend is visible. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value logical True if the legend is visible; else, false. procedure, public :: get_layout => leg_get_layout private pure function leg_get_layout(this) result(rst) Gets the layout of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value character(len=:), allocatable The layout type, either LEGEND_ARRANGE_VERTICALLY or \nLEGEND_ARRANGE_HORIZONTALLY. procedure, public :: get_vertical_position => leg_get_vert_pos private pure function leg_get_vert_pos(this) result(x) Gets the vertical position of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value character(len=:), allocatable The vertical position of the legend (LEGEND_TOP,\nLEGEND_CENTER, or LEGEND_BOTTOM). procedure, public :: set_draw_border => leg_set_box private subroutine leg_set_box(this, x) Sets a value determining if the legend should have a border. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. logical, intent(in) :: x True if the legend should have a border; else, false. procedure, public :: set_draw_inside_axes => leg_set_inside private subroutine leg_set_inside(this, x) Sets a value determining if the legend should be drawn inside\nor outside the axes border. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. logical, intent(in) :: x True to draw inside the axes border; else, false for outside. procedure, public :: set_horizontal_position => leg_set_horz_pos private subroutine leg_set_horz_pos(this, x) Sets the horizontal position of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. character(len=*), intent(in) :: x The horizontal position of the legend. The parameter must be\nset to one of the following: LEGEND_LEFT, LEGEND_CENTER, or\nLEGEND_RIGHT. If not, the default LEGEND_RIGHT will be used. procedure, public :: set_is_opaque => leg_set_opaque private subroutine leg_set_opaque(this, x) Sets a value determining if the legend is to be opaque. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. logical :: x True if the legend is to be opaque; else, false. procedure, public :: set_is_visible => leg_set_visible private subroutine leg_set_visible(this, x) Sets a value determining if the legend is visible. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. logical, intent(in) :: x True if the legend is visible; else, false. procedure, public :: set_layout => leg_set_layout private subroutine leg_set_layout(this, x) Sets the layout of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. character(len=*), intent(in) :: x The layout type, either LEGEND_ARRANGE_VERTICALLY or \nLEGEND_ARRANGE_HORIZONTALLY. procedure, public :: set_vertical_position => leg_set_vert_pos private subroutine leg_set_vert_pos(this, x) Sets the vertical position of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. character(len=*), intent(in) :: x The vertical position of the legend. The parameter must be\nset to one of the following: LEGEND_TOP, LEGEND_CENTER, or\nLEGEND_BOTTOM. If not, the default LEGEND_TOP will be used.","tags":"","loc":"type\\legend.html"},{"title":"errors – FPLOT ","text":"type, public :: errors Type-Bound Procedures procedure, public :: report_error public subroutine report_error (this, fcn, msg, code) Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: this character(len=*), intent(in) :: fcn character(len=*), intent(in) :: msg integer(kind=int32), intent(in) :: code","tags":"","loc":"type\\errors.html"},{"title":"surface_plot – FPLOT ","text":"type, public, extends( plot_3d ) :: surface_plot Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_allow_smoothing => surf_get_smooth private pure function surf_get_smooth(this) result(x) Gets a value determining if the plotted surfaces should be\nsmoothed. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value logical Returns true if the surface should be smoothed; else, false. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_azimuth => p3d_get_azimuth private pure function p3d_get_azimuth(this) result(x) Gets the plot azimuth angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real64) The azimuth angle, in degrees. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => surf_get_cmd private function surf_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot_3d\nobject. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value character(len=:), allocatable The command string. procedure, public :: get_coordinate_system => p3d_get_csys private pure function p3d_get_csys(this) result(rst) Gets a value determining the coordinate system. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The coordinate system ID, which must be one of the following. COORDINATES_CARTESIAN COORDINATES_CYLINDRICAL COORDINATES_SPHERICAL procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_elevation => p3d_get_elevation private pure function p3d_get_elevation(this) result(x) Gets the plot elevation angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real64) The elevation angle, in degrees. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_light_intensity => surf_get_light_intensity private pure function surf_get_light_intensity(this) result(x) Gets the ratio of the strength of the light source relative\nto the ambient light. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value real(kind=real32) The light intensity ratio. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_contours => surf_get_show_contours private pure function surf_get_show_contours(this) result(x) Gets a value determining if a contour plot should be drawn in\nconjunction with the surface plot. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value logical Returns true if the contour plot should be drawn; else, false to\nonly draw the surface. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_hidden => surf_get_show_hidden private pure function surf_get_show_hidden(this) result(x) Gets a value indicating if hidden lines should be shown. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value logical Returns true if hidden lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_z_major_grid => p3d_get_show_z_major_grid private pure function p3d_get_show_z_major_grid(this) result(x) Gets a value determining if the z-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid private pure function p3d_get_show_z_minor_grid(this) result(x) Gets a value determining if the z-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_specular_intensity => surf_get_specular_intensity private pure function surf_get_specular_intensity(this) result(x) Gets the ratio of the strength of the specular light source\nrelative to the ambient light. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value real(kind=real32) The specular light intensity ratio. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_transparency => surf_get_transparency private pure function surf_get_transparency(this) result(x) Gets a factor defining the transparency of plotted surfaces. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value real(kind=real32) A value existing on the set (0 1] defining the level of\ntransparency. A value of 1 indicates a fully opaque surface. procedure, public :: get_use_lighting => surf_get_use_lighting private pure function surf_get_use_lighting(this) result(x) Gets a value indicating if lighting, beyond the ambient\nlight source, is to be used. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value logical True if lighting should be used; else, false. procedure, public :: get_use_map_view => p3d_get_use_map_view private pure function p3d_get_use_map_view(this) result(rst) Gets a value determining if the view should be set to a 2D\nmap view. If true, the azimuth and elevation terms are ignored. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical Returns true if the map view will be used; else, false. procedure, public :: get_x_axis => p3d_get_x_axis private function p3d_get_x_axis(this) result(ptr) Gets the x-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the x-axis object. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_axis => p3d_get_y_axis private function p3d_get_y_axis(this) result(ptr) Gets the y-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the y-axis object. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_z_axis => p3d_get_z_axis private function p3d_get_z_axis(this) result(ptr) Gets the z-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the z-axis object. procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect private pure function p3d_get_z_axis_intersect(this) result(x) Gets a value determining if the z-axis should intersect the\nx-y plane. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical Returns true if the z-axis should intersect the x-y plane; else,\nfalse to allow the z-axis to float. procedure, public :: get_z_major_grid_color => p3d_get_z_major_grid_color private pure function p3d_get_z_major_grid_color(this) result(x) Gets the color of the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value type( color ) The color. procedure, public :: get_z_major_grid_line_style => p3d_get_z_major_grid_line_style private pure function p3d_get_z_major_grid_line_style(this) result(x) Gets the line style used for the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_z_major_grid_line_width => p3d_get_z_major_grid_line_width private pure function p3d_get_z_major_grid_line_width(this) result(x) Gets the width of the z-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real32) The line width. procedure, public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color private pure function p3d_get_z_minor_grid_color(this) result(x) Gets the color of the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value type( color ) The color. procedure, public :: get_z_minor_grid_line_style => p3d_get_z_minor_grid_line_style private pure function p3d_get_z_minor_grid_line_style(this) result(x) Gets the line style used for the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_z_minor_grid_line_width => p3d_get_z_minor_grid_line_width private pure function p3d_get_z_minor_grid_line_width(this) result(x) Gets the width of the z-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real32) The line width. procedure, public :: initialize => surf_init private subroutine surf_init(this, term, fname, err) Initializes the surface_plot object. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: p3d_push_data private subroutine p3d_push_data(this, x, y, z, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real64), intent(in), dimension(size(x)) :: z The z-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , p3d_push_data , surf_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine p3d_push_data(this, x, y, z, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real64), intent(in), dimension(size(x)) :: z The z-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. private subroutine surf_push_data(this, x, y, z) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real64), intent(in), dimension(:,:) :: x An M-by-N matrix containing the x-coordinate data. real(kind=real64), intent(in), dimension(size(x,1), size(x,2)) :: y An M-by-N matrix containing the y-coordinate data. real(kind=real64), intent(in), dimension(size(x,1), size(x,2)) :: z An M-by-N matrix containing the z-coordinate data. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_allow_smoothing => surf_set_smooth private subroutine surf_set_smooth(this, x) Sets a value determining if the plotted surfaces should be\nsmoothed. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. logical, intent(in) :: x Set to true if the surface should be smoothed; else, false. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_azimuth => p3d_set_azimuth private subroutine p3d_set_azimuth(this, x) Sets the plot azimuth angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in) :: x The azimuth angle, in degrees. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_coordinate_system => p3d_set_csys private subroutine p3d_set_csys(this, x) Sets a value determining the coordinate system. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The coordinate system ID, which must be one of the following. COORDINATES_CARTESIAN COORDINATES_CYLINDRICAL COORDINATES_SPHERICAL procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_elevation => p3d_set_elevation private subroutine p3d_set_elevation(this, x) Sets the plot elevation angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in) :: x The elevation angle, in degrees. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_light_intensity => surf_set_light_intensity private subroutine surf_set_light_intensity(this, x) Sets the ratio of the strength of the light source relative\nto the ambient light. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real32), intent(in) :: x The light intensity ratio. The value must exist in the\nset [0, 1]; else, it will be clipped to lie within the range. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_contours => surf_set_show_contours private subroutine surf_set_show_contours(this, x) Sets a value determining if a contour plot should be drawn in\nconjunction with the surface plot. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. logical, intent(in) :: x Set to true if the contour plot should be drawn; else, false to\nonly draw the surface. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_hidden => surf_set_show_hidden private subroutine surf_set_show_hidden(this, x) Sets a value indicating if hidden lines should be shown. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. logical, intent(in) :: x Set to true if hidden lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_z_major_grid => p3d_set_show_z_major_grid private subroutine p3d_set_show_z_major_grid(this, x) Sets a value determining if the z-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid private subroutine p3d_set_show_z_minor_grid(this, x) Sets a value determining if the z-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_specular_intensity => surf_set_specular_intensity private subroutine surf_set_specular_intensity(this, x) Sets the ratio of the strength of the specular light source\nrelative to the ambient light. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real32), intent(in) :: x The specular light intensity ratio. The value must exist in the \nset [0, 1]; else, it will be clipped to lie within the range. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_transparency => surf_set_transparency private subroutine surf_set_transparency(this, x) Sets a factor defining the transparency of plotted surfaces. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real32), intent(in) :: x A value existing on the set (0 1] defining the level of\ntransparency. A value of 1 indicates a fully opaque surface. Any values supplied outside of the set are clipped to fit within\n(0 1]. procedure, public :: set_use_lighting => surf_set_use_lighting private subroutine surf_set_use_lighting(this, x) Sets a value indicating if lighting, beyond the ambient\nlight source, is to be used. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. logical, intent(in) :: x True if lighting should be used; else, false. procedure, public :: set_use_map_view => p3d_set_use_map_view private subroutine p3d_set_use_map_view(this, x) Sets a value determining if the view should be set to a 2D\nmap view. If true, the azimuth and elevation terms are ignored. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x Seturns true if the map view will be used; else, false. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_axis_title => p3d_set_x_axis_title private subroutine p3d_set_x_axis_title(this, x) Sets the title associated with the plot's x-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_axis_title => p3d_set_y_axis_title private subroutine p3d_set_y_axis_title(this, x) Sets the title associated with the plot's y-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_z_axis_title => p3d_set_z_axis_title private subroutine p3d_set_z_axis_title(this, x) Sets the title associated with the plot's z-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_z_intersect_xy => p3d_set_z_axis_intersect private subroutine p3d_set_z_axis_intersect(this, x) Sets a value determining if the z-axis should intersect the\nx-y plane. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x Set to true if the z-axis should intersect the x-y plane; else,\nfalse to allow the z-axis to float. procedure, public :: set_z_major_grid_color => p3d_set_z_major_grid_color private subroutine p3d_set_z_major_grid_color(this, x) Sets the color of the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. type( color ), intent(in) :: x The color. procedure, public :: set_z_major_grid_line_style => p3d_set_z_major_grid_line_style private subroutine p3d_set_z_major_grid_line_style(this, x) Sets the line style used for the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_z_major_grid_line_width => p3d_set_z_major_grid_line_width private subroutine p3d_set_z_major_grid_line_width(this, x) Sets the width of the z-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color private subroutine p3d_set_z_minor_grid_color(this, x) Sets the color of the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. type( color ), intent(in) :: x The color. procedure, public :: set_z_minor_grid_line_style => p3d_set_z_minor_grid_line_style private subroutine p3d_set_z_minor_grid_line_style(this, x) Sets the line style used for the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_z_minor_grid_line_width => p3d_set_z_minor_grid_line_width private subroutine p3d_set_z_minor_grid_line_width(this, x) Sets the width of the z-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false. procedure, public :: surf_push_data private subroutine surf_push_data(this, x, y, z) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real64), intent(in), dimension(:,:) :: x An M-by-N matrix containing the x-coordinate data. real(kind=real64), intent(in), dimension(size(x,1), size(x,2)) :: y An M-by-N matrix containing the y-coordinate data. real(kind=real64), intent(in), dimension(size(x,1), size(x,2)) :: z An M-by-N matrix containing the z-coordinate data.","tags":"","loc":"type\\surface_plot.html"},{"title":"color – FPLOT ","text":"type, public :: color Describes an RGB color. Components Type Visibility Attributes Name Initial integer(kind=int32), public :: alpha = 0 The alpha component of the color (must be between 0 and 255).\nNotice, 0 is fully opaque and 255 is fully transparent. integer(kind=int32), public :: blue = 255 The blue component of the color (must be between 0 and 255). integer(kind=int32), public :: green = 0 The green component of the color (must be between 0 and 255). integer(kind=int32), public :: red = 0 The red component of the color (must be between 0 and 255). Type-Bound Procedures procedure, public, pass :: copy_from => clr_copy_from private subroutine clr_copy_from(this, clr) Copies another color to this color. Arguments Type Intent Optional Attributes Name class( color ), intent(inout) :: this The color object. class( color ), intent(in) :: clr The color to copy. procedure, public, pass :: rgb_to_hex_string => clr_rgb_to_hex_string private pure function clr_rgb_to_hex_string(this) result(txt) Returns the color in hexadecimal format ignoring any alpha channel. Arguments Type Intent Optional Attributes Name class( color ), intent(in) :: this The color object. Return Value character(len=6) A string containing the hexadecimal equivalent. procedure, public, pass :: to_hex_string => clr_to_hex_string private pure function clr_to_hex_string(this) result(txt) Returns the color in hexadecimal format. Arguments Type Intent Optional Attributes Name class( color ), intent(in) :: this The color object. Return Value character(len=8) A string containing the hexadecimal equivalent.","tags":"","loc":"type\\color.html"},{"title":"name_value_pair – FPLOT ","text":"type, public :: name_value_pair Defines a name-value pair. Components Type Visibility Attributes Name Initial character(len=:), public, allocatable :: name The name. real(kind=real64), public :: value The associated value.","tags":"","loc":"type\\name_value_pair.html"},{"title":"plot_axis – FPLOT ","text":"type, public, extends( plot_object ) :: plot_axis Defines a plot axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure( pa_get_string_result ), public, deferred :: get_id_string function pa_get_string_result(this) result(x) Prototype Retrieves a string from a plot_axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\plot_axis.html"},{"title":"x_axis – FPLOT ","text":"type, public, extends( plot_axis ) :: x_axis Defines an x-axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_id_string => xa_get_id private function xa_get_id(this) result(x) Gets the axis identification string. Arguments Type Intent Optional Attributes Name class( x_axis ), intent(in) :: this The x_axis object. Return Value character(len=:), allocatable The identification string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\x_axis.html"},{"title":"y2_axis – FPLOT ","text":"type, public, extends( plot_axis ) :: y2_axis Defines a secondary y-axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_id_string => y2a_get_id private function y2a_get_id(this) result(x) Gets the axis identification string. Arguments Type Intent Optional Attributes Name class( y2_axis ), intent(in) :: this The y2_axis object. Return Value character(len=:), allocatable The identification string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\y2_axis.html"},{"title":"y_axis – FPLOT ","text":"type, public, extends( plot_axis ) :: y_axis Defines a y-axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_id_string => ya_get_id private function ya_get_id(this) result(x) Gets the axis identification string. Arguments Type Intent Optional Attributes Name class( y_axis ), intent(in) :: this The y_axis object. Return Value character(len=:), allocatable The identification string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\y_axis.html"},{"title":"z_axis – FPLOT ","text":"type, public, extends( plot_axis ) :: z_axis Defines a z-axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_id_string => za_get_id private function za_get_id(this) result(x) Gets the axis identification string. Arguments Type Intent Optional Attributes Name class( z_axis ), intent(in) :: this The z_axis object. Return Value character(len=:), allocatable The identification string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\z_axis.html"},{"title":"surface_plot_data – FPLOT ","text":"type, public, extends( plot_data ) :: surface_plot_data Provides a three-dimensional surface plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => surfd_clear_data private subroutine surfd_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The surface_plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => surfd_set_data_1 private subroutine surfd_set_data_1(this, x, y, z, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. real(kind=real64), intent(in), dimension(:,:) :: x An M-by-N matrix containing the x-coordinate data. real(kind=real64), intent(in), dimension(:,:) :: y An M-by-N matrix containing the y-coordinate data. real(kind=real64), intent(in), dimension(:,:) :: z An M-by-N matrix containing the z-coordinate data. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_command_string => surfd_get_cmd private function surfd_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this surface_plot_data \nobject. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => surfd_get_data_cmd private function surfd_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data to plot. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_size => surfd_get_size private pure function surfd_get_size(this, dim) result(x) Gets the size of the stored data set. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: dim The dimension of interest. Notice, data is stored as a\n2D matrix (i.e. only 1 and 2 are valid inputs). Return Value integer(kind=int32) The size of the requested dimension. procedure, public :: get_use_wireframe => surfd_get_wireframe private pure function surfd_get_wireframe(this) result(x) Gets a value determining if a wireframe mesh should be displayed. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. Return Value logical Returns true if a wireframe mesh should be displayed; else, \nfalse to display a solid surface. procedure, public :: get_x => surfd_get_x private pure function surfd_get_x(this, i, j) result(x) Gets the requested X data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. Return Value real(kind=real64) The value. procedure, public :: get_y => surfd_get_y private pure function surfd_get_y(this, i, j) result(x) Gets the requested Y data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. Return Value real(kind=real64) The value. procedure, public :: get_z => surfd_get_z private pure function surfd_get_z(this, i, j) result(x) Gets the requested Z data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. Return Value real(kind=real64) The value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_use_wireframe => surfd_set_wireframe private subroutine surfd_set_wireframe(this, x) Sets a value determining if a wireframe mesh should be displayed. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. logical, intent(in) :: x Set to true if a wireframe mesh should be displayed; else,\nfalse to display a solid surface. procedure, public :: set_x => surfd_set_x private subroutine surfd_set_x(this, i, j, x) Sets the requested X data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. real(kind=real64), intent(in) :: x The value. procedure, public :: set_y => surfd_set_y private subroutine surfd_set_y(this, i, j, x) Sets the requested Y data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. real(kind=real64), intent(in) :: x The value. procedure, public :: set_z => surfd_set_z private subroutine surfd_set_z(this, i, j, x) Sets the requested Z data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. real(kind=real64), intent(in) :: x The value.","tags":"","loc":"type\\surface_plot_data.html"},{"title":"qt_terminal – FPLOT ","text":"type, public, extends( terminal ) :: qt_terminal Defines a terminal that utilizes QT. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string private function term_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => qt_get_term_string private function qt_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( qt_terminal ), intent(in) :: this The qt_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\qt_terminal.html"},{"title":"wxt_terminal – FPLOT ","text":"type, public, extends( terminal ) :: wxt_terminal A WXT terminal. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string private function term_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => wxt_get_term_string private function wxt_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( wxt_terminal ), intent(in) :: this The wxt_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\wxt_terminal.html"},{"title":"multiplot – FPLOT ","text":"type, public, extends( plot_object ) :: multiplot Defines a multi-plot layout. Components Type Visibility Attributes Name Initial class( terminal ), public, pointer :: m_terminal => null() The GNUPLOT terminal object to target. Finalization Procedures final :: mp_clean private subroutine mp_clean(this) Cleans up resources held by the multiplot object. Arguments Type Intent Optional Attributes Name type( multiplot ), intent(inout) :: this The multiplot object. Type-Bound Procedures procedure, public :: draw => mp_draw private subroutine mp_draw(this, persist, err) Launches GNUPLOT and draws the multiplot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false\nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get => mp_get private function mp_get(this, i, j) result(x) Gets the requested plot object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. integer(kind=int32), intent(in) :: i The row index of the plot to retrieve. integer(kind=int32), intent(in) :: j The column index of the plot to retrieve. Return Value class( plot ), pointer A pointer to the plot object. procedure, public :: get_column_count => mp_get_cols private pure function mp_get_cols(this) result(x) Gets the number of columns of plots. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value integer(kind=int32) The column count. procedure, public :: get_command_string => mp_get_command private function mp_get_command(this) result(x) Gets the GNUPLOT commands for this object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value character(len=:), allocatable The command string. procedure, public :: get_font_name => mp_get_font private function mp_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => mp_get_font_size private function mp_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value integer(kind=int32) The font size. procedure, public :: get_plot_count => mp_get_count private pure function mp_get_count(this) result(x) Gets the total number of plots. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value integer(kind=int32) The plot count. procedure, public :: get_row_count => mp_get_rows private pure function mp_get_rows(this) result(x) Gets the number of rows of plots. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value integer(kind=int32) The row count. procedure, public :: get_terminal => mp_get_term private function mp_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value class( terminal ), pointer A pointer to the terminal object. procedure, public :: get_title => mp_get_title private function mp_get_title(this) result(x) Gets the multiplot's title. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value character(len=:), allocatable The title. procedure, public :: initialize => mp_init private subroutine mp_init(this, m, n, term, width, height, fname, err) Initializes the multiplot object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. integer(kind=int32), intent(in) :: m The number of rows of plots. integer(kind=int32), intent(in) :: n The number of columns of plots. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal. The \ndefault terminal is a WXT terminal. The acceptable inputs are: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF integer(kind=int32), intent(in), optional :: width Optionally, the width of the plot window. integer(kind=int32), intent(in), optional :: height Optionally, the height of the plot window. character(len=*), intent(in), optional :: fname A filename to associate with terminals that print to file. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => mp_has_title private pure function mp_has_title(this) result(x) Gets a value determining if a title has been defined for the\nmultiplot object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value logical Returns true if a title has been defined for this multiplot; \nelse, returns false. procedure, public :: save_file => mp_save private subroutine mp_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => mp_set private subroutine mp_set(this, i, j, x) Replaces the specified plot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. integer(kind=int32), intent(in) :: i The row index of the plot to replace. integer(kind=int32), intent(in) :: j The column index of the plot to replace. class( plot ), intent(in) :: x The new plot. procedure, public :: set_font_name => mp_set_font private subroutine mp_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => mp_set_font_size private subroutine mp_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. integer(kind=int32), intent(in) :: x The font size. procedure, public :: set_title => mp_set_title private subroutine mp_set_title(this, x) Sets the multiplot's title. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. character(len=*), intent(in) :: x The title. procedure, public :: set_window_size => mp_set_window_size private subroutine mp_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height.","tags":"","loc":"type\\multiplot.html"},{"title":"plot_object – FPLOT ","text":"type, public :: plot_object The base type for all plot objects. Type-Bound Procedures procedure( get_string_result ), public, deferred :: get_command_string function get_string_result(this) result(x) Prototype Returns a string from a plot_object. Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:), allocatable The result string.","tags":"","loc":"type\\plot_object.html"},{"title":"plot_data_error_bars – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_error_bars Defines a 2D error-bar based data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pde_clear_data private subroutine pde_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. generic, public :: define_x_error_data => pde_define_x_err , pde_define_x_err_lim private subroutine pde_define_x_err(this, x, y, xerr, err) Defines the x error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xerr An N-element array containing the x errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pde_define_x_err_lim(this, x, y, xmin, xmax, err) Defines the x error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xmin An N-element array containing the minimum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: xmax An N-element array containing the maximum x values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. generic, public :: define_xy_error_data => pde_define_xy_err , pde_define_xy_err_lim private subroutine pde_define_xy_err(this, x, y, xerr, yerr, err) Defines x and y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xerr An N-element array containing the x errors at each data point. real(kind=real64), intent(in), dimension(:) :: yerr An N-element array containing the y errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pde_define_xy_err_lim(this, x, y, xmin, xmax, ymin, ymax, err) Defines the x and y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xmin An N-element array containing the minimum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: xmax An N-element array containing the maximum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymin An N-element array containing the minimum y values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymax An N-element array containing the maximum x values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. generic, public :: define_y_error_data => pde_define_y_err , pde_define_y_err_lim private subroutine pde_define_y_err(this, x, y, yerr, err) Defines the y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: yerr An N-element array containing the y errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pde_define_y_err_lim(this, x, y, ymin, ymax, err) Defines the y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: ymin An N-element array containing the minimum y values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymax An N-element array containing the maximum y values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pde_get_cmd private function pde_get_cmd(this) result(cmd) Gets the appropriate GNUPLOT command string for the object. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => pde_get_count private pure function pde_get_count(this) result(x) Gets the number of stored data points. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value integer(kind=int32) The number of data points. procedure, public :: get_data_string => pde_get_data_cmd private function pde_get_data_cmd(this) result(cmd) Gets the appropriate GNUPLOT commands to plot the data itself. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_width => pde_get_line_width private pure function pde_get_line_width(this) result(x) Gets the line width. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value real(kind=real32) The line width. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_plot_x_error_bars => pde_get_plot_x_err private pure function pde_get_plot_x_err(this) result(x) Checks to see if the x error bar data has been defined, and as\na result, if the x error data is to be plotted. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value logical Returns true if the x error bars are to be plotted; else, false. procedure, public :: get_plot_y_error_bars => pde_get_plot_y_err private pure function pde_get_plot_y_err(this) result(x) Checks to see if the y error bar data has been defined, and as\na result, if the x error data is to be plotted. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value logical Returns true if the y error bars are to be plotted; else, false. procedure, public :: get_use_error_box => pde_get_box private pure function pde_get_box(this) result(x) Checks to see if the x and y error boxes should be utilized. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value logical Returns true if the error boxes are to be plotted; else,\nfalse. Notice, the error boxes are only utilized if there is \nboth x and y error data defined, regardless of the value of this \nproperty. procedure, public :: get_use_range => pde_get_use_range private pure function pde_get_use_range(this) result(x) Gets a value determining if a defined range is being used\nto define the error bar extremes. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value logical True if a defined range is being used; else, false. procedure, public :: pde_define_x_err private subroutine pde_define_x_err(this, x, y, xerr, err) Defines the x error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xerr An N-element array containing the x errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_x_err_lim private subroutine pde_define_x_err_lim(this, x, y, xmin, xmax, err) Defines the x error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xmin An N-element array containing the minimum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: xmax An N-element array containing the maximum x values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_xy_err private subroutine pde_define_xy_err(this, x, y, xerr, yerr, err) Defines x and y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xerr An N-element array containing the x errors at each data point. real(kind=real64), intent(in), dimension(:) :: yerr An N-element array containing the y errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_xy_err_lim private subroutine pde_define_xy_err_lim(this, x, y, xmin, xmax, ymin, ymax, err) Defines the x and y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xmin An N-element array containing the minimum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: xmax An N-element array containing the maximum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymin An N-element array containing the minimum y values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymax An N-element array containing the maximum x values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_y_err private subroutine pde_define_y_err(this, x, y, yerr, err) Defines the y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: yerr An N-element array containing the y errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_y_err_lim private subroutine pde_define_y_err_lim(this, x, y, ymin, ymax, err) Defines the y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: ymin An N-element array containing the minimum y values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymax An N-element array containing the maximum y values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_width => pde_set_line_width private subroutine pde_set_line_width(this, x) Sets the line width. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_use_error_box => pde_set_box private subroutine pde_set_box(this, x) Deterimines if the x and y error boxes should be utilized. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. logical, intent(in) :: x Set to true if the error boxes are to be plotted; else,\nfalse. Notice, the error boxes are only utilized if there is \nboth x and y error data defined, regardless of the value of this \nproperty.","tags":"","loc":"type\\plot_data_error_bars.html"},{"title":"colormap – FPLOT ","text":"type, public, extends( plot_object ) :: colormap A colormap object for a surface plot. Type-Bound Procedures procedure( cm_get_string_result ), public, deferred :: get_color_string function cm_get_string_result(this) result(x) Prototype Retrieves a string result from a colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The string. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\colormap.html"},{"title":"cool_colormap – FPLOT ","text":"type, public, extends( colormap ) :: cool_colormap Defines a colormap consisting of \"cool\" colors. Type-Bound Procedures procedure, public :: get_color_string => ccm_get_clr private function ccm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( cool_colormap ), intent(in) :: this The cool_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\cool_colormap.html"},{"title":"custom_colormap – FPLOT ","text":"type, public, extends( colormap ) :: custom_colormap Defines a custom colormap that utilizes the FORCOLORMAP library\nto provide the map. Finalization Procedures final :: custom_final private subroutine custom_final(this) Arguments Type Intent Optional Attributes Name type( custom_colormap ), intent(inout) :: this The custom_colormap object. Type-Bound Procedures procedure, public :: get_color_string => custom_get_clr private function custom_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( custom_colormap ), intent(in) :: this The custom_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colormap => custom_get private function custom_get(this) result(rst) Gets a pointer to the FORCOLORMAP colormap object. Arguments Type Intent Optional Attributes Name class( custom_colormap ), intent(in) :: this The custom_colormap object. Return Value class(cmap), pointer A pointer to the FORCOLORMAP colormap object. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_colormap => custom_set private subroutine custom_set(this, map, err) Sets the FORCOLORMAP colormap object. Arguments Type Intent Optional Attributes Name class( custom_colormap ), intent(inout) :: this The custom_colormap object. class(cmap), intent(in) :: map The FORCOLORMAP colormap object. The custom_colormap object \nstores a copy of this object; therefore, any changes made to \nx after calls to this routine will not impact the behavior of \nthe custom_colormap object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\custom_colormap.html"},{"title":"earth_colormap – FPLOT ","text":"type, public, extends( colormap ) :: earth_colormap Defines an earthy-colored colormap. Type-Bound Procedures procedure, public :: get_color_string => ecm_get_clr private function ecm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( earth_colormap ), intent(in) :: this The earth_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\earth_colormap.html"},{"title":"grey_colormap – FPLOT ","text":"type, public, extends( colormap ) :: grey_colormap Defines a grey-scaled colormap. Type-Bound Procedures procedure, public :: get_color_string => gcm_get_clr private function gcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( grey_colormap ), intent(in) :: this The grey_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\grey_colormap.html"},{"title":"hot_colormap – FPLOT ","text":"type, public, extends( colormap ) :: hot_colormap Defines a colormap consisting of \"hot\" colors. Type-Bound Procedures procedure, public :: get_color_string => hcm_get_clr private function hcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( hot_colormap ), intent(in) :: this The hot_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\hot_colormap.html"},{"title":"parula_colormap – FPLOT ","text":"type, public, extends( colormap ) :: parula_colormap Defines a colormap equivalent to the MATLAB parula colormap. Type-Bound Procedures procedure, public :: get_color_string => pcm_get_clr private function pcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( parula_colormap ), intent(in) :: this The parula_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\parula_colormap.html"},{"title":"rainbow_colormap – FPLOT ","text":"type, public, extends( colormap ) :: rainbow_colormap Defines a rainbow colormap. Type-Bound Procedures procedure, public :: get_color_string => rcm_get_clr private function rcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( rainbow_colormap ), intent(in) :: this The rainbow_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\rainbow_colormap.html"},{"title":"svg_terminal – FPLOT ","text":"type, public, extends( file_terminal ) :: svg_terminal An SVG terminal. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string private function fterm_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => svg_get_term_string private function svg_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( svg_terminal ), intent(in) :: this The svg_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\svg_terminal.html"},{"title":"delaunay_tri_surface – FPLOT ","text":"type, public, extends( delaunay_tri_2d ) :: delaunay_tri_surface Provides a type describing a triangulated surface. Type-Bound Procedures procedure, public :: create => d2d_init private subroutine d2d_init(this, x, y, err) Creates an unconstrained 2D Delaunay triangulation given a \nset of x-y points. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(inout) :: this The delaunay_tri_2d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of each\ndata point. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of each\ndata point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: define_function_values => dts_define_fcn private subroutine dts_define_fcn(this, z, err) Defines the function values that correspond to the x and y\ndata points. Arguments Type Intent Optional Attributes Name class( delaunay_tri_surface ), intent(inout) :: this The delaunay_tri_surface object. real(kind=real64), intent(in), dimension(:) :: z An N-element array containing the function values for\neach x and y coordinate. Notice, the x and y coordinates must \nalready be defined prior to calling this routine. class( errors ), intent(inout), optional, target :: err An error handling object. generic, public :: evaluate => dts_interp_1, dts_interp_2 private pure function dts_interp_1(this, x, y) result(z) Evaluates the function at the requested point by means of \nlinear interpolation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_surface ), intent(in) :: this The delaunay_tri_surface object. real(kind=real64), intent(in) :: x The x-coordinate at which to evaluate the function. real(kind=real64), intent(in) :: y The y-coordinate at which to evaluate the function. Return Value real(kind=real64) The function value. If the point (x, y) does not lie within the \nrange of defined values, then a value of NaN is returned. private pure function dts_interp_2(this, x, y) result(z) Evaluates the function at the requested point by means of \nlinear interpolation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_surface ), intent(in) :: this The delaunay_tri_surface object. real(kind=real64), intent(in), dimension(:) :: x The x data coordinates. real(kind=real64), intent(in), dimension(:) :: y The x data coordinates. Return Value real(kind=real64), allocatable, dimension(:) The interpolated z coordinate points. If the point (x, y) does \nnot lie within the range of defined values, then a value of NaN \nis returned. procedure, public :: find_triangle => d2d_get_tri_with_pt private pure function d2d_get_tri_with_pt(this, x, y) result(rst) Finds the triangle that contains the specified point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. real(kind=real64), intent(in) :: x The x-coordinate of the point. real(kind=real64), intent(in) :: y The y-coordinate of the point. Return Value integer(kind=int32) Returns the index of the triangle containing the specified\npoint. If no triangle contains the specified point, a value of\n-1 is returned. procedure, public :: get_indices => d2d_get_tris private pure function d2d_get_tris(this) result(rst) Gets a list of the indices of each triangle vertex. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32), allocatable, dimension(:,:) An N-by-3 matrix with each column containing the index of the\nvertex of each triangle where N is the number of triangles. procedure, public :: get_point_count => d2d_get_pt_count private pure function d2d_get_pt_count(this) result(rst) Gets the number of points in the triangulation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32) The number of points in the triangulation. procedure, public :: get_points_x => d2d_get_x_pts private pure function d2d_get_x_pts(this) result(rst) Gets the x-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value real(kind=real64), allocatable, dimension(:) An array of the x-coordinates of each point. procedure, public :: get_points_y => d2d_get_y_pts private pure function d2d_get_y_pts(this) result(rst) Gets the y-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value real(kind=real64), allocatable, dimension(:) An array of the y-coordinates of each point. procedure, public :: get_points_z => dts_get_z private pure function dts_get_z(this) result(rst) Gets the z-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_surface ), intent(in) :: this The delaunay_tri_surface object. Return Value real(kind=real64), allocatable, dimension(:) An array of the z-coordinates of each point. procedure, public :: get_triangle_count => d2d_get_tri_count private pure function d2d_get_tri_count(this) result(rst) Gets the number of triangles in the triangulation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32) The number of triangles in the triangulation.","tags":"","loc":"type\\delaunay_tri_surface.html"},{"title":"plot_arrow – FPLOT ","text":"type, public, extends( plot_object ) :: plot_arrow Defines an arrow that can be drawn on a plot. Type-Bound Procedures procedure, public :: get_color => par_get_color private pure function par_get_color(this) result(rst) Gets the color of the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value type( color ) The color. procedure, public :: get_command_string => par_get_cmd private function par_get_cmd(this) result(rst) Returns the appropriate GNUPLOT command string to establish appropriate \nparameters. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_head_angle => par_get_head_angle private pure function par_get_head_angle(this) result(rst) Gets the angle of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32) The angle, in degrees. procedure, public :: get_head_back_angle => par_get_head_back_angle private pure function par_get_head_back_angle(this) result(rst) Gets the angle of the back of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32) The angle, in degrees. procedure, public :: get_head_fill => par_get_fill private pure function par_get_fill(this) result(rst) Gets a flag denoting the head fill type. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value integer(kind=int32) The flag denoting head fill. procedure, public :: get_head_location => par_get_head private pure function par_get_head(this) result(rst) Gets the coordinates of the arrow's head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32), dimension(3) A 3-element array containing the x, y, and z coordinates of the\narrow's head. procedure, public :: get_head_size => par_get_head_size private pure function par_get_head_size(this) result(rst) Gets the size of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32) The head size. procedure, public :: get_head_type => par_get_head_type private pure function par_get_head_type(this) result(rst) Gets the type of arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value integer(kind=int32) The arrow head type. procedure, public :: get_is_visible => par_get_is_visible private pure function par_get_is_visible(this) result(rst) Gets a value determining if the arrow is visible. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value logical True if the arrow is visible; else, false. procedure, public :: get_line_style => par_get_line_style private pure function par_get_line_style(this) result(rst) Gets the line style used to draw the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value integer(kind=int32) The line style. procedure, public :: get_line_width => par_get_line_width private pure function par_get_line_width(this) result(rst) Gets the width of the lines used to draw the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32) The width of the line. procedure, public :: get_move_to_front => par_get_move_to_front private pure function par_get_move_to_front(this) result(rst) Gets a value determining if the arrow should be moved to the front. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value logical True if the arrow should be moved to the front; else, false. procedure, public :: get_tail_location => par_get_tail private pure function par_get_tail(this) result(rst) Gets the coordinates of the arrow's tail. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32), dimension(3) A 3-element array containing the x, y, and z coordinates of the \narrow's tail. procedure, public :: get_use_default_size => par_get_use_default_size private pure function par_get_use_default_size(this) result(rst) Gets a value determining if arrow head sizing defaults should be used. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value logical True if the defaults should be used; else, false. procedure, public :: set_color => par_set_color private subroutine par_set_color(this, x) Sets the color of the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. type( color ), intent(in) :: x The color. procedure, public :: set_head_angle => par_set_head_angle private subroutine par_set_head_angle(this, x) Sets the angle of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The angle, in degrees. procedure, public :: set_head_back_angle => par_set_head_back_angle private subroutine par_set_head_back_angle(this, x) Sets the angle of the back of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The angle, in degrees. procedure, public :: set_head_fill => par_set_fill private subroutine par_set_fill(this, x) Sets a flag denoting the head fill type. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. integer(kind=int32), intent(in) :: x The flag denoting head fill. It must be one of the following \nconstants. ARROW_FILLED ARROW_EMPTY ARROW_NO_BORDER ARROW_NO_FILL If the value is not one of the above, the command is ignored. generic, public :: set_head_location => par_set_head_1, par_set_head_2, par_set_head_3 private subroutine par_set_head_1(this, x) Sets the location of the arrow's head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x (3) A 3-element array containing the x, y, and z coordinates of the\narrow's head. private subroutine par_set_head_2(this, x, y) Sets the location of the arrow's head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The x-coordinate of the arrow's head. real(kind=real32), intent(in) :: y The y-coordinate of the arrow's head. private subroutine par_set_head_3(this, x, y, z) Sets the location of the arrow's head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The x-coordinate of the arrow's head. real(kind=real32), intent(in) :: y The y-coordinate of the arrow's head. real(kind=real32), intent(in) :: z The z-coordinate of the arrow's head. procedure, public :: set_head_size => par_set_head_size private subroutine par_set_head_size(this, x) Sets the size of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The head size. procedure, public :: set_head_type => par_set_head_type private subroutine par_set_head_type(this, x) Sets the type of arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. integer(kind=int32), intent(in) :: x The arrow head type. It must be one of the following constants. ARROW_HEAD ARROW_BACKHEAD ARROW_HEADS ARROW_NO_HEAD If the value is not one of the above, the command is ignored. procedure, public :: set_is_visible => par_set_is_visible private subroutine par_set_is_visible(this, x) Sets a value determining if the arrow is visible. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. logical, intent(in) :: x True if the arrow is visible; else, false. procedure, public :: set_line_style => par_set_line_style private subroutine par_set_line_style(this, x) Sets the line style used to draw the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. integer(kind=int32), intent(in) :: x The line style. The value must be one of the following. LINE_SOLID LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED If the value is not one of the above, the command is ignored. procedure, public :: set_line_width => par_set_line_width private subroutine par_set_line_width(this, x) Sets the width of the lines used to draw the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The width of the line. procedure, public :: set_move_to_front => par_set_move_to_front private subroutine par_set_move_to_front(this, x) Sets a value determining if the arrow should be moved to the front. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. logical, intent(in) :: x True if the arrow should be moved to the front; else, false. generic, public :: set_tail_location => par_set_tail_1, par_set_tail_2, par_set_tail_3 private subroutine par_set_tail_1(this, x) Sets the coordinates of the arrow's tail. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x (3) A 3-element array containing the x, y, and z coordinates of the \narrow's tail. private subroutine par_set_tail_2(this, x, y) Sets the coordinates of the arrow's tail. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The x-coordinate of the arrow's tail. real(kind=real32), intent(in) :: y !! The y-coordinate of the arrow's tail. private subroutine par_set_tail_3(this, x, y, z) Sets the coordinates of the arrow's tail. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The x-coordinate of the arrow's tail. real(kind=real32), intent(in) :: y The y-coordinate of the arrow's tail. real(kind=real32), intent(in) :: z The z-coordinate of the arrow's tail. procedure, public :: set_use_default_size => par_set_use_default_size private subroutine par_set_use_default_size(this, x) Sets a value determining if arrow head sizing defaults should be used. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. logical, intent(in) :: x True if the defaults should be used; else, false.","tags":"","loc":"type\\plot_arrow.html"},{"title":"correlation_plot – FPLOT ","text":"type, public, extends( plot_object ) :: correlation_plot Defines a multiplot arrangement designed to illustrate correlation\nbetween data sets. Type-Bound Procedures procedure, public :: draw => cp_draw private subroutine cp_draw(this, persist, err) Launches GNUPLOT and draws the correlation_plot per the current \nstate of the command list. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false\nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get => cp_get private function cp_get(this, i, j) result(x) Gets the requested plot object. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. integer(kind=int32), intent(in) :: i The row index of the plot to retrieve. integer(kind=int32), intent(in) :: j The column index of the plot to retrieve. Return Value class( plot ), pointer A pointer to the plot object. procedure, public :: get_column_count => cp_get_cols private pure function cp_get_cols(this) result(x) Gets the number of columns of plots. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value integer(kind=int32) The column count. procedure, public :: get_command_string => cp_get_command private function cp_get_command(this) result(x) Gets the GNUPLOT commands for this object. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value character(len=:), allocatable The command string. procedure, public :: get_font_name => cp_get_font private function cp_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => cp_get_font_size private function cp_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value integer(kind=int32) The font size. procedure, public :: get_plot_count => cp_get_count private pure function cp_get_count(this) result(x) Gets the total number of plots. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value integer(kind=int32) The plot count. procedure, public :: get_row_count => cp_get_rows private pure function cp_get_rows(this) result(x) Gets the number of rows of plots. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value integer(kind=int32) The row count. procedure, public :: get_terminal => cp_get_term private function cp_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value class( terminal ), pointer A pointer to the terminal object. procedure, public :: initialize => cp_init private subroutine cp_init(this, x, labels, term, width, height, err) Initializes the correlation_plot object. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(inout) :: this The correlation_plot object. real(kind=real64), intent(in), dimension(:,:) :: x The data to plot with each column representing a data set. type(string), intent(in), optional, dimension(:) :: labels An optional array containing a label to associate with each\ndata set in x. If supplied, this array must have the same length\nas x has columns. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal. The \ndefault terminal is a WXT terminal. The acceptable inputs are: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF integer(kind=int32), intent(in), optional :: width Optionally, the width of the plot window. integer(kind=int32), intent(in), optional :: height Optionally, the height of the plot window. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => cp_save private subroutine cp_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_font_name => cp_set_font private subroutine cp_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(inout) :: this The correlation_plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => cp_set_font_size private subroutine cp_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(inout) :: this The correlation_plot object. integer(kind=int32), intent(in) :: x The font size.","tags":"","loc":"type\\correlation_plot.html"},{"title":"filled_plot_data – FPLOT ","text":"type, public, extends( plot_data_colored ) :: filled_plot_data Defines a two-dimensional filled plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => fpd_clear_data private subroutine fpd_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(inout) :: this The filled_plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => fpd_define_data private subroutine fpd_define_data(this, x, y, yc, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(inout) :: this The filled_plot_data object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinate data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinate data. real(kind=real64), intent(in), dimension(:) :: yc An N-element array containing the constraining curve y \ncoordinate data. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_axes_string => fpd_get_axes_cmd private function fpd_get_axes_cmd(this) result(x) Gets the GNUPLOT command string defining which axes the data\nis to be plotted against. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(in) :: this The filled_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => fpd_get_cmd private function fpd_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this\nfilled_plot_data object. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(in) :: this The filled_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => fpd_get_data_cmd private function fpd_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data to plot. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(in) :: this The filled_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => fpd_get_draw_against_y2 private pure function fpd_get_draw_against_y2(this) result(x) Gets a value determining if the data should be plotted against\nthe secondary y-axis. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(in) :: this The filled_plot_data object. Return Value logical Returns true if the data should be plotted against the secondary\ny-axis; else, false to plot against the primary y-axis. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => fpd_set_draw_against_y2 private subroutine fpd_set_draw_against_y2(this, x) Sets a value determining if the data should be plotted against\nthe secondary y-axis. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(inout) :: this The filled_plot_data object. logical, intent(in) :: x Set to true if the data should be plotted against the secondary\ny-axis; else, false to plot against the primary y-axis. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\filled_plot_data.html"},{"title":"plot_bar – FPLOT ","text":"type, public, extends( plot_2d ) :: plot_bar Defines a 2D plot tailored towards bar plotting. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_bar_width => pb_get_bar_width private pure function pb_get_bar_width(this) result(x) Gets the bar width scaling factor. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(in) :: this The plot_bar object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => pb_get_cmd private function pb_get_cmd(this) result(x) Gets the GNUPLOT commands required to draw the plot. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(in) :: this The plot_bar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_jitter_overlap => p2d_get_jitter_overlap private pure function p2d_get_jitter_overlap(this) result(rst) Gets the jitter overalp. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value real(kind=real32) The jitter overlap. procedure, public :: get_jitter_spread => p2d_get_jitter_spread private pure function p2d_get_jitter_spread(this) result(rst) Gets the jitter horizontal spread. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value real(kind=real32) The jitter horizontal spread. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_spacing => pb_get_spacing private pure function pb_get_spacing(this) result(rst) Gets the spacing between clusters of data sets. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(in) :: this The [[plot+bar]] object. Return Value integer(kind=int32) The spacing. procedure, public :: get_square_axes => p2d_get_square_axes private pure function p2d_get_square_axes(this) result(rst) Gets a logical flag determining if the axes size should be squared\noff. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical Returns true if the axes are to be sized to a square; else,\nfalse. procedure, public :: get_stacked => pb_get_stacked private pure function pb_get_stacked(this) result(rst) Gets a value determining if data sets should be stacked (true) or\nleft side-by-side (false). Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(in) :: this The plot_bar object. Return Value logical True if multiple data sets should be stacked; else, false. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_use_jittering => p2d_get_use_jitter private pure function p2d_get_use_jitter(this) result(rst) Gets a logical value determining if jittering should be used. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical True if jittering should be used; else, false. procedure, public :: get_use_y2_axis => p2d_get_use_y2 private pure function p2d_get_use_y2(this) result(x) Gets a flag determining if the secondary y-axis should be\ndisplayed. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical Returns true if the axis should be displayed; else, false. procedure, public :: get_x_axis => p2d_get_x_axis private function p2d_get_x_axis(this) result(ptr) Gets the x-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the x-axis object. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y2_axis => p2d_get_y2_axis private function p2d_get_y2_axis(this) result(ptr) Gets the secondary y-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the secondary y-axis object. procedure, public :: get_y_axis => p2d_get_y_axis private function p2d_get_y_axis(this) result(ptr) Gets the y-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the y-axis object. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: initialize => p2d_init private subroutine p2d_init(this, term, fname, err) Initializes the plot_2d object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: p2d_push_data private subroutine p2d_push_data(this, x, y, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , p2d_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine p2d_push_data(this, x, y, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_bar_width => pb_set_bar_width private subroutine pb_set_bar_width(this, x) Sets the bar width scaling factor. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(inout) :: this The plot_bar object. real(kind=real32), intent(in) :: x The scaling factor. The value must be in the set [0, 1]; else, the\nvalue will be shifted accordingly. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_jitter_overlap => p2d_set_jitter_overlap private subroutine p2d_set_jitter_overlap(this, x) Sets the jitter overlap. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real32), intent(in) :: x The jitter overlap. procedure, public :: set_jitter_spread => p2d_set_jitter_spread private subroutine p2d_set_jitter_spread(this, x) Sets the jitter horizontal spread. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real32), intent(in) :: x The jitter horizontal spread. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_spacing => pb_set_spacing private subroutine pb_set_spacing(this, x) Sets the spacing between clusters of data sets. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(inout) :: this The [[plot+bar]] object. integer(kind=int32), intent(in) :: x The spacing. procedure, public :: set_square_axes => p2d_set_square_axes private subroutine p2d_set_square_axes(this, x) Sets a logical flag determining if the axes size should be\nsquared off. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if the axes are to be sized to a square; else,\nfalse. procedure, public :: set_stacked => pb_set_stacked private subroutine pb_set_stacked(this, x) Gets a value determining if data sets should be stacked (true) or\nleft side-by-side (false). Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(inout) :: this The plot_bar object. logical, intent(in) :: x True if multiple data sets should be stacked; else, false. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_use_jittering => p2d_set_use_jitter private subroutine p2d_set_use_jitter(this, x) Sets a logical value determining if jittering should be used. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if jittering should be used; else, false. procedure, public :: set_use_y2_axis => p2d_set_use_y2 private subroutine p2d_set_use_y2(this, x) Sets a flag determining if the secondary y-axis should be\ndisplayed. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if the axis should be displayed; else, false. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_axis_title => p2d_set_x_axis_title private subroutine p2d_set_x_axis_title(this, x) Sets the title associated with the plot's x-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y2_axis_title => p2d_set_y2_axis_title private subroutine p2d_set_y2_axis_title(this, x) Sets the title associated with the plot's secondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_axis_title => p2d_set_y_axis_title private subroutine p2d_set_y_axis_title(this, x) Sets the title associated with the plot's y-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot_bar.html"},{"title":"plot_data_box_whisker – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_box_whisker A container for box-whisker plot data. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdbw_clear_data private subroutine pdbw_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pdbw_define_data_xstring private subroutine pdbw_define_data_xstring(this, x, boxmin, boxmax, whiskermin, whiskermax, mid, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. type(string), intent(in), dimension(:) :: x The x-coordinate data. real(kind=real64), intent(in), dimension(size(x)) :: boxmin The minimum y-values for each box. real(kind=real64), intent(in), dimension(size(x)) :: boxmax The maximum y-values for each box. real(kind=real64), intent(in), dimension(size(x)) :: whiskermin The minimum y-values for each whisker. real(kind=real64), intent(in), dimension(size(x)) :: whiskermax The maximum y-values for each whisker. real(kind=real64), intent(in), optional, dimension(size(x)) :: mid The mid-range values for each whisker. Typically the mean or\nmedian of the data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_box_fill_opacity => pdbw_get_opacity private pure function pdbw_get_opacity(this) result(rst) Gets the opacity of the box fill color. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The opacity on a scale from 0 to 1. procedure, public :: get_box_width => pdbw_get_box_width private pure function pdbw_get_box_width(this) result(rst) Gets the box width. By default the x-axis is incremented in units of 1;\ntherefore, a box width of 1 will fully fill the space. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The box width. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdbw_get_cmd private function pdbw_get_cmd(this) result(rst) Gets the GNUPLOT command string for this object. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => pdbw_get_data_cmd private function pdbw_get_data_cmd(this) result(rst) Gets the GNUPLOT command string defining the data for this object. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => pdbw_get_use_y2 private pure function pdbw_get_use_y2(this) result(rst) Gets a value determining if the data is to be plotted against the\nsecondary y axis. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value logical Returns true if the data is to be plotted against the secondary y \naxis; else, false for the primary y axis. procedure, public :: get_fill_boxes => pdbw_get_fill_boxes private pure function pdbw_get_fill_boxes(this) result(rst) Gets a value determining if the boxes should be filled. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value logical True if the boxes are to be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_width => pdbw_get_line_width private pure function pdbw_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The line width. procedure, public :: get_midline_color => pdbw_get_midline_color private pure function pdbw_get_midline_color(this) result(rst) Gets the color of the midline. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value type( color ) The line color. procedure, public :: get_midline_width => pdbw_get_midline_width private pure function pdbw_get_midline_width(this) result(rst) Gets the width of the midline. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The line width. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_use_whiskerbars => pdbw_get_use_whiskerbars private pure function pdbw_get_use_whiskerbars(this) result(rst) Gets a value determining if whiskerbars should be used. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value logical True if whiskerbars should be used; else, false. procedure, public :: get_whiskerbar_width => pdbw_get_whiskerbar_width private pure function pdbw_get_whiskerbar_width(this) result(rst) Gets the width of whiskerbar. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The width of the whiskerbar on a scale of 0:1 with 1 being the full\nwidth. procedure, public :: set_box_fill_opacity => pdbw_set_opacity private subroutine pdbw_set_opacity(this, x) Sets the opacity of the box fill color. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The opacity on a scale from 0 to 1. procedure, public :: set_box_width => pdbw_set_box_width private subroutine pdbw_set_box_width(this, x) Sets the box width. By default the x-axis is incremented in units of 1;\ntherefore, a box width of 1 will fully fill the space. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The box width. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => pdbw_set_use_y2 private subroutine pdbw_set_use_y2(this, x) Sets a value determining if the data is to be plotted against the\nsecondary y axis. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. logical, intent(in) :: x Set to true if the data is to be plotted against the secondary y \naxis; else, false for the primary y axis. procedure, public :: set_fill_boxes => pdbw_set_fill_boxes private subroutine pdbw_set_fill_boxes(this, x) Sets a value determining if the boxes should be filled. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. logical, intent(in) :: x Set to true if the boxes are to be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_width => pdbw_set_line_width private subroutine pdbw_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_midline_color => pdbw_set_midline_color private subroutine pdbw_set_midline_color(this, x) Sets the color of the midline. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. type( color ), intent(in) :: x The line color. procedure, public :: set_midline_width => pdbw_set_midline_width private subroutine pdbw_set_midline_width(this, x) Sets the width of the midline. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_use_whiskerbars => pdbw_set_use_whiskerbars private subroutine pdbw_set_use_whiskerbars(this, x) Sets a value determining if whiskerbars should be used. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. logical, intent(in) :: x Set to true if whiskerbars should be used; else, false. procedure, public :: set_whiskerbar_width => pdbw_set_whiskerbar_width private subroutine pdbw_set_whiskerbar_width(this, x) Sets the width of the whiskerbar. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The width of the whiskerbar. This value is clamped to [0, 1] with\n1 representing full width.","tags":"","loc":"type\\plot_data_box_whisker.html"},{"title":"plot_data_tri_2d – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_tri_2d Defines a 2D triangulated data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdt2d_clear_data private subroutine pdt2d_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(inout) :: this The plot_data_tri_2d object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pdt2d_define_data private subroutine pdt2d_define_data(this, tri) Defines the data to plot. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(inout) :: this The plot_data_tri_2d object. class( delaunay_tri_2d ), intent(in) :: tri The triangulation data to plot. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdt2d_get_cmd private function pdt2d_get_cmd(this) result(x) Gets the GNUPLOT command string for the object. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(in) :: this The plot_data_tri_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => pdt2d_get_data_cmd private function pdt2d_get_data_cmd(this) result(x) Gets the GNUPLOT command string describing the data to plot. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(in) :: this The plot_data_tri_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => pdt2d_get_line_style private pure function pdt2d_get_line_style(this) result(rst) Gets the line style. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(in) :: this The plot_data_tri_2d object. Return Value integer(kind=int32) The line style. The line style must be one of the following\nconstants. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => pdt2d_get_line_width private pure function pdt2d_get_line_width(this) result(rst) Gets the width of the lines used to draw the triangulation. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(in) :: this The plot_data_tri_2d object. Return Value real(kind=real32) The line width. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => pdt2d_set_line_style private subroutine pdt2d_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(inout) :: this The plot_data_tri_2d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following\nconstants. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => pdt2d_set_line_width private subroutine pdt2d_set_line_width(this, x) Sets the width of the lines used to draw the triangulation. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(inout) :: this The plot_data_tri_2d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\plot_data_tri_2d.html"},{"title":"vector_field_plot_data – FPLOT ","text":"type, public, extends( plot_data_colored ) :: vector_field_plot_data Defines a two-dimensional vector-field plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => vfpd_clear_data private subroutine vfpd_clear_data(this) Clears the data from the data set. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(inout) :: this The vector_field_plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => vfpd_define_data private subroutine vfpd_define_data(this, x, y, dx, dy, c, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(inout) :: this The vector_field_plot_data object. real(kind=real64), intent(in), dimension(:,:) :: x An M-by-N matrix containing the x-locations of each arrow's \norigin. real(kind=real64), intent(in), dimension(:,:) :: y An M-by-N matrix containing the y-locations of each arrow's \norigin. real(kind=real64), intent(in), dimension(:,:) :: dx An M-by-N matrix containing the x-direction of each arrow. real(kind=real64), intent(in), dimension(:,:) :: dy An M-by-N matrix containing the y-direction of each arrow. real(kind=real64), intent(in), optional, dimension(:,:) :: c An optional M-by-N matrix containing information on how to color \nthe arrows. The colors are determined by the active colormap. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_arrow_size => vfpd_get_arrow_size private pure function vfpd_get_arrow_size(this) result(rst) Gets the scaling factor used to determine the arrow size. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value real(kind=real64) The scaling factor. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => vfpd_get_cmd private function vfpd_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this\nvector_field_plot_data object. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => vfpd_get_data_cmd private function vfpd_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data to plot. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_fill_arrow => vfpd_get_fill_arrow private pure function vfpd_get_fill_arrow(this) result(rst) Gets a value determining if the arrow heads should be filled. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value logical True if the arrow heads should be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_use_data_dependent_colors => vfpd_get_use_data_dependent_colors private pure function vfpd_get_use_data_dependent_colors(this) result(rst) Gets a value indicating if data-dependent coloring should be\nused. This is defined by supplying information on how to scale the\ncoloring when calling define_data. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value logical Returns true if data-dependent coloring is being used; else,\nfalse. procedure, public :: set_arrow_size => vfpd_set_arrow_size private subroutine vfpd_set_arrow_size(this, x) Sets the scaling factor used to determine the arrow size. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(inout) :: this The vector_field_plot_data object. real(kind=real64), intent(in) :: x The scaling factor. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_fill_arrow => vfpd_set_fill_arrow private subroutine vfpd_set_fill_arrow(this, x) Sets a value determining if the arrow heads should be filled. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(inout) :: this The vector_field_plot_data object. logical, intent(in) :: x True if the arrow heads should be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\vector_field_plot_data.html"},{"title":"plot_3d – FPLOT ","text":"type, public, extends( plot ) :: plot_3d A plot object defining a 3D plot. Finalization Procedures final :: p3d_clean_up private subroutine p3d_clean_up(this) Cleans up resources held by the plot_3d object. Arguments Type Intent Optional Attributes Name type( plot_3d ), intent(inout) :: this The plot_3d object. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_azimuth => p3d_get_azimuth private pure function p3d_get_azimuth(this) result(x) Gets the plot azimuth angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real64) The azimuth angle, in degrees. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => p3d_get_cmd private function p3d_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot_3d object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_coordinate_system => p3d_get_csys private pure function p3d_get_csys(this) result(rst) Gets a value determining the coordinate system. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The coordinate system ID, which must be one of the following. COORDINATES_CARTESIAN COORDINATES_CYLINDRICAL COORDINATES_SPHERICAL procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_elevation => p3d_get_elevation private pure function p3d_get_elevation(this) result(x) Gets the plot elevation angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real64) The elevation angle, in degrees. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_z_major_grid => p3d_get_show_z_major_grid private pure function p3d_get_show_z_major_grid(this) result(x) Gets a value determining if the z-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid private pure function p3d_get_show_z_minor_grid(this) result(x) Gets a value determining if the z-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_use_map_view => p3d_get_use_map_view private pure function p3d_get_use_map_view(this) result(rst) Gets a value determining if the view should be set to a 2D\nmap view. If true, the azimuth and elevation terms are ignored. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical Returns true if the map view will be used; else, false. procedure, public :: get_x_axis => p3d_get_x_axis private function p3d_get_x_axis(this) result(ptr) Gets the x-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the x-axis object. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_axis => p3d_get_y_axis private function p3d_get_y_axis(this) result(ptr) Gets the y-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the y-axis object. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_z_axis => p3d_get_z_axis private function p3d_get_z_axis(this) result(ptr) Gets the z-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the z-axis object. procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect private pure function p3d_get_z_axis_intersect(this) result(x) Gets a value determining if the z-axis should intersect the\nx-y plane. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical Returns true if the z-axis should intersect the x-y plane; else,\nfalse to allow the z-axis to float. procedure, public :: get_z_major_grid_color => p3d_get_z_major_grid_color private pure function p3d_get_z_major_grid_color(this) result(x) Gets the color of the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value type( color ) The color. procedure, public :: get_z_major_grid_line_style => p3d_get_z_major_grid_line_style private pure function p3d_get_z_major_grid_line_style(this) result(x) Gets the line style used for the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_z_major_grid_line_width => p3d_get_z_major_grid_line_width private pure function p3d_get_z_major_grid_line_width(this) result(x) Gets the width of the z-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real32) The line width. procedure, public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color private pure function p3d_get_z_minor_grid_color(this) result(x) Gets the color of the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value type( color ) The color. procedure, public :: get_z_minor_grid_line_style => p3d_get_z_minor_grid_line_style private pure function p3d_get_z_minor_grid_line_style(this) result(x) Gets the line style used for the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_z_minor_grid_line_width => p3d_get_z_minor_grid_line_width private pure function p3d_get_z_minor_grid_line_width(this) result(x) Gets the width of the z-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real32) The line width. procedure, public :: initialize => p3d_init private subroutine p3d_init(this, term, fname, err) Initializes the plot_3d object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: p3d_push_data private subroutine p3d_push_data(this, x, y, z, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real64), intent(in), dimension(size(x)) :: z The z-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , p3d_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine p3d_push_data(this, x, y, z, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real64), intent(in), dimension(size(x)) :: z The z-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_azimuth => p3d_set_azimuth private subroutine p3d_set_azimuth(this, x) Sets the plot azimuth angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in) :: x The azimuth angle, in degrees. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_coordinate_system => p3d_set_csys private subroutine p3d_set_csys(this, x) Sets a value determining the coordinate system. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The coordinate system ID, which must be one of the following. COORDINATES_CARTESIAN COORDINATES_CYLINDRICAL COORDINATES_SPHERICAL procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_elevation => p3d_set_elevation private subroutine p3d_set_elevation(this, x) Sets the plot elevation angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in) :: x The elevation angle, in degrees. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_z_major_grid => p3d_set_show_z_major_grid private subroutine p3d_set_show_z_major_grid(this, x) Sets a value determining if the z-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid private subroutine p3d_set_show_z_minor_grid(this, x) Sets a value determining if the z-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_use_map_view => p3d_set_use_map_view private subroutine p3d_set_use_map_view(this, x) Sets a value determining if the view should be set to a 2D\nmap view. If true, the azimuth and elevation terms are ignored. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x Seturns true if the map view will be used; else, false. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_axis_title => p3d_set_x_axis_title private subroutine p3d_set_x_axis_title(this, x) Sets the title associated with the plot's x-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_axis_title => p3d_set_y_axis_title private subroutine p3d_set_y_axis_title(this, x) Sets the title associated with the plot's y-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_z_axis_title => p3d_set_z_axis_title private subroutine p3d_set_z_axis_title(this, x) Sets the title associated with the plot's z-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_z_intersect_xy => p3d_set_z_axis_intersect private subroutine p3d_set_z_axis_intersect(this, x) Sets a value determining if the z-axis should intersect the\nx-y plane. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x Set to true if the z-axis should intersect the x-y plane; else,\nfalse to allow the z-axis to float. procedure, public :: set_z_major_grid_color => p3d_set_z_major_grid_color private subroutine p3d_set_z_major_grid_color(this, x) Sets the color of the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. type( color ), intent(in) :: x The color. procedure, public :: set_z_major_grid_line_style => p3d_set_z_major_grid_line_style private subroutine p3d_set_z_major_grid_line_style(this, x) Sets the line style used for the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_z_major_grid_line_width => p3d_set_z_major_grid_line_width private subroutine p3d_set_z_major_grid_line_width(this, x) Sets the width of the z-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color private subroutine p3d_set_z_minor_grid_color(this, x) Sets the color of the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. type( color ), intent(in) :: x The color. procedure, public :: set_z_minor_grid_line_style => p3d_set_z_minor_grid_line_style private subroutine p3d_set_z_minor_grid_line_style(this, x) Sets the line style used for the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_z_minor_grid_line_width => p3d_set_z_minor_grid_line_width private subroutine p3d_set_z_minor_grid_line_width(this, x) Sets the width of the z-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot_3d.html"},{"title":"file_terminal – FPLOT ","text":"type, public, extends( terminal ) :: file_terminal Defines a terminal meant to save results directly to file \n(e.g. PNG, SVG, etc.). Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string private function fterm_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure( term_get_string_result ), public, deferred :: get_id_string function term_get_string_result(this) result(x) Prototype Retrieves a string from a terminal. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\file_terminal.html"},{"title":"terminal – FPLOT ","text":"type, public, extends( plot_object ) :: terminal A GNUPLOT terminal object. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string private function term_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure( term_get_string_result ), public, deferred :: get_id_string function term_get_string_result(this) result(x) Prototype Retrieves a string from a terminal. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\terminal.html"},{"title":"line_plot_data – FPLOT ","text":"type, public, extends( plot_data_colored ) :: line_plot_data A plot_data object for describing line series data. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( pd_clear_action ), public, deferred :: clear_data subroutine pd_clear_action(this) Prototype Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => lpd_get_cmd public function lpd_get_cmd (this) result(rst) Gets the GNUPLOT command string to represent this line_plot_data\nobject. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value character(len=:), allocatable The command string. procedure( pd_get_string_result ), public, deferred :: get_data_string function pd_get_string_result(this) result(x) Prototype Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\line_plot_data.html"},{"title":"plot_data – FPLOT ","text":"type, public, extends( plot_object ) :: plot_data A container for plot data. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( pd_clear_action ), public, deferred :: clear_data subroutine pd_clear_action(this) Prototype Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( get_string_result ), public, deferred :: get_command_string function get_string_result(this) result(x) Prototype Returns a string from a plot_object. Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:), allocatable The result string. procedure( pd_get_string_result ), public, deferred :: get_data_string function pd_get_string_result(this) result(x) Prototype Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\plot_data.html"},{"title":"plot_data_colored – FPLOT ","text":"type, public, extends( plot_data ) :: plot_data_colored Defines a colored plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( pd_clear_action ), public, deferred :: clear_data subroutine pd_clear_action(this) Prototype Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure( get_string_result ), public, deferred :: get_command_string function get_string_result(this) result(x) Prototype Returns a string from a plot_object. Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:), allocatable The result string. procedure( pd_get_string_result ), public, deferred :: get_data_string function pd_get_string_result(this) result(x) Prototype Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\plot_data_colored.html"},{"title":"scatter_plot_data – FPLOT ","text":"type, public, extends( line_plot_data ) :: scatter_plot_data A plot_data object for describing scatter plot data sets. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( pd_clear_action ), public, deferred :: clear_data subroutine pd_clear_action(this) Prototype Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( spd_get_string_result ), public, deferred :: get_axes_string function spd_get_string_result(this) result(x) Prototype Gets a string value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => spd_get_cmd public function spd_get_cmd (this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string. procedure( spd_get_int_value ), public, deferred :: get_count pure function spd_get_int_value(this) result(x) Prototype Gets an integer value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The value. procedure( pd_get_string_result ), public, deferred :: get_data_string function pd_get_string_result(this) result(x) Prototype Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_fill_curve => spd_get_filled private pure function spd_get_filled(this) result(rst) Gets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the curve should be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_simplification_factor => spd_get_simplify_factor private pure function spd_get_simplify_factor(this) result(x) Gets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real64) The scaling factor. procedure, public :: get_simplify_data => spd_get_simplify_data private pure function spd_get_simplify_data(this) result(x) Gets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors private pure function spd_get_data_dependent_colors(this) result(rst) Gets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if data-dependent colors should be used; else, false. procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size private pure function spd_get_use_var_point_size(this) result(rst) Gets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if variable size points should be used; else, false. procedure( spd_get_value ), public, deferred :: get_x pure function spd_get_value(this, index) result(x) Prototype Gets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. Return Value real(kind=real64) The value. procedure( spd_get_value ), public, deferred :: get_y pure function spd_get_value(this, index) result(x) Prototype Gets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. Return Value real(kind=real64) The value. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_fill_curve => spd_set_filled private subroutine spd_set_filled(this, x) Sets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the curve should be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_simplification_factor => spd_set_simplify_factor private subroutine spd_set_simplify_factor(this, x) Sets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real64), intent(in) :: x The scaling factor. procedure, public :: set_simplify_data => spd_set_simplify_data private subroutine spd_set_simplify_data(this, x) Sets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors private subroutine spd_set_data_dependent_colors(this, x) Sets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if data-dependent colors should be used; else, false. procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size private subroutine spd_set_use_var_point_size(this, x) Sets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if variable size points should be used; else, false. procedure( spd_set_value ), public, deferred :: set_x subroutine spd_set_value(this, index, x) Prototype Sets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. real(kind=real64), intent(in) :: x The value. procedure( spd_set_value ), public, deferred :: set_y subroutine spd_set_value(this, index, x) Prototype Sets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. real(kind=real64), intent(in) :: x The value.","tags":"","loc":"type\\scatter_plot_data.html"},{"title":"plot_data_bar – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_bar Defines a data set tailored to bar charts. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdb_clear_data private subroutine pdb_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. generic, public :: define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3, pdb_set_data_4, pdb_set_data_5, pdb_set_data_6 private subroutine pdb_set_data_1(this, x, err) Defines a single data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: x The data to plot. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_2(this, labels, x, err) Defines data along with associated axis labels. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. class(string), intent(in), dimension(:) :: labels The axis labels to associate with the data. real(kind=real64), intent(in), dimension(:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_3(this, labels, x, fmt, err) Defines data along with labels and formatting information. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: labels The axis labels to associate with the data. real(kind=real64), intent(in), dimension(:) :: x The data set. character(len=*), intent(in), optional :: fmt The format string for the labels (e.g. '(I0)', etc.). class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_4(this, x, err) Defines a single data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:,:) :: x The data to plot. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_5(this, labels, x, err) Defines data along with associated axis labels. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. class(string), intent(in), dimension(:) :: labels The axis labels to associate with the data. real(kind=real64), intent(in), dimension(:,:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_6(this, labels, x, fmt, err) Defines data along with labels and formatting information. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: labels The axis labels to associate with the data. real(kind=real64), intent(in), dimension(:,:) :: x The data set. character(len=*), intent(in), optional :: fmt The format string for the labels (e.g. '(I0)', etc.). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get => pdb_get_data private pure function pdb_get_data(this, index, col) result(x) Gets the requested data point. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The data point index. integer(kind=int32), intent(in) :: col The column index. Return Value real(kind=real64) The value. procedure, public :: get_axes_string => pdb_get_axes_cmd private function pdb_get_axes_cmd(this) result(x) Gets the GNUPLOT command defining which axes to plot against. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_bar_color => pdb_get_bar_color private pure function pdb_get_bar_color(this, index) result(x) Gets the color to use for the requested data series (column). If\nno color has been explicitly set, a default color cycle is used\nfor multi-series data, or the base line color for single-series\ndata. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data series (column). Return Value type( color ) The color. procedure, public :: get_bar_per_label_count => pdb_get_col_count private pure function pdb_get_col_count(this) result(x) Gets the number of data sets (columns). Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value integer(kind=int32) The count. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdb_get_cmd private function pdb_get_cmd(this) result(x) Gets the GNUPLOT command string for this object. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => pdb_get_count private pure function pdb_get_count(this) result(x) Gets the number of stored data points. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value integer(kind=int32) The number of stored data points. procedure, public :: get_data => pdb_get_data_set private pure function pdb_get_data_set(this, col) result(x) Gets the requested data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: col The column index. Return Value real(kind=real64), allocatable, dimension(:) A copy of the data set. procedure, public :: get_data_string => pdb_get_data_cmd private function pdb_get_data_cmd(this) result(x) Gets the GNUPLOT command string defining the data for this object. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => pdb_get_use_y2 private pure function pdb_get_use_y2(this) result(x) Gets a value determining if the data should be plotted against a\nsecondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value logical Returns true to plot against a secondary y-axis; else, false. procedure, public :: get_is_filled => pdb_get_is_filled private pure function pdb_get_is_filled(this) result(x) Gets a value determining if each bar is filled. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value logical Returns true if the bars are to be filled; else, false. procedure, public :: get_label => pdb_get_label private pure function pdb_get_label(this, index) result(x) Gets the axis label associated with a specific data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data set. Return Value character(len=:), allocatable The label. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_series_name => pdb_get_series_name private pure function pdb_get_series_name(this, index) result(x) Gets the legend title associated with the requested data series\n(column). Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data series (column). Return Value character(len=:), allocatable The title. procedure, public :: get_transparency => pdb_get_alpha private pure function pdb_get_alpha(this) result(x) Gets the alpha (transparency) for the bar color. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value real(kind=real32) The alpha value ([0, 1]). procedure, public :: get_use_labels => pdb_get_use_labels private pure function pdb_get_use_labels(this) result(x) Gets a value determining if labels are used to identify the data. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value logical Returns true if labels are used; else, false. procedure, public :: set => pdb_set_data private subroutine pdb_set_data(this, index, col, x) Replaces the requested data point. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The data point index. integer(kind=int32), intent(in) :: col The column index. real(kind=real64), intent(in) :: x The new value. procedure, public :: set_bar_color => pdb_set_bar_color private subroutine pdb_set_bar_color(this, index, x) Sets the color to use for the requested data series (column). Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data series (column). type( color ), intent(in) :: x The color. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_data_1 => pdb_set_data_1_core private subroutine pdb_set_data_1_core(this, x, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_2 => pdb_set_data_2_core private subroutine pdb_set_data_2_core(this, labels, x, err) Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. class(string), intent(in), dimension(:) :: labels The axis labels. real(kind=real64), intent(in), dimension(:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_3 => pdb_set_data_3_core private subroutine pdb_set_data_3_core(this, labels, x, fmt, err) Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: labels The axis labels. real(kind=real64), intent(in), dimension(:) :: x The data set. character(len=*), intent(in), optional :: fmt The format string for the labels (e.g. '(I0)', etc.). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_4 => pdb_set_data_4_core private subroutine pdb_set_data_4_core(this, x, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:,:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_5 => pdb_set_data_5_core private subroutine pdb_set_data_5_core(this, labels, x, err) Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. class(string), intent(in), dimension(:) :: labels The axis labels. real(kind=real64), intent(in), dimension(:,:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_6 => pdb_set_data_6_core private subroutine pdb_set_data_6_core(this, labels, x, fmt, err) Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: labels The axis labels. real(kind=real64), intent(in), dimension(:,:) :: x The data set. character(len=*), intent(in), optional :: fmt The format string for the labels (e.g. '(I0)', etc.). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => pdb_set_use_y2 private subroutine pdb_set_use_y2(this, x) Sets a value determining if the data should be plotted against a\nsecondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. logical, intent(in) :: x Set to true to plot against a secondary y-axis; else, false. procedure, public :: set_is_filled => pdb_set_is_filled private subroutine pdb_set_is_filled(this, x) Sets a value determining if each bar is filled. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. logical, intent(in) :: x Set to true if the bars are to be filled; else, false. procedure, public :: set_label => pdb_set_label private subroutine pdb_set_label(this, index, txt) Sets the axis label for a specific data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. integer(kind=int32) :: index The index of the data set. character(len=*), intent(in) :: txt The label. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_series_name => pdb_set_series_name private subroutine pdb_set_series_name(this, index, txt) Sets the legend title to associate with the requested data series\n(column). Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data series (column). character(len=*), intent(in) :: txt The title. procedure, public :: set_transparency => pdb_set_alpha private subroutine pdb_set_alpha(this, x) Gets the alpha (transparency) for the bar color. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real32), intent(in) :: x The alpha value ([0, 1]). procedure, public :: set_use_labels => pdb_set_use_labels private subroutine pdb_set_use_labels(this, x) Sets a value determining if labels are used to identify the data. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. logical, intent(in) :: x Set to true if labels are used; else, false.","tags":"","loc":"type\\plot_data_bar.html"},{"title":"pdf_terminal – FPLOT ","text":"type, public, extends( file_terminal ) :: pdf_terminal Defines a terminal used for producing PDF outputs. Type-Bound Procedures procedure, public :: get_command_string => pdf_get_command_string private function pdf_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( pdf_terminal ), intent(in) :: this The pdf_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => pdf_get_term_string private function pdf_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( pdf_terminal ), intent(in) :: this The pdf_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_resolution => pdf_get_resolution private pure function pdf_get_resolution(this) result(x) Gets the target device resolution. Arguments Type Intent Optional Attributes Name class( pdf_terminal ), intent(in) :: this The pdf_terminal object. Return Value integer(kind=int32) The resolution, in DPI. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_resolution => pdf_set_resolution private subroutine pdf_set_resolution(this, x) Sets the target device resolution. Arguments Type Intent Optional Attributes Name class( pdf_terminal ), intent(inout) :: this The pdf_terminal object. integer(kind=int32), intent(in) :: x The resolution, in DPI. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\pdf_terminal.html"},{"title":"tri_surface_plot_data – FPLOT ","text":"type, public, extends( plot_data ) :: tri_surface_plot_data Provides a three-dimensional surface plot data set constructed of\ntriangulated points. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => tspd_clear_data private subroutine tspd_clear_data(this) Clears the data from the data set. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(inout) :: this The tri_surface_plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => tspd_define_data private subroutine tspd_define_data(this, tri) Defines the data to plot. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(inout) :: this The tri_surface_plot_data object. class( delaunay_tri_surface ), intent(in) :: tri The triangulation to plot. procedure, public :: get_command_string => tspd_get_cmd private function tspd_get_cmd(this) result(x) Gets the GNUPLOT command string for the object. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(in) :: this The tri_surface_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => tspd_get_data_cmd private function tspd_get_data_cmd(this) result(x) Gets the GNUPLOT command string for representing the data. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(in) :: this The tri_surface_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_use_wireframe => tspd_get_wireframe private pure function tspd_get_wireframe(this) result(rst) Gets a value determining if a wireframe mesh should be displayed. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(in) :: this The tri_surface_plot_data object. Return Value logical Returns true if the plot is to be drawn as a wireframe; else,\nfalse to draw as a surface. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_use_wireframe => tspd_set_wireframe private subroutine tspd_set_wireframe(this, x) Sets a value determining if a wireframe mesh should be displayed. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(inout) :: this The tri_surface_plot_data object. logical, intent(in) :: x Set to true if the plot is to be drawn as a wireframe; else,\nfalse to draw as a surface.","tags":"","loc":"type\\tri_surface_plot_data.html"},{"title":"is_plot_data_function – FPLOT","text":"public pure function is_plot_data_function(x) result(rst) Tests to see if the supplied plot_data object is a plot_data_function based type. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: x The plot_data object. Return Value logical True if x is a plot_data_function based type.","tags":"","loc":"proc\\is_plot_data_function.html"},{"title":"report_array_size_mismatch_error – FPLOT","text":"public subroutine report_array_size_mismatch_error(err, fcn, name, expected, actual) Reports an array size mismatch error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: name The variable name. integer(kind=int32), intent(in) :: expected The expected array size. integer(kind=int32), intent(in) :: actual The actual array size. Variables Type Visibility Attributes Name Initial character(len=256), public :: msg","tags":"","loc":"proc\\report_array_size_mismatch_error.html"},{"title":"report_error – FPLOT","text":"public subroutine report_error(this, fcn, msg, code) Type Bound errors Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: this character(len=*), intent(in) :: fcn character(len=*), intent(in) :: msg integer(kind=int32), intent(in) :: code","tags":"","loc":"proc\\report_error.html"},{"title":"report_file_create_error – FPLOT","text":"public subroutine report_file_create_error(err, fcn, fname, flag) Reports an I/O error related to file creating. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: fname The filename. integer(kind=int32), intent(in) :: flag The error flag returned by the system. Variables Type Visibility Attributes Name Initial character(len=2048), public :: msg","tags":"","loc":"proc\\report_file_create_error.html"},{"title":"report_matrix_size_mismatch_error – FPLOT","text":"public subroutine report_matrix_size_mismatch_error(err, fcn, name, mexp, nexp, mact, nact) Reports a matrix size mismatch error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: name The variable name. integer(kind=int32), intent(in) :: mexp The expected number of rows. integer(kind=int32), intent(in) :: nexp The expected number of columns. integer(kind=int32), intent(in) :: mact The actual number of rows. integer(kind=int32), intent(in) :: nact The actual number of columns. Variables Type Visibility Attributes Name Initial character(len=256), public :: msg","tags":"","loc":"proc\\report_matrix_size_mismatch_error.html"},{"title":"report_memory_error – FPLOT","text":"public subroutine report_memory_error(err, fcn, flag) Reports a memory allocation error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. integer(kind=int32), intent(in) :: flag The error flag returned by the system. Variables Type Visibility Attributes Name Initial character(len=256), public :: msg","tags":"","loc":"proc\\report_memory_error.html"},{"title":"operator(/=) – FPLOT","text":"public interface operator(/=) Module Procedures private pure function clr_not_equals(x, y) result(rst) Arguments Type Intent Optional Attributes Name type( color ), intent(in) :: x type( color ), intent(in) :: y Return Value logical","tags":"","loc":"interface\\operator(SLASH=).html"},{"title":"operator(==) – FPLOT","text":"public interface operator(==) Module Procedures private pure function clr_equals(x, y) result(rst) Arguments Type Intent Optional Attributes Name type( color ), intent(in) :: x type( color ), intent(in) :: y Return Value logical","tags":"","loc":"interface\\operator(==).html"},{"title":"pa_get_string_result – FPLOT","text":"interface public function pa_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:),allocatable The string. Description Retrieves a string from a plot_axis.","tags":"","loc":"interface\\pa_get_string_result.html"},{"title":"linspace – FPLOT","text":"public pure function linspace(start, finish, npts) result(x) Constructs a linearly spaced array. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in) :: start The first value in the array. real(kind=real64), intent(in) :: finish The last value in the array. integer(kind=int32), intent(in) :: npts The number of values in the array. Return Value real(kind=real64), allocatable, dimension(:) The resulting array.","tags":"","loc":"proc\\linspace.html"},{"title":"logspace – FPLOT","text":"public pure function logspace(start, finish, npts) result(x) Construcst a logarithmically spaced array. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in) :: start The exponent of the first value in the array. real(kind=real64), intent(in) :: finish The exponent of the final value in the array. integer(kind=int32), intent(in) :: npts The number of values in the array. Return Value real(kind=real64), allocatable, dimension(:) The resulting array.","tags":"","loc":"proc\\logspace.html"},{"title":"meshgrid – FPLOT","text":"public pure function meshgrid(x, y) result(xy) Constructs two matrices (X and Y) from x and y data arrays. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An M-element array of x data points. real(kind=real64), intent(in), dimension(:) :: y An N-element array of y data points. Return Value real(kind=real64), allocatable, dimension(:,:,:) An N-by-M-by-2 array containing the x data matrix on the first \npage of the array, and the y data matrix on the second page.","tags":"","loc":"proc\\meshgrid.html"},{"title":"get_string_result – FPLOT","text":"interface public function get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:),allocatable The result string. Description Returns a string from a plot_object.","tags":"","loc":"interface\\get_string_result.html"},{"title":"cm_get_string_result – FPLOT","text":"interface public function cm_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:),allocatable The string. Description Retrieves a string result from a colormap object.","tags":"","loc":"interface\\cm_get_string_result.html"},{"title":"simplify_polyline – FPLOT","text":"public interface simplify_polyline Module Procedures private function simplify_polyline_2d1(x, y, tol, err) result(ln) Simplifies a 2D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, and the second \ncolumn contains the y-coordinates. private function simplify_polyline_3d1(x, y, z, tol, err) result(ln) Simplifies a 3D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: z An N-element array containing the z-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, the second \ncolumn contains the y-coordinates, and the third column contains \nthe z-coordinates. private function simplify_polyline_mtx(xy, tol, err) result(ln) Simplifies a 2D or 3D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:,:) :: xy An N-by-2 or N-by-3 matrix containing the polyline vertex data. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, the second \ncolumn contains the y-coordinates, and if necessary, the third \ncolumn contains the z-coordinates.","tags":"","loc":"interface\\simplify_polyline.html"},{"title":"term_get_string_result – FPLOT","text":"interface public function term_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:),allocatable The string. Description Retrieves a string from a terminal.","tags":"","loc":"interface\\term_get_string_result.html"},{"title":"lpd_get_cmd – FPLOT","text":"public function lpd_get_cmd(this) result(rst) Gets the GNUPLOT command string to represent this line_plot_data\nobject. Type Bound line_plot_data Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value character(len=:), allocatable The command string.","tags":"","loc":"proc\\lpd_get_cmd.html"},{"title":"spd_get_cmd – FPLOT","text":"public function spd_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Type Bound scatter_plot_data Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string.","tags":"","loc":"proc\\spd_get_cmd.html"},{"title":"pd_clear_action – FPLOT","text":"interface public subroutine pd_clear_action(this) Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. Description Performs a clearing operation.","tags":"","loc":"interface\\pd_clear_action.html"},{"title":"pd_get_string_result – FPLOT","text":"interface public function pd_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:),allocatable The string. Description Retrieves a string from a plot_data object.","tags":"","loc":"interface\\pd_get_string_result.html"},{"title":"spd_get_int_value – FPLOT","text":"interface public pure function spd_get_int_value(this) result(x) Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The value. Description Gets an integer value from the scatter_plot_data object.","tags":"","loc":"interface\\spd_get_int_value.html"},{"title":"spd_get_string_result – FPLOT","text":"interface public function spd_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:),allocatable The string. Description Gets a string value from the scatter_plot_data object.","tags":"","loc":"interface\\spd_get_string_result.html"},{"title":"spd_get_value – FPLOT","text":"interface public pure function spd_get_value(this, index) result(x) Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. Return Value real(kind=real64) The value. Description Gets an indexed value from the scatter_plot_data object.","tags":"","loc":"interface\\spd_get_value.html"},{"title":"spd_set_value – FPLOT","text":"interface public subroutine spd_set_value(this, index, x) Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. real(kind=real64), intent(in) :: x The value. Description Sets an indexed value from the scatter_plot_data object.","tags":"","loc":"interface\\spd_set_value.html"},{"title":"fplot_plot_data_3d – FPLOT","text":"Uses iso_fortran_env fplot_simplify strings fplot_plot_data fplot_errors Derived Types type, public, extends( scatter_plot_data ) :: plot_data_3d Defines a three-dimensional plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pd3d_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pd3d_set_data_1 procedure, public :: get_axes_string => pd3d_get_axes_cmd procedure, public :: get_color_data => pd3d_get_c_array procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => spd_get_cmd procedure, public :: get_count => pd3d_get_data_count procedure, public :: get_data_string => pd3d_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_fill_curve => spd_get_filled procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_name => pd_get_name procedure, public :: get_point_size_data => pd3d_get_c_array procedure, public :: get_simplification_factor => spd_get_simplify_factor procedure, public :: get_simplify_data => spd_get_simplify_data procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size procedure, public :: get_x => pd3d_get_x_data procedure, public :: get_x_data => pd3d_get_x_array procedure, public :: get_y => pd3d_get_y_data procedure, public :: get_y_data => pd3d_get_y_array procedure, public :: get_z => pd3d_get_z_data procedure, public :: get_z_data => pd3d_get_z_array procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_fill_curve => spd_set_filled procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_name => pd_set_name procedure, public :: set_simplification_factor => spd_set_simplify_factor procedure, public :: set_simplify_data => spd_set_simplify_data procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size procedure, public :: set_x => pd3d_set_x_data procedure, public :: set_y => pd3d_set_y_data procedure, public :: set_z => pd3d_set_z_data","tags":"","loc":"module\\fplot_plot_data_3d.html"},{"title":"fplot_plot_data_2d – FPLOT","text":"Uses iso_fortran_env fplot_simplify strings fplot_plot_data fplot_errors Derived Types type, public, extends( scatter_plot_data ) :: plot_data_2d Defines a two-dimensional plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pd2d_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name generic, public :: define_data => pd2d_set_data_1 , pd2d_set_data_2 procedure, public :: get_axes_string => pd2d_get_axes_cmd procedure, public :: get_color_data => pd2d_get_c_array procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => spd_get_cmd procedure, public :: get_count => pd2d_get_data_count procedure, public :: get_data_string => pd2d_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => pd2d_get_draw_against_y2 procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_fill_curve => spd_get_filled procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_name => pd_get_name procedure, public :: get_point_size_data => pd2d_get_ps_array procedure, public :: get_simplification_factor => spd_get_simplify_factor procedure, public :: get_simplify_data => spd_get_simplify_data procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size procedure, public :: get_x => pd2d_get_x_data procedure, public :: get_x_data => pd2d_get_x_array procedure, public :: get_y => pd2d_get_y_data procedure, public :: get_y_data => pd2d_get_y_array procedure, public :: pd2d_set_data_1 procedure, public :: pd2d_set_data_2 procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => pd2d_set_draw_against_y2 procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_fill_curve => spd_set_filled procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_name => pd_set_name procedure, public :: set_simplification_factor => spd_set_simplify_factor procedure, public :: set_simplify_data => spd_set_simplify_data procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size procedure, public :: set_x => pd2d_set_x_data procedure, public :: set_y => pd2d_set_y_data","tags":"","loc":"module\\fplot_plot_data_2d.html"},{"title":"fplot_windows_terminal – FPLOT","text":"Uses fplot_terminal iso_fortran_env Derived Types type, public, extends( terminal ) :: windows_terminal A Windows-specific terminal. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => wt_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_windows_terminal.html"},{"title":"fplot_latex_terminal – FPLOT","text":"Uses fplot_terminal fplot_constants iso_fortran_env strings Derived Types type, public, extends( file_terminal ) :: latex_terminal A LATEX terminal. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => tex_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_latex_terminal.html"},{"title":"fplot_plot_polar – FPLOT","text":"Uses fplot_terminal fplot_plot_data_2d iso_fortran_env fplot_constants fplot_colors fplot_plot_data fplot_legend strings fplot_plot fplot_errors Derived Types type, public, extends( plot ) :: plot_polar Finalizations Procedures final :: plr_clean_up Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_autoscale => plr_get_autoscale procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => plr_get_cmd procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_radial_limits => plr_get_limits procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_terminal => plt_get_term procedure, public :: get_theta_direction => plr_get_theta_direction procedure, public :: get_theta_start_position => plr_get_theta_start procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: initialize => plr_init procedure, public :: is_title_defined => plt_has_title procedure, public :: plr_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , plr_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_autoscale => plr_set_autoscale procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_radial_limits => plr_set_limits procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_theta_direction => plr_set_theta_direction procedure, public :: set_theta_start_position => plr_set_theta_start procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: show_legend => plt_show_legend","tags":"","loc":"module\\fplot_plot_polar.html"},{"title":"fplot_png_terminal – FPLOT","text":"Uses fplot_terminal fplot_constants iso_fortran_env strings Derived Types type, public, extends( file_terminal ) :: png_terminal Defines a terminal used for producing PNG outputs. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => png_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_png_terminal.html"},{"title":"fplot_plot_2d – FPLOT","text":"Uses fplot_plot_axis fplot_plot_data_2d iso_fortran_env fplot_plot fplot_colors fplot_legend strings fplot_plot_data fplot_errors Derived Types type, public, extends( plot ) :: plot_2d A plot object defining a 2D plot. Finalizations Procedures final :: p2d_clean_up Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => p2d_get_cmd procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_jitter_overlap => p2d_get_jitter_overlap procedure, public :: get_jitter_spread => p2d_get_jitter_spread procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_square_axes => p2d_get_square_axes procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_use_jittering => p2d_get_use_jitter procedure, public :: get_use_y2_axis => p2d_get_use_y2 procedure, public :: get_x_axis => p2d_get_x_axis procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y2_axis => p2d_get_y2_axis procedure, public :: get_y_axis => p2d_get_y_axis procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: initialize => p2d_init procedure, public :: is_title_defined => plt_has_title procedure, public :: p2d_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , p2d_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_jitter_overlap => p2d_set_jitter_overlap procedure, public :: set_jitter_spread => p2d_set_jitter_spread procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_square_axes => p2d_set_square_axes procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_use_jittering => p2d_set_use_jitter procedure, public :: set_use_y2_axis => p2d_set_use_y2 procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_axis_title => p2d_set_x_axis_title procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y2_axis_title => p2d_set_y2_axis_title procedure, public :: set_y_axis_title => p2d_set_y_axis_title procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: show_legend => plt_show_legend","tags":"","loc":"module\\fplot_plot_2d.html"},{"title":"fplot_plot – FPLOT","text":"Uses fplot_label fplot_legend fplot_plot_object fplot_plot_data fplot_terminal fplot_png_terminal fplot_svg_terminal fplot_colors fplot_qt_terminal fplot_plot_data_function fplot_pdf_terminal fplot_arrow collections fplot_windows_terminal iso_fortran_env strings fplot_errors fplot_latex_terminal fplot_wxt_terminal fplot_constants fplot_colormap Derived Types type, public, extends( plot_object ) :: plot Defines the basic GNUPLOT plot. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => plt_get_cmd procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: initialize => plt_init procedure, public :: is_title_defined => plt_has_title procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: show_legend => plt_show_legend Functions public pure function is_plot_data_function (x) result(rst) Tests to see if the supplied plot_data object is a plot_data_function based type. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: x The plot_data object. Return Value logical True if x is a plot_data_function based type.","tags":"","loc":"module\\fplot_plot.html"},{"title":"fplot_label – FPLOT","text":"Uses fplot_constants fplot_plot_object iso_fortran_env strings Derived Types type, public, extends( plot_object ) :: plot_label Defines a plot label. Type-Bound Procedures procedure, public :: get_angle => lbl_get_angle procedure, public :: get_command_string => lbl_get_cmd procedure, public :: get_is_visible => lbl_get_is_visible procedure, public :: get_position => lbl_get_position procedure, public :: get_text => lbl_get_txt procedure, public :: set_angle => lbl_set_angle procedure, public :: set_is_visible => lbl_set_is_visible procedure, public :: set_position => lbl_set_position procedure, public :: set_text => lbl_set_txt","tags":"","loc":"module\\fplot_label.html"},{"title":"fplot_plot_data_histogram – FPLOT","text":"Uses iso_fortran_env fplot_colors strings fplot_plot_data fplot_errors Derived Types type, public, extends( plot_data_colored ) :: plot_data_histogram A container for plotting data in the form of a histogram. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdh_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pdh_define_data procedure, public :: get => pdh_get_bin_data procedure, public :: get_axes_string => pdh_get_axes_cmd procedure, public :: get_bin_count => pdh_get_bin_count procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdh_get_cmd procedure, public :: get_data_string => pdh_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => pdh_get_use_y2 procedure, public :: get_is_filled => pdh_get_is_filled procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_maximum_value => pdh_get_max_x procedure, public :: get_minimum_value => pdh_get_min_x procedure, public :: get_name => pd_get_name procedure, public :: set_bin_count => pdh_set_bin_count procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => pdh_set_use_y2 procedure, public :: set_is_filled => pdh_set_is_filled procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name","tags":"","loc":"module\\fplot_plot_data_histogram.html"},{"title":"fplot_triangulations_delaunay_2d – FPLOT","text":"Uses geompack iso_fortran_env fplot_errors Derived Types type, public :: delaunay_tri_2d Provides a container for a 2D Delaunay triangulation. Type-Bound Procedures procedure, public :: create => d2d_init procedure, public :: find_triangle => d2d_get_tri_with_pt procedure, public :: get_indices => d2d_get_tris procedure, public :: get_point_count => d2d_get_pt_count procedure, public :: get_points_x => d2d_get_x_pts procedure, public :: get_points_y => d2d_get_y_pts procedure, public :: get_triangle_count => d2d_get_tri_count","tags":"","loc":"module\\fplot_triangulations_delaunay_2d.html"},{"title":"fplot_plot_data_function – FPLOT","text":"Uses iso_fortran_env fplot_constants fplot_colors strings fplot_plot_data Derived Types type, public, extends( line_plot_data ) :: plot_data_function Defines a function to plot. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdf_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pdf_define_data procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdf_get_cmd procedure, public :: get_data_string => pdf_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_function => pdf_get_function procedure, public :: get_function_name => pdf_get_function_name procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_maximum_x => pdf_get_max_x procedure, public :: get_minimum_x => pdf_get_min_x procedure, public :: get_name => pd_get_name procedure, public :: get_sample_count => pfd_get_sample_count procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_maximum_x => pdf_set_max_x procedure, public :: set_minimum_x => pdf_set_min_x procedure, public :: set_name => pd_set_name procedure, public :: set_sample_count => pfd_set_sample_count","tags":"","loc":"module\\fplot_plot_data_function.html"},{"title":"fplot_legend – FPLOT","text":"Uses fplot_constants fplot_plot_object iso_fortran_env strings Derived Types type, public, extends( plot_object ) :: legend Defines a legend object. Type-Bound Procedures procedure, public :: get_command_string => leg_get_command_txt procedure, public :: get_draw_border => leg_get_box procedure, public :: get_draw_inside_axes => leg_get_inside procedure, public :: get_horizontal_position => leg_get_horz_pos procedure, public :: get_is_opaque => leg_get_opaque procedure, public :: get_is_visible => leg_get_visible procedure, public :: get_layout => leg_get_layout procedure, public :: get_vertical_position => leg_get_vert_pos procedure, public :: set_draw_border => leg_set_box procedure, public :: set_draw_inside_axes => leg_set_inside procedure, public :: set_horizontal_position => leg_set_horz_pos procedure, public :: set_is_opaque => leg_set_opaque procedure, public :: set_is_visible => leg_set_visible procedure, public :: set_layout => leg_set_layout procedure, public :: set_vertical_position => leg_set_vert_pos","tags":"","loc":"module\\fplot_legend.html"},{"title":"fplot_errors – FPLOT","text":"Uses iso_fortran_env Variables Type Visibility Attributes Name Initial integer(kind=int32), public, parameter :: PLOT_ARRAY_SIZE_MISMATCH_ERROR = 1003 Occurs if there is an array size mismatch error. integer(kind=int32), public, parameter :: PLOT_GNUPLOT_FILE_ERROR = 1004 Occurs if there is a GNUPLOT file error. integer(kind=int32), public, parameter :: PLOT_INVALID_INPUT_ERROR = 1001 Occurs if an invalid input is provided. integer(kind=int32), public, parameter :: PLOT_INVALID_OPERATION_ERROR = 1002 Occurs if an attempt is made to perform an invalid operation. integer(kind=int32), public, parameter :: PLOT_OUT_OF_MEMORY_ERROR = 1000 Occurs if there is insufficient memory available for the\nrequested operation. Derived Types type, public :: errors Type-Bound Procedures procedure, public :: report_error Subroutines public subroutine report_array_size_mismatch_error (err, fcn, name, expected, actual) Reports an array size mismatch error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: name The variable name. integer(kind=int32), intent(in) :: expected The expected array size. integer(kind=int32), intent(in) :: actual The actual array size. public subroutine report_error (this, fcn, msg, code) Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: this character(len=*), intent(in) :: fcn character(len=*), intent(in) :: msg integer(kind=int32), intent(in) :: code public subroutine report_file_create_error (err, fcn, fname, flag) Reports an I/O error related to file creating. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: fname The filename. integer(kind=int32), intent(in) :: flag The error flag returned by the system. public subroutine report_matrix_size_mismatch_error (err, fcn, name, mexp, nexp, mact, nact) Reports a matrix size mismatch error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: name The variable name. integer(kind=int32), intent(in) :: mexp The expected number of rows. integer(kind=int32), intent(in) :: nexp The expected number of columns. integer(kind=int32), intent(in) :: mact The actual number of rows. integer(kind=int32), intent(in) :: nact The actual number of columns. public subroutine report_memory_error (err, fcn, flag) Reports a memory allocation error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. integer(kind=int32), intent(in) :: flag The error flag returned by the system.","tags":"","loc":"module\\fplot_errors.html"},{"title":"fplot_surface_plot – FPLOT","text":"Uses iso_fortran_env fplot_surface_plot_data fplot_legend fplot_plot_3d strings fplot_errors Derived Types type, public, extends( plot_3d ) :: surface_plot Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_allow_smoothing => surf_get_smooth procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_azimuth => p3d_get_azimuth procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => surf_get_cmd procedure, public :: get_coordinate_system => p3d_get_csys procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_elevation => p3d_get_elevation procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_light_intensity => surf_get_light_intensity procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_contours => surf_get_show_contours procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_hidden => surf_get_show_hidden procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_show_z_major_grid => p3d_get_show_z_major_grid procedure, public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid procedure, public :: get_specular_intensity => surf_get_specular_intensity procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_transparency => surf_get_transparency procedure, public :: get_use_lighting => surf_get_use_lighting procedure, public :: get_use_map_view => p3d_get_use_map_view procedure, public :: get_x_axis => p3d_get_x_axis procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y_axis => p3d_get_y_axis procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: get_z_axis => p3d_get_z_axis procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure, public :: get_z_major_grid_color => p3d_get_z_major_grid_color procedure, public :: get_z_major_grid_line_style => p3d_get_z_major_grid_line_style procedure, public :: get_z_major_grid_line_width => p3d_get_z_major_grid_line_width procedure, public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color procedure, public :: get_z_minor_grid_line_style => p3d_get_z_minor_grid_line_style procedure, public :: get_z_minor_grid_line_width => p3d_get_z_minor_grid_line_width procedure, public :: initialize => surf_init procedure, public :: is_title_defined => plt_has_title procedure, public :: p3d_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , p3d_push_data , surf_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_allow_smoothing => surf_set_smooth procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_azimuth => p3d_set_azimuth procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_coordinate_system => p3d_set_csys procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_elevation => p3d_set_elevation procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_light_intensity => surf_set_light_intensity procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_contours => surf_set_show_contours procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_hidden => surf_set_show_hidden procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_show_z_major_grid => p3d_set_show_z_major_grid procedure, public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid procedure, public :: set_specular_intensity => surf_set_specular_intensity procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_transparency => surf_set_transparency procedure, public :: set_use_lighting => surf_set_use_lighting procedure, public :: set_use_map_view => p3d_set_use_map_view procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_axis_title => p3d_set_x_axis_title procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y_axis_title => p3d_set_y_axis_title procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: set_z_axis_title => p3d_set_z_axis_title procedure, public :: set_z_intersect_xy => p3d_set_z_axis_intersect procedure, public :: set_z_major_grid_color => p3d_set_z_major_grid_color procedure, public :: set_z_major_grid_line_style => p3d_set_z_major_grid_line_style procedure, public :: set_z_major_grid_line_width => p3d_set_z_major_grid_line_width procedure, public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color procedure, public :: set_z_minor_grid_line_style => p3d_set_z_minor_grid_line_style procedure, public :: set_z_minor_grid_line_width => p3d_set_z_minor_grid_line_width procedure, public :: show_legend => plt_show_legend procedure, public :: surf_push_data","tags":"","loc":"module\\fplot_surface_plot.html"},{"title":"fplot_colors – FPLOT","text":"Uses iso_fortran_env Variables Type Visibility Attributes Name Initial type( color ), public, parameter :: CLR_BLACK = color(0, 0, 0, 0) Black. type( color ), public, parameter :: CLR_BLUE = color(0, 0, 255, 0) Blue. type( color ), public, parameter :: CLR_CYAN = color(0, 255, 255, 0) Cyan. type( color ), public, parameter :: CLR_GRAY = color(128, 128, 128, 0) Gray. type( color ), public, parameter :: CLR_GREEN = color(0, 128, 0, 0) Green. type( color ), public, parameter :: CLR_LIME = color(0, 255, 0, 0) Lime. type( color ), public, parameter :: CLR_MAGENTA = color(255, 0, 255, 0) Magenta. type( color ), public, parameter :: CLR_MAROON = color(128, 0, 0, 0) Maroon. type( color ), public, parameter :: CLR_NAVY = color(0, 0, 128, 0) Navy. type( color ), public, parameter :: CLR_OLIVE = color(128, 128, 0, 0) Olive. type( color ), public, parameter :: CLR_ORANGE = color(255, 165, 0, 0) Orange. type( color ), public, parameter :: CLR_PURPLE = color(128, 0, 128, 0) Purple. type( color ), public, parameter :: CLR_RED = color(255, 0, 0, 0) Red. type( color ), public, parameter :: CLR_SILVER = color(192, 192, 192, 0) Silver. type( color ), public, parameter :: CLR_TEAL = color(0, 128, 128, 0) Teal. type( color ), public, parameter :: CLR_WHITE = color(255, 255, 255, 0) White. type( color ), public, parameter :: CLR_YELLOW = color(255, 255, 0, 0) Yellow. type( color ), public, parameter, dimension(7) :: color_list = [color(0, int(0.447*255), int(0.741*255), 0), color(int(0.85*255), int(0.325*255), int(0.098*255), 0), color(int(0.929*255), int(0.694*255), int(0.125*255), 0), color(int(0.494*255), int(0.184*255), int(0.556*255), 0), color(int(0.466*255), int(0.674*255), int(0.188*255), 0), color(int(0.301*255), int(0.745*255), int(0.933*255), 0), color(int(0.635*255), int(0.078*255), int(0.184*255), 0)] Interfaces public interface operator(/=) private pure function clr_not_equals(x, y) result(rst) Arguments Type Intent Optional Attributes Name type( color ), intent(in) :: x type( color ), intent(in) :: y Return Value logical public interface operator(==) private pure function clr_equals(x, y) result(rst) Arguments Type Intent Optional Attributes Name type( color ), intent(in) :: x type( color ), intent(in) :: y Return Value logical Derived Types type, public :: color Describes an RGB color. Components Type Visibility Attributes Name Initial integer(kind=int32), public :: alpha = 0 The alpha component of the color (must be between 0 and 255).\nNotice, 0 is fully opaque and 255 is fully transparent. integer(kind=int32), public :: blue = 255 The blue component of the color (must be between 0 and 255). integer(kind=int32), public :: green = 0 The green component of the color (must be between 0 and 255). integer(kind=int32), public :: red = 0 The red component of the color (must be between 0 and 255). Type-Bound Procedures procedure, public, pass :: copy_from => clr_copy_from procedure, public, pass :: rgb_to_hex_string => clr_rgb_to_hex_string procedure, public, pass :: to_hex_string => clr_to_hex_string","tags":"","loc":"module\\fplot_colors.html"},{"title":"fplot_plot_axis – FPLOT","text":"Uses fplot_constants fplot_plot_object iso_fortran_env strings Interfaces interface public function pa_get_string_result(this) result(x) Retrieves a string from a plot_axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The string. Derived Types type, public :: name_value_pair Defines a name-value pair. Components Type Visibility Attributes Name Initial character(len=:), public, allocatable :: name The name. real(kind=real64), public :: value The associated value. type, public, extends( plot_object ) :: plot_axis Defines a plot axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure( pa_get_string_result ), public, deferred :: get_id_string procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width type, public, extends( plot_axis ) :: x_axis Defines an x-axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure, public :: get_id_string => xa_get_id procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width type, public, extends( plot_axis ) :: y2_axis Defines a secondary y-axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure, public :: get_id_string => y2a_get_id procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width type, public, extends( plot_axis ) :: y_axis Defines a y-axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure, public :: get_id_string => ya_get_id procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width type, public, extends( plot_axis ) :: z_axis Defines a z-axis object. Type-Bound Procedures procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure, public :: get_id_string => za_get_id procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width","tags":"","loc":"module\\fplot_plot_axis.html"},{"title":"fplot_surface_plot_data – FPLOT","text":"Uses fplot_plot_data iso_fortran_env strings fplot_errors Derived Types type, public, extends( plot_data ) :: surface_plot_data Provides a three-dimensional surface plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => surfd_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => surfd_set_data_1 procedure, public :: get_command_string => surfd_get_cmd procedure, public :: get_data_string => surfd_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_name => pd_get_name procedure, public :: get_size => surfd_get_size procedure, public :: get_use_wireframe => surfd_get_wireframe procedure, public :: get_x => surfd_get_x procedure, public :: get_y => surfd_get_y procedure, public :: get_z => surfd_get_z procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_name => pd_set_name procedure, public :: set_use_wireframe => surfd_set_wireframe procedure, public :: set_x => surfd_set_x procedure, public :: set_y => surfd_set_y procedure, public :: set_z => surfd_set_z","tags":"","loc":"module\\fplot_surface_plot_data.html"},{"title":"fplot_qt_terminal – FPLOT","text":"Uses fplot_terminal iso_fortran_env Derived Types type, public, extends( terminal ) :: qt_terminal Defines a terminal that utilizes QT. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => qt_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_qt_terminal.html"},{"title":"fplot_wxt_terminal – FPLOT","text":"Uses fplot_terminal iso_fortran_env Derived Types type, public, extends( terminal ) :: wxt_terminal A WXT terminal. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => wxt_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_wxt_terminal.html"},{"title":"fplot_multiplot – FPLOT","text":"Uses fplot_terminal fplot_windows_terminal fplot_latex_terminal iso_fortran_env fplot_wxt_terminal fplot_constants fplot_png_terminal fplot_svg_terminal fplot_qt_terminal fplot_plot_object strings fplot_pdf_terminal fplot_plot collections fplot_errors Derived Types type, public, extends( plot_object ) :: multiplot Defines a multi-plot layout. Components Type Visibility Attributes Name Initial class( terminal ), public, pointer :: m_terminal => null() The GNUPLOT terminal object to target. Finalizations Procedures final :: mp_clean Type-Bound Procedures procedure, public :: draw => mp_draw procedure, public :: get => mp_get procedure, public :: get_column_count => mp_get_cols procedure, public :: get_command_string => mp_get_command procedure, public :: get_font_name => mp_get_font procedure, public :: get_font_size => mp_get_font_size procedure, public :: get_plot_count => mp_get_count procedure, public :: get_row_count => mp_get_rows procedure, public :: get_terminal => mp_get_term procedure, public :: get_title => mp_get_title procedure, public :: initialize => mp_init procedure, public :: is_title_defined => mp_has_title procedure, public :: save_file => mp_save procedure, public :: set => mp_set procedure, public :: set_font_name => mp_set_font procedure, public :: set_font_size => mp_set_font_size procedure, public :: set_title => mp_set_title procedure, public :: set_window_size => mp_set_window_size","tags":"","loc":"module\\fplot_multiplot.html"},{"title":"fplot_core_routines – FPLOT","text":"Uses iso_fortran_env Functions public pure function linspace (start, finish, npts) result(x) Constructs a linearly spaced array. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in) :: start The first value in the array. real(kind=real64), intent(in) :: finish The last value in the array. integer(kind=int32), intent(in) :: npts The number of values in the array. Return Value real(kind=real64), allocatable, dimension(:) The resulting array. public pure function logspace (start, finish, npts) result(x) Construcst a logarithmically spaced array. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in) :: start The exponent of the first value in the array. real(kind=real64), intent(in) :: finish The exponent of the final value in the array. integer(kind=int32), intent(in) :: npts The number of values in the array. Return Value real(kind=real64), allocatable, dimension(:) The resulting array. public pure function meshgrid (x, y) result(xy) Constructs two matrices (X and Y) from x and y data arrays. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An M-element array of x data points. real(kind=real64), intent(in), dimension(:) :: y An N-element array of y data points. Return Value real(kind=real64), allocatable, dimension(:,:,:) An N-by-M-by-2 array containing the x data matrix on the first \npage of the array, and the y data matrix on the second page.","tags":"","loc":"module\\fplot_core_routines.html"},{"title":"fplot_plot_object – FPLOT","text":"Uses iso_fortran_env Interfaces interface public function get_string_result(this) result(x) Returns a string from a plot_object. Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:), allocatable The result string. Derived Types type, public :: plot_object The base type for all plot objects. Type-Bound Procedures procedure( get_string_result ), public, deferred :: get_command_string","tags":"","loc":"module\\fplot_plot_object.html"},{"title":"fplot_plot_data_error_bars – FPLOT","text":"Uses iso_fortran_env fplot_colors strings fplot_plot_data fplot_errors Derived Types type, public, extends( plot_data_colored ) :: plot_data_error_bars Defines a 2D error-bar based data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pde_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name generic, public :: define_x_error_data => pde_define_x_err , pde_define_x_err_lim generic, public :: define_xy_error_data => pde_define_xy_err , pde_define_xy_err_lim generic, public :: define_y_error_data => pde_define_y_err , pde_define_y_err_lim procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pde_get_cmd procedure, public :: get_count => pde_get_count procedure, public :: get_data_string => pde_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_width => pde_get_line_width procedure, public :: get_name => pd_get_name procedure, public :: get_plot_x_error_bars => pde_get_plot_x_err procedure, public :: get_plot_y_error_bars => pde_get_plot_y_err procedure, public :: get_use_error_box => pde_get_box procedure, public :: get_use_range => pde_get_use_range procedure, public :: pde_define_x_err procedure, public :: pde_define_x_err_lim procedure, public :: pde_define_xy_err procedure, public :: pde_define_xy_err_lim procedure, public :: pde_define_y_err procedure, public :: pde_define_y_err_lim procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_width => pde_set_line_width procedure, public :: set_name => pd_set_name procedure, public :: set_use_error_box => pde_set_box","tags":"","loc":"module\\fplot_plot_data_error_bars.html"},{"title":"fplot_colormap – FPLOT","text":"Uses forcolormap iso_fortran_env fplot_colors fplot_plot_object strings fplot_errors Interfaces interface public function cm_get_string_result(this) result(x) Retrieves a string result from a colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The string. Derived Types type, public, extends( plot_object ) :: colormap A colormap object for a surface plot. Type-Bound Procedures procedure( cm_get_string_result ), public, deferred :: get_color_string procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: cool_colormap Defines a colormap consisting of \"cool\" colors. Type-Bound Procedures procedure, public :: get_color_string => ccm_get_clr procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: custom_colormap Defines a custom colormap that utilizes the FORCOLORMAP library\nto provide the map. Finalizations Procedures final :: custom_final Type-Bound Procedures procedure, public :: get_color_string => custom_get_clr procedure, public :: get_colormap => custom_get procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_colormap => custom_set procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: earth_colormap Defines an earthy-colored colormap. Type-Bound Procedures procedure, public :: get_color_string => ecm_get_clr procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: grey_colormap Defines a grey-scaled colormap. Type-Bound Procedures procedure, public :: get_color_string => gcm_get_clr procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: hot_colormap Defines a colormap consisting of \"hot\" colors. Type-Bound Procedures procedure, public :: get_color_string => hcm_get_clr procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: parula_colormap Defines a colormap equivalent to the MATLAB parula colormap. Type-Bound Procedures procedure, public :: get_color_string => pcm_get_clr procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: rainbow_colormap Defines a rainbow colormap. Type-Bound Procedures procedure, public :: get_color_string => rcm_get_clr procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics","tags":"","loc":"module\\fplot_colormap.html"},{"title":"fplot_svg_terminal – FPLOT","text":"Uses fplot_terminal fplot_constants iso_fortran_env strings Derived Types type, public, extends( file_terminal ) :: svg_terminal An SVG terminal. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => svg_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_svg_terminal.html"},{"title":"fplot_delaunay_tri_surface – FPLOT","text":"Uses fplot_triangulations_delaunay_2d iso_fortran_env fplot_errors ieee_arithmetic Derived Types type, public, extends( delaunay_tri_2d ) :: delaunay_tri_surface Provides a type describing a triangulated surface. Type-Bound Procedures procedure, public :: create => d2d_init procedure, public :: define_function_values => dts_define_fcn generic, public :: evaluate => dts_interp_1, dts_interp_2 procedure, public :: find_triangle => d2d_get_tri_with_pt procedure, public :: get_indices => d2d_get_tris procedure, public :: get_point_count => d2d_get_pt_count procedure, public :: get_points_x => d2d_get_x_pts procedure, public :: get_points_y => d2d_get_y_pts procedure, public :: get_points_z => dts_get_z procedure, public :: get_triangle_count => d2d_get_tri_count","tags":"","loc":"module\\fplot_delaunay_tri_surface.html"},{"title":"fplot_arrow – FPLOT","text":"Uses iso_fortran_env fplot_constants fplot_colors fplot_plot_object strings Derived Types type, public, extends( plot_object ) :: plot_arrow Defines an arrow that can be drawn on a plot. Type-Bound Procedures procedure, public :: get_color => par_get_color procedure, public :: get_command_string => par_get_cmd procedure, public :: get_head_angle => par_get_head_angle procedure, public :: get_head_back_angle => par_get_head_back_angle procedure, public :: get_head_fill => par_get_fill procedure, public :: get_head_location => par_get_head procedure, public :: get_head_size => par_get_head_size procedure, public :: get_head_type => par_get_head_type procedure, public :: get_is_visible => par_get_is_visible procedure, public :: get_line_style => par_get_line_style procedure, public :: get_line_width => par_get_line_width procedure, public :: get_move_to_front => par_get_move_to_front procedure, public :: get_tail_location => par_get_tail procedure, public :: get_use_default_size => par_get_use_default_size procedure, public :: set_color => par_set_color procedure, public :: set_head_angle => par_set_head_angle procedure, public :: set_head_back_angle => par_set_head_back_angle procedure, public :: set_head_fill => par_set_fill generic, public :: set_head_location => par_set_head_1, par_set_head_2, par_set_head_3 procedure, public :: set_head_size => par_set_head_size procedure, public :: set_head_type => par_set_head_type procedure, public :: set_is_visible => par_set_is_visible procedure, public :: set_line_style => par_set_line_style procedure, public :: set_line_width => par_set_line_width procedure, public :: set_move_to_front => par_set_move_to_front generic, public :: set_tail_location => par_set_tail_1, par_set_tail_2, par_set_tail_3 procedure, public :: set_use_default_size => par_set_use_default_size","tags":"","loc":"module\\fplot_arrow.html"},{"title":"fplot_stats_plots – FPLOT","text":"Uses fplot_terminal fplot_plot_data_2d fplot_plot_axis iso_fortran_env fplot_plot_data_histogram fplot_constants fplot_colors fplot_plot_object fplot_multiplot fplot_errors strings fplot_plot collections fplot_plot_2d Derived Types type, public, extends( plot_object ) :: correlation_plot Defines a multiplot arrangement designed to illustrate correlation\nbetween data sets. Type-Bound Procedures procedure, public :: draw => cp_draw procedure, public :: get => cp_get procedure, public :: get_column_count => cp_get_cols procedure, public :: get_command_string => cp_get_command procedure, public :: get_font_name => cp_get_font procedure, public :: get_font_size => cp_get_font_size procedure, public :: get_plot_count => cp_get_count procedure, public :: get_row_count => cp_get_rows procedure, public :: get_terminal => cp_get_term procedure, public :: initialize => cp_init procedure, public :: save_file => cp_save procedure, public :: set_font_name => cp_set_font procedure, public :: set_font_size => cp_set_font_size","tags":"","loc":"module\\fplot_stats_plots.html"},{"title":"fplot_core – FPLOT","text":"FPLOT is a Fortran library providing a means of interacting with GNUPLOT from a Fortran program. The library\nis designed in an object-oriented manner, and as such utilizes language \nfeatures that require a compiler that supports the 2003 standard. Additionally, it is expected that Gnuplot is installed on the system \npath. For full functionallity, a minimum of GNUPLOT v5.2 is expected. Uses fplot_tri_surface_plot_data fplot_label fplot_legend fplot_plot_data_3d fplot_plot_object fplot_plot_bar fplot_plot_data fplot_triangulations_delaunay_2d fplot_vector_field_plot_data fplot_terminal fplot_plot_axis fplot_plot_data_2d fplot_plot_data_histogram fplot_png_terminal fplot_colors fplot_svg_terminal fplot_core_routines fplot_qt_terminal fplot_plot_3d fplot_plot_data_function fplot_stats_plots fplot_plot_polar fplot_pdf_terminal fplot_arrow fplot_plot_2d fplot_windows_terminal fplot_surface_plot fplot_plot_data_error_bars fplot_delaunay_tri_surface strings fplot_multiplot fplot_latex_terminal fplot_wxt_terminal fplot_surface_plot_data fplot_plot_data_tri_2d fplot_constants fplot_colormap fplot_plot_data_box_whisker fplot_plot fplot_plot_data_bar fplot_filled_plot_data","tags":"","loc":"module\\fplot_core.html"},{"title":"fplot_filled_plot_data – FPLOT","text":"Uses iso_fortran_env fplot_colors strings fplot_plot_data fplot_errors Derived Types type, public, extends( plot_data_colored ) :: filled_plot_data Defines a two-dimensional filled plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => fpd_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => fpd_define_data procedure, public :: get_axes_string => fpd_get_axes_cmd procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => fpd_get_cmd procedure, public :: get_data_string => fpd_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => fpd_get_draw_against_y2 procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_name => pd_get_name procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => fpd_set_draw_against_y2 procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name","tags":"","loc":"module\\fplot_filled_plot_data.html"},{"title":"fplot_constants – FPLOT","text":"Uses iso_fortran_env Variables Type Visibility Attributes Name Initial integer(kind=int32), public, parameter :: ARROW_BACKHEAD = 2 Defines an arrow with it's head at it's back end (tail). integer(kind=int32), public, parameter :: ARROW_EMPTY = 101 Defines an empty arrow head. integer(kind=int32), public, parameter :: ARROW_FILLED = 100 Defines a filled arrow head. integer(kind=int32), public, parameter :: ARROW_HEAD = 1 Defines an arrow with a traditional head. integer(kind=int32), public, parameter :: ARROW_HEADS = 3 Defines an arrow with a head on both ends. integer(kind=int32), public, parameter :: ARROW_NO_BORDER = 103 Defines an arrow head with no border. integer(kind=int32), public, parameter :: ARROW_NO_FILL = 102 Defines an arrow head without fill. integer(kind=int32), public, parameter :: ARROW_NO_HEAD = 0 Defines an arrow with no head. integer(kind=int32), public, parameter :: COORDINATES_CARTESIAN = 100 Defines a Cartesian coordinate system. integer(kind=int32), public, parameter :: COORDINATES_CYLINDRICAL = 102 Defines a cylindrical coordinate system. integer(kind=int32), public, parameter :: COORDINATES_SPHERICAL = 101 Defines a spherical coordinate system. character(len=*), public, parameter :: GNUPLOT_DEFAULT_FONTNAME = \"Arial\" Defines the default font used by text on the graph. integer(kind=int32), public, parameter :: GNUPLOT_DEFAULT_FONT_SIZE = 14 Defines the default font size used by text on the graph. integer(kind=int32), public, parameter :: GNUPLOT_DEFAULT_WINDOW_HEIGHT = 420 The default GNUPLOT window height, in pixels. integer(kind=int32), public, parameter :: GNUPLOT_DEFAULT_WINDOW_WIDTH = 640 The default GNUPLOT window width, in pixels. character(len=*), public, parameter :: GNUPLOT_HORIZONTAL_ALIGN_CENTER = \"center\" Defines the text should be centered. character(len=*), public, parameter :: GNUPLOT_HORIZONTAL_ALIGN_LEFT = \"left\" Defines the text should be aligned to the left. character(len=*), public, parameter :: GNUPLOT_HORIZONTAL_ALIGN_RIGHT = \"right\" Defines the text should be aligned to the right. integer(kind=int32), public, parameter :: GNUPLOT_MAX_LABEL_LENGTH = 128 Defines the maximum number of characters allowed in a graph label. integer(kind=int32), public, parameter :: GNUPLOT_MAX_PATH_LENGTH = 256 Defines the maximum number of characters allowed in a file path. character(len=*), public, parameter :: GNUPLOT_ROTATION_ORIGIN_CENTER = \"center\" Defines the text should be rotated around the center of the text. character(len=*), public, parameter :: GNUPLOT_ROTATION_ORIGIN_LEFT = \"left\" Defines the text should be rotated around the left side of the text. character(len=*), public, parameter :: GNUPLOT_ROTATION_ORIGIN_RIGHT = \"right\" Defines the text should be rotated around the right side of the text. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_LATEX = 5 Defines a LATEX terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_PDF = 7 Defines a PDF terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_PNG = 4 Defines a PNG terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_QT = 3 Defines a QT terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_SVG = 6 Defines an SVG terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_WIN32 = 1 Defines a Win32 terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_WXT = 2 Defines a WXT terminal. character(len=*), public, parameter :: LEGEND_ARRANGE_HORIZONTALLY = \"horizontal\" Defines the legend should be arranged such that the row count\nis minimized. character(len=*), public, parameter :: LEGEND_ARRANGE_VERTICALLY = \"vertical\" Defines the legend should be arranged such that the column count\nis minimized. character(len=*), public, parameter :: LEGEND_BOTTOM = \"bottom\" Defines the legend should be placed at the bottom of the plot. character(len=*), public, parameter :: LEGEND_CENTER = \"center\" Defines the legend should be centered on the plot. character(len=*), public, parameter :: LEGEND_LEFT = \"left\" Defines the legend should be placed at the left of the plot. character(len=*), public, parameter :: LEGEND_RIGHT = \"right\" Defines the legend should be placed at the right of the plot. character(len=*), public, parameter :: LEGEND_TOP = \"top\" Defines the legend should be placed at the top of the plot. integer(kind=int32), public, parameter :: LINE_DASHED = 2 Defines a dashed line. integer(kind=int32), public, parameter :: LINE_DASH_DOTTED = 4 Defines a dash-dotted line. integer(kind=int32), public, parameter :: LINE_DASH_DOT_DOT = 5 Defines a dash-dot-dotted line. integer(kind=int32), public, parameter :: LINE_DOTTED = 3 Defines a dotted line. integer(kind=int32), public, parameter :: LINE_SOLID = 1 Defines a solid line. integer(kind=int32), public, parameter :: MARKER_ASTERISK = 3 Defines an * data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_CIRCLE = 6 Defines an empty circle-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_NABLA = 10 Defines an empty nabla-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_RHOMBUS = 12 Defines an empty rhombus-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_SQUARE = 4 Defines an empty square-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_TRIANGLE = 8 Defines an empty triangle-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_CIRCLE = 7 Defines an filled circle-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_NABLA = 11 Defines an filled nabla-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_RHOMBUS = 13 Defines an filled rhombus-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_SQUARE = 5 Defines an filled square-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_TRIANGLE = 9 Defines an filled triangle-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_PLUS = 1 Defines a + data point marker. integer(kind=int32), public, parameter :: MARKER_X = 2 Defines an x data point marker. integer(kind=int32), public, parameter :: PLOTDATA_MAX_NAME_LENGTH = 128 Defines the maximum number of characters allowed in a graph label. character(len=*), public, parameter :: POLAR_THETA_BOTTOM = \"bottom\" States that theta should start at the bottom of the plot. character(len=*), public, parameter :: POLAR_THETA_CCW = \"ccw\" States that theta should proceed in a counter-clockwise direction. character(len=*), public, parameter :: POLAR_THETA_CW = \"cw\" States that theta should proceed in a clockwise direction. character(len=*), public, parameter :: POLAR_THETA_LEFT = \"left\" States that theta should start at the left of the plot. character(len=*), public, parameter :: POLAR_THETA_RIGHT = \"right\" States that theta should start at the right of the plot. character(len=*), public, parameter :: POLAR_THETA_TOP = \"top\" States that theta should start at the top of the plot.","tags":"","loc":"module\\fplot_constants.html"},{"title":"fplot_plot_bar – FPLOT","text":"Uses iso_fortran_env strings fplot_plot_2d Derived Types type, public, extends( plot_2d ) :: plot_bar Defines a 2D plot tailored towards bar plotting. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_bar_width => pb_get_bar_width procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => pb_get_cmd procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_jitter_overlap => p2d_get_jitter_overlap procedure, public :: get_jitter_spread => p2d_get_jitter_spread procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_spacing => pb_get_spacing procedure, public :: get_square_axes => p2d_get_square_axes procedure, public :: get_stacked => pb_get_stacked procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_use_jittering => p2d_get_use_jitter procedure, public :: get_use_y2_axis => p2d_get_use_y2 procedure, public :: get_x_axis => p2d_get_x_axis procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y2_axis => p2d_get_y2_axis procedure, public :: get_y_axis => p2d_get_y_axis procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: initialize => p2d_init procedure, public :: is_title_defined => plt_has_title procedure, public :: p2d_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , p2d_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_bar_width => pb_set_bar_width procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_jitter_overlap => p2d_set_jitter_overlap procedure, public :: set_jitter_spread => p2d_set_jitter_spread procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_spacing => pb_set_spacing procedure, public :: set_square_axes => p2d_set_square_axes procedure, public :: set_stacked => pb_set_stacked procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_use_jittering => p2d_set_use_jitter procedure, public :: set_use_y2_axis => p2d_set_use_y2 procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_axis_title => p2d_set_x_axis_title procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y2_axis_title => p2d_set_y2_axis_title procedure, public :: set_y_axis_title => p2d_set_y_axis_title procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: show_legend => plt_show_legend","tags":"","loc":"module\\fplot_plot_bar.html"},{"title":"fplot_plot_data_box_whisker – FPLOT","text":"Uses iso_fortran_env fplot_colors strings fplot_plot_data fplot_errors Derived Types type, public, extends( plot_data_colored ) :: plot_data_box_whisker A container for box-whisker plot data. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdbw_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pdbw_define_data_xstring procedure, public :: get_box_fill_opacity => pdbw_get_opacity procedure, public :: get_box_width => pdbw_get_box_width procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdbw_get_cmd procedure, public :: get_data_string => pdbw_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => pdbw_get_use_y2 procedure, public :: get_fill_boxes => pdbw_get_fill_boxes procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_width => pdbw_get_line_width procedure, public :: get_midline_color => pdbw_get_midline_color procedure, public :: get_midline_width => pdbw_get_midline_width procedure, public :: get_name => pd_get_name procedure, public :: get_use_whiskerbars => pdbw_get_use_whiskerbars procedure, public :: get_whiskerbar_width => pdbw_get_whiskerbar_width procedure, public :: set_box_fill_opacity => pdbw_set_opacity procedure, public :: set_box_width => pdbw_set_box_width procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => pdbw_set_use_y2 procedure, public :: set_fill_boxes => pdbw_set_fill_boxes procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_width => pdbw_set_line_width procedure, public :: set_midline_color => pdbw_set_midline_color procedure, public :: set_midline_width => pdbw_set_midline_width procedure, public :: set_name => pd_set_name procedure, public :: set_use_whiskerbars => pdbw_set_use_whiskerbars procedure, public :: set_whiskerbar_width => pdbw_set_whiskerbar_width","tags":"","loc":"module\\fplot_plot_data_box_whisker.html"},{"title":"fplot_simplify – FPLOT","text":"Uses iso_fortran_env fplot_errors Interfaces public interface simplify_polyline private function simplify_polyline_2d1(x, y, tol, err) result(ln) Simplifies a 2D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, and the second \ncolumn contains the y-coordinates. private function simplify_polyline_3d1(x, y, z, tol, err) result(ln) Simplifies a 3D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: z An N-element array containing the z-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, the second \ncolumn contains the y-coordinates, and the third column contains \nthe z-coordinates. private function simplify_polyline_mtx(xy, tol, err) result(ln) Simplifies a 2D or 3D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:,:) :: xy An N-by-2 or N-by-3 matrix containing the polyline vertex data. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, the second \ncolumn contains the y-coordinates, and if necessary, the third \ncolumn contains the z-coordinates.","tags":"","loc":"module\\fplot_simplify.html"},{"title":"fplot_plot_data_tri_2d – FPLOT","text":"Uses iso_fortran_env fplot_constants fplot_colors strings fplot_plot_data fplot_triangulations_delaunay_2d Derived Types type, public, extends( plot_data_colored ) :: plot_data_tri_2d Defines a 2D triangulated data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdt2d_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pdt2d_define_data procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdt2d_get_cmd procedure, public :: get_data_string => pdt2d_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => pdt2d_get_line_style procedure, public :: get_line_width => pdt2d_get_line_width procedure, public :: get_name => pd_get_name procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => pdt2d_set_line_style procedure, public :: set_line_width => pdt2d_set_line_width procedure, public :: set_name => pd_set_name","tags":"","loc":"module\\fplot_plot_data_tri_2d.html"},{"title":"fplot_vector_field_plot_data – FPLOT","text":"Uses iso_fortran_env fplot_colors strings fplot_plot_data fplot_errors Derived Types type, public, extends( plot_data_colored ) :: vector_field_plot_data Defines a two-dimensional vector-field plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => vfpd_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => vfpd_define_data procedure, public :: get_arrow_size => vfpd_get_arrow_size procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => vfpd_get_cmd procedure, public :: get_data_string => vfpd_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_fill_arrow => vfpd_get_fill_arrow procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_name => pd_get_name procedure, public :: get_use_data_dependent_colors => vfpd_get_use_data_dependent_colors procedure, public :: set_arrow_size => vfpd_set_arrow_size procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_fill_arrow => vfpd_set_fill_arrow procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name","tags":"","loc":"module\\fplot_vector_field_plot_data.html"},{"title":"fplot_plot_3d – FPLOT","text":"Uses fplot_plot_axis iso_fortran_env fplot_constants fplot_colors fplot_plot_data fplot_legend fplot_plot_data_3d strings fplot_plot fplot_errors Derived Types type, public, extends( plot ) :: plot_3d A plot object defining a 3D plot. Finalizations Procedures final :: p3d_clean_up Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_azimuth => p3d_get_azimuth procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => p3d_get_cmd procedure, public :: get_coordinate_system => p3d_get_csys procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_elevation => p3d_get_elevation procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_show_z_major_grid => p3d_get_show_z_major_grid procedure, public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_use_map_view => p3d_get_use_map_view procedure, public :: get_x_axis => p3d_get_x_axis procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y_axis => p3d_get_y_axis procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: get_z_axis => p3d_get_z_axis procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure, public :: get_z_major_grid_color => p3d_get_z_major_grid_color procedure, public :: get_z_major_grid_line_style => p3d_get_z_major_grid_line_style procedure, public :: get_z_major_grid_line_width => p3d_get_z_major_grid_line_width procedure, public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color procedure, public :: get_z_minor_grid_line_style => p3d_get_z_minor_grid_line_style procedure, public :: get_z_minor_grid_line_width => p3d_get_z_minor_grid_line_width procedure, public :: initialize => p3d_init procedure, public :: is_title_defined => plt_has_title procedure, public :: p3d_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , p3d_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_azimuth => p3d_set_azimuth procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_coordinate_system => p3d_set_csys procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_elevation => p3d_set_elevation procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_show_z_major_grid => p3d_set_show_z_major_grid procedure, public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_use_map_view => p3d_set_use_map_view procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_axis_title => p3d_set_x_axis_title procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y_axis_title => p3d_set_y_axis_title procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: set_z_axis_title => p3d_set_z_axis_title procedure, public :: set_z_intersect_xy => p3d_set_z_axis_intersect procedure, public :: set_z_major_grid_color => p3d_set_z_major_grid_color procedure, public :: set_z_major_grid_line_style => p3d_set_z_major_grid_line_style procedure, public :: set_z_major_grid_line_width => p3d_set_z_major_grid_line_width procedure, public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color procedure, public :: set_z_minor_grid_line_style => p3d_set_z_minor_grid_line_style procedure, public :: set_z_minor_grid_line_width => p3d_set_z_minor_grid_line_width procedure, public :: show_legend => plt_show_legend","tags":"","loc":"module\\fplot_plot_3d.html"},{"title":"fplot_terminal – FPLOT","text":"Uses fplot_constants fplot_plot_object iso_fortran_env strings Interfaces interface public function term_get_string_result(this) result(x) Retrieves a string from a terminal. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The string. Derived Types type, public, extends( terminal ) :: file_terminal Defines a terminal meant to save results directly to file \n(e.g. PNG, SVG, etc.). Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure( term_get_string_result ), public, deferred :: get_id_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width type, public, extends( plot_object ) :: terminal A GNUPLOT terminal object. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure( term_get_string_result ), public, deferred :: get_id_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_terminal.html"},{"title":"fplot_plot_data – FPLOT","text":"Uses iso_fortran_env fplot_constants fplot_colors fplot_plot_object strings fplot_errors Interfaces interface public subroutine pd_clear_action(this) Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. interface public function pd_get_string_result(this) result(x) Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. interface public pure function spd_get_int_value(this) result(x) Gets an integer value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The value. interface public function spd_get_string_result(this) result(x) Gets a string value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The string. interface public pure function spd_get_value(this, index) result(x) Gets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. Return Value real(kind=real64) The value. interface public subroutine spd_set_value(this, index, x) Sets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. real(kind=real64), intent(in) :: x The value. Derived Types type, public, extends( plot_data_colored ) :: line_plot_data A plot_data object for describing line series data. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure( pd_clear_action ), public, deferred :: clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => lpd_get_cmd procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_name => pd_get_name procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_name => pd_set_name type, public, extends( plot_object ) :: plot_data A container for plot data. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure( pd_clear_action ), public, deferred :: clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure( get_string_result ), public, deferred :: get_command_string procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_name => pd_get_name procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_name => pd_set_name type, public, extends( plot_data ) :: plot_data_colored Defines a colored plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure( pd_clear_action ), public, deferred :: clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: get_color_index => pdc_get_color_index procedure( get_string_result ), public, deferred :: get_command_string procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_name => pd_get_name procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name type, public, extends( line_plot_data ) :: scatter_plot_data A plot_data object for describing scatter plot data sets. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure( pd_clear_action ), public, deferred :: clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure( spd_get_string_result ), public, deferred :: get_axes_string procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => spd_get_cmd procedure( spd_get_int_value ), public, deferred :: get_count procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_fill_curve => spd_get_filled procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_name => pd_get_name procedure, public :: get_simplification_factor => spd_get_simplify_factor procedure, public :: get_simplify_data => spd_get_simplify_data procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size procedure( spd_get_value ), public, deferred :: get_x procedure( spd_get_value ), public, deferred :: get_y procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_fill_curve => spd_set_filled procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_name => pd_set_name procedure, public :: set_simplification_factor => spd_set_simplify_factor procedure, public :: set_simplify_data => spd_set_simplify_data procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size procedure( spd_set_value ), public, deferred :: set_x procedure( spd_set_value ), public, deferred :: set_y Functions public function lpd_get_cmd (this) result(rst) Gets the GNUPLOT command string to represent this line_plot_data\nobject. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value character(len=:), allocatable The command string. public function spd_get_cmd (this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string.","tags":"","loc":"module\\fplot_plot_data.html"},{"title":"fplot_plot_data_bar – FPLOT","text":"Uses iso_fortran_env fplot_colors strings fplot_plot_data fplot_errors Derived Types type, public, extends( plot_data_colored ) :: plot_data_bar Defines a data set tailored to bar charts. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdb_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name generic, public :: define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3, pdb_set_data_4, pdb_set_data_5, pdb_set_data_6 procedure, public :: get => pdb_get_data procedure, public :: get_axes_string => pdb_get_axes_cmd procedure, public :: get_bar_color => pdb_get_bar_color procedure, public :: get_bar_per_label_count => pdb_get_col_count procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdb_get_cmd procedure, public :: get_count => pdb_get_count procedure, public :: get_data => pdb_get_data_set procedure, public :: get_data_string => pdb_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => pdb_get_use_y2 procedure, public :: get_is_filled => pdb_get_is_filled procedure, public :: get_label => pdb_get_label procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_name => pd_get_name procedure, public :: get_series_name => pdb_get_series_name procedure, public :: get_transparency => pdb_get_alpha procedure, public :: get_use_labels => pdb_get_use_labels procedure, public :: set => pdb_set_data procedure, public :: set_bar_color => pdb_set_bar_color procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_data_1 => pdb_set_data_1_core procedure, public :: set_data_2 => pdb_set_data_2_core procedure, public :: set_data_3 => pdb_set_data_3_core procedure, public :: set_data_4 => pdb_set_data_4_core procedure, public :: set_data_5 => pdb_set_data_5_core procedure, public :: set_data_6 => pdb_set_data_6_core procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => pdb_set_use_y2 procedure, public :: set_is_filled => pdb_set_is_filled procedure, public :: set_label => pdb_set_label procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name procedure, public :: set_series_name => pdb_set_series_name procedure, public :: set_transparency => pdb_set_alpha procedure, public :: set_use_labels => pdb_set_use_labels","tags":"","loc":"module\\fplot_plot_data_bar.html"},{"title":"fplot_pdf_terminal – FPLOT","text":"Uses fplot_terminal iso_fortran_env strings Derived Types type, public, extends( file_terminal ) :: pdf_terminal Defines a terminal used for producing PDF outputs. Type-Bound Procedures procedure, public :: get_command_string => pdf_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => pdf_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_resolution => pdf_get_resolution procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_resolution => pdf_set_resolution procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_pdf_terminal.html"},{"title":"fplot_tri_surface_plot_data – FPLOT","text":"Uses fplot_plot_data iso_fortran_env fplot_delaunay_tri_surface strings Derived Types type, public, extends( plot_data ) :: tri_surface_plot_data Provides a three-dimensional surface plot data set constructed of\ntriangulated points. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => tspd_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => tspd_define_data procedure, public :: get_command_string => tspd_get_cmd procedure, public :: get_data_string => tspd_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_name => pd_get_name procedure, public :: get_use_wireframe => tspd_get_wireframe procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_name => pd_set_name procedure, public :: set_use_wireframe => tspd_set_wireframe","tags":"","loc":"module\\fplot_tri_surface_plot_data.html"},{"title":"fplot_plot_data_3d.f90 – FPLOT","text":"Source Code module fplot_plot_data_3d use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_simplify use strings implicit none private public :: plot_data_3d type , extends ( scatter_plot_data ) :: plot_data_3d !! Defines a three-dimensional plot data set. real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! An N-by-3 matrix containing the x, y, and z data points. contains procedure , public :: get_count => pd3d_get_data_count procedure , public :: get_x => pd3d_get_x_data procedure , public :: set_x => pd3d_set_x_data procedure , public :: get_y => pd3d_get_y_data procedure , public :: set_y => pd3d_set_y_data procedure , public :: get_z => pd3d_get_z_data procedure , public :: set_z => pd3d_set_z_data procedure , public :: get_axes_string => pd3d_get_axes_cmd procedure , public :: get_data_string => pd3d_get_data_cmd procedure , public :: define_data => pd3d_set_data_1 procedure , public :: get_x_data => pd3d_get_x_array procedure , public :: get_y_data => pd3d_get_y_array procedure , public :: get_z_data => pd3d_get_z_array procedure , public :: get_color_data => pd3d_get_c_array procedure , public :: get_point_size_data => pd3d_get_c_array procedure , public :: clear_data => pd3d_clear_data end type contains ! ------------------------------------------------------------------------------ pure function pd3d_get_data_count ( this ) result ( x ) !! Gets the number of data points. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. integer ( int32 ) :: x !! The number of data points. if ( allocated ( this % m_data )) then x = size ( this % m_data , 1 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pd3d_get_x_data ( this , index ) result ( x ) !! Gets the requested X data point. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 1 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd3d_set_x_data ( this , index , x ) !! Sets the requested X data point. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 1 ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pd3d_get_y_data ( this , index ) result ( x ) !! Gets the requested Y data point. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 2 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd3d_set_y_data ( this , index , x ) !! Sets the requested Y data point. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 2 ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pd3d_get_z_data ( this , index ) result ( x ) !! Gets the requested Z data point. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 3 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd3d_set_z_data ( this , index , x ) !! Sets the requested Z data point. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 3 ) = x end if end subroutine ! ------------------------------------------------------------------------------ function pd3d_get_axes_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string defining which axes the data !! is to be plotted against. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. character ( len = :), allocatable :: x !! The command string. ! Output x = \"\" end function ! ------------------------------------------------------------------------------ function pd3d_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data to plot. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i character :: delimiter , nl real ( real64 ), allocatable , dimension (:) :: xv , yv , zv , cv , ps real ( real64 ), allocatable , dimension (:,:) :: pts real ( real64 ) :: tol , maxz , minz , eps logical :: usecolors , usevarpoints ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) usecolors = this % get_use_data_dependent_colors () usevarpoints = this % get_use_variable_size_points () ! Process xv = this % get_x_data () yv = this % get_y_data () zv = this % get_z_data () if ( usecolors . and . usevarpoints ) then cv = this % get_color_data () ps = this % get_point_size_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( zv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( ps ( i ))) call str % append ( delimiter ) call str % append ( to_string ( cv ( i ))) call str % append ( nl ) end do else if ( usecolors . and . . not . usevarpoints ) then cv = this % get_color_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( zv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( cv ( i ))) call str % append ( nl ) end do else if (. not . usecolors . and . usevarpoints ) then ps = this % get_point_size_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( zv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( ps ( i ))) call str % append ( nl ) end do else if ( this % get_simplify_data ()) then maxz = maxval ( zv ) minz = minval ( zv ) tol = abs ( this % get_simplification_factor () * ( maxz - minz )) eps = 1 0.0d0 * epsilon ( eps ) if ( tol < eps ) tol = eps pts = simplify_polyline ( xv , yv , zv , tol ) do i = 1 , size ( pts , 1 ) call str % append ( to_string ( pts ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( pts ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( pts ( i , 3 ))) call str % append ( nl ) end do else do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( zv ( i ))) call str % append ( nl ) end do end if end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine pd3d_set_data_1 ( this , x , y , z , c , ps , err ) !! Defines the data set. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinate data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinate data. real ( real64 ), intent ( in ), dimension (:) :: z !! An N-element array containing the z coordinate data. real ( real64 ), intent ( in ), dimension (:), optional :: c !! An N-element array defining how color should vary with the !! current colormap for each value. real ( real64 ), intent ( in ), dimension (:), optional :: ps !! An N-element array defining the size of each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag , ncols class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) ncols = 3 if ( present ( c )) ncols = ncols + 1 if ( present ( ps )) ncols = ncols + 1 if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pd3d_set_data_1\" , & \"y\" , n , size ( y )) return end if if ( size ( z ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pd3d_set_data_1\" , & \"z\" , n , size ( z )) return end if if ( present ( c )) then if ( size ( c ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pd3d_set_data_1\" , \"c\" , n , size ( c )) return end if end if if ( present ( ps )) then if ( size ( ps ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pd3d_set_data_1\" , \"ps\" , n , size ( ps )) end if end if ! Process if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , ncols ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pd3d_set_data_1\" , flag ) return end if if ( present ( c ) . and . present ( ps )) then call this % set_use_data_dependent_colors (. true .) call this % set_use_variable_size_points (. true .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = z ( i ) this % m_data ( i , 4 ) = ps ( i ) this % m_data ( i , 5 ) = c ( i ) end do else if ( present ( c ) . and . . not . present ( ps )) then call this % set_use_data_dependent_colors (. true .) call this % set_use_variable_size_points (. false .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = z ( i ) this % m_data ( i , 4 ) = c ( i ) end do else if (. not . present ( c ) . and . present ( ps )) then call this % set_use_data_dependent_colors (. false .) call this % set_use_variable_size_points (. true .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = z ( i ) this % m_data ( i , 4 ) = ps ( i ) end do else call this % set_use_data_dependent_colors (. false .) call this % set_use_variable_size_points (. false .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = z ( i ) end do end if end subroutine ! ------------------------------------------------------------------------------ function pd3d_get_x_array ( this ) result ( x ) !! Gets the stored X data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 1 ) end if end function ! ------------------------------------------------------------------------------ function pd3d_get_y_array ( this ) result ( x ) !! Gets the stored Y data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 2 ) end if end function ! ------------------------------------------------------------------------------ function pd3d_get_z_array ( this ) result ( x ) !! Gets the stored Z data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 3 ) end if end function ! ****************************************************************************** ! ADDED: OCT. 9, 2020 - JAC ! ------------------------------------------------------------------------------ function pd3d_get_c_array ( this ) result ( x ) !! Gets the stored color scaling data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then if ( size ( this % m_data , 2 ) == 4 ) then x = this % m_data (:, 4 ) else if ( size ( this % m_data , 2 ) == 5 ) then x = this % m_data (:, 5 ) end if end if end function ! ------------------------------------------------------------------------------ function pd3d_get_ps_array ( this ) result ( x ) !! Gets the stored point scaling data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then if ( size ( this % m_data , 2 ) > 3 ) then x = this % m_data (:, 4 ) end if end if end function ! ------------------------------------------------------------------------------ subroutine pd3d_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_3d.f90.html"},{"title":"fplot_plot_data_2d.f90 – FPLOT","text":"Source Code module fplot_plot_data_2d use iso_fortran_env use fplot_plot_data use fplot_simplify use fplot_errors use strings implicit none private public :: plot_data_2d type , extends ( scatter_plot_data ) :: plot_data_2d !! Defines a two-dimensional plot data set. real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! An N-by-2 matrix containing the x and y data points. !> Draw against the secondary y axis? logical , private :: m_useY2 = . false . !! Draw against the secondary y axis? contains procedure , public :: get_axes_string => pd2d_get_axes_cmd procedure , public :: get_data_string => pd2d_get_data_cmd procedure , public :: get_count => pd2d_get_data_count procedure , public :: get_x => pd2d_get_x_data procedure , public :: set_x => pd2d_set_x_data procedure , public :: get_y => pd2d_get_y_data procedure , public :: set_y => pd2d_set_y_data procedure , public :: get_draw_against_y2 => pd2d_get_draw_against_y2 procedure , public :: set_draw_against_y2 => pd2d_set_draw_against_y2 generic , public :: define_data => pd2d_set_data_1 , pd2d_set_data_2 procedure :: pd2d_set_data_1 procedure :: pd2d_set_data_2 procedure , public :: get_x_data => pd2d_get_x_array procedure , public :: get_y_data => pd2d_get_y_array procedure , public :: get_color_data => pd2d_get_c_array procedure , public :: get_point_size_data => pd2d_get_ps_array procedure , public :: clear_data => pd2d_clear_data end type contains ! ------------------------------------------------------------------------------ function pd2d_get_axes_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string defining which axes the data !! is to be plotted against. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. character ( len = :), allocatable :: x !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then x = \"axes x1y2\" else x = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ function pd2d_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data !! to plot. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i character :: delimiter , nl real ( real64 ), allocatable , dimension (:) :: xv , yv , cv , ps real ( real64 ), allocatable , dimension (:,:) :: pts real ( real64 ) :: tol , maxy , miny , eps logical :: usecolors , usevarpoints ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) usecolors = this % get_use_data_dependent_colors () usevarpoints = this % get_use_variable_size_points () ! Process xv = this % get_x_data () yv = this % get_y_data () if ( usecolors . and . usevarpoints ) then cv = this % get_color_data () ps = this % get_point_size_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( ps ( i ))) call str % append ( delimiter ) call str % append ( to_string ( cv ( i ))) call str % append ( nl ) end do else if ( usecolors . and . . not . usevarpoints ) then cv = this % get_color_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( cv ( i ))) call str % append ( nl ) end do else if (. not . usecolors . and . usevarpoints ) then ps = this % get_point_size_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( ps ( i ))) call str % append ( nl ) end do else if ( this % get_simplify_data ()) then maxy = maxval ( yv ) miny = minval ( yv ) tol = abs ( this % get_simplification_factor () * ( maxy - miny )) eps = 1 0.0d0 * epsilon ( eps ) if ( tol < eps ) tol = eps pts = simplify_polyline ( xv , yv , tol ) do i = 1 , size ( pts , 1 ) call str % append ( to_string ( pts ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( pts ( i , 2 ))) call str % append ( nl ) end do else do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( nl ) end do end if end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function pd2d_get_data_count ( this ) result ( x ) !! Gets the number of data points. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. integer ( int32 ) :: x !! The number of data points. if ( allocated ( this % m_data )) then x = size ( this % m_data , 1 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pd2d_get_x_data ( this , index ) result ( x ) !! Gets the requested X data point. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 1 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd2d_set_x_data ( this , index , x ) !! Sets the requested X data point. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 1 ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pd2d_get_y_data ( this , index ) result ( x ) !! Gets the requested Y data point. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 2 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd2d_set_y_data ( this , index , x ) !! Sets the requested Y data point. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 2 ) = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine pd2d_set_data_1 ( this , x , y , c , ps , err ) !! Defines the data set to plot. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinate data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinate data. real ( real64 ), intent ( in ), dimension (:), optional :: c !! An N-element array defining how color should vary with the !! current colormap for each value. real ( real64 ), intent ( in ), dimension (:), optional :: ps !! An N-element array defining the size of each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error-handling object. ! Local Variables integer ( int32 ) :: i , n , flag , ncols class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) ncols = 2 if ( present ( c )) ncols = ncols + 1 if ( present ( ps )) ncols = ncols + 1 if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pd2d_set_data_1\" , & \"y\" , n , size ( y )) return end if if ( present ( c )) then if ( size ( c ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pd2d_set_data_1\" , \"c\" , n , size ( c )) return end if end if if ( present ( ps )) then if ( size ( ps ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pd2d_set_data_1\" , \"ps\" , n , size ( ps )) return end if end if ! Process if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , ncols ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pd2d_set_data_1\" , flag ) return end if ! if (present(c)) then ! call this%set_use_data_dependent_colors(.true.) ! do concurrent (i = 1:n) ! this%m_data(i, 1) = x(i) ! this%m_data(i, 2) = y(i) ! this%m_data(i, 3) = c(i) ! end do ! else ! call this%set_use_data_dependent_colors(.false.) ! do concurrent (i = 1:n) ! this%m_data(i, 1) = x(i) ! this%m_data(i, 2) = y(i) ! end do ! end if if ( present ( c ) . and . present ( ps )) then call this % set_use_data_dependent_colors (. true .) call this % set_use_variable_size_points (. true .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = ps ( i ) this % m_data ( i , 4 ) = c ( i ) end do else if ( present ( c ) . and . . not . present ( ps )) then call this % set_use_data_dependent_colors (. true .) call this % set_use_variable_size_points (. false .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = c ( i ) end do else if (. not . present ( c ) . and . present ( ps )) then call this % set_use_data_dependent_colors (. false .) call this % set_use_variable_size_points (. true .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = ps ( i ) end do else call this % set_use_data_dependent_colors (. false .) call this % set_use_variable_size_points (. false .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) end do end if end subroutine ! ------------------------------------------------------------------------------ pure function pd2d_get_draw_against_y2 ( this ) result ( x ) !! Gets a value determining if the data should be plotted against !! the secondary y-axis. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. logical :: x !! Returns true if the data should be plotted against the secondary !! y-axis; else, false to plot against the primary y-axis. x = this % m_useY2 end function ! -------------------- subroutine pd2d_set_draw_against_y2 ( this , x ) !! Sets a value determining if the data should be plotted against !! the secondary y-axis. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. logical , intent ( in ) :: x !! Set to true if the data should be plotted against the !! secondary y-axis; else, false to plot against the primary y-axis. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ subroutine pd2d_set_data_2 ( this , y , err ) !! Defines the data set to plot. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y-coordinate data. This !! data will be plotted against its own index. class ( errors ), intent ( inout ), optional , target :: err !! An error-handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( y ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Process if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 2 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pd2d_set_data_2\" , flag ) return end if do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = real ( i , real64 ) this % m_data ( i , 2 ) = y ( i ) end do end subroutine ! ------------------------------------------------------------------------------ function pd2d_get_x_array ( this ) result ( x ) !! Gets the stored X data array. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 1 ) end if end function ! ------------------------------------------------------------------------------ function pd2d_get_y_array ( this ) result ( x ) !! Gets the stored Y data array. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 2 ) end if end function ! ****************************************************************************** ! ADDED: OCT. 8, 2020 - JAC ! ------------------------------------------------------------------------------ function pd2d_get_c_array ( this ) result ( x ) !! Gets the stored color scaling data array. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then if ( size ( this % m_data , 2 ) == 3 ) then x = this % m_data (:, 3 ) else if ( size ( this % m_data , 2 ) == 4 ) then x = this % m_data (:, 4 ) end if end if end function ! ------------------------------------------------------------------------------ function pd2d_get_ps_array ( this ) result ( x ) !! Gets the stored point size data array. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then if ( size ( this % m_data , 2 ) > 2 ) then x = this % m_data (:, 3 ) end if end if end function ! ------------------------------------------------------------------------------ subroutine pd2d_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_2d.f90.html"},{"title":"fplot_windows_terminal.f90 – FPLOT","text":"Source Code ! fplot_windows_terminal.f90 module fplot_windows_terminal use iso_fortran_env use fplot_terminal implicit none private public :: windows_terminal type , extends ( terminal ) :: windows_terminal !! A Windows-specific terminal. character ( len = 3 ), private :: m_id = \"win\" !! The terminal ID string contains procedure , public :: get_id_string => wt_get_term_string end type contains function wt_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( windows_terminal ), intent ( in ) :: this !! The windows_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function end module","tags":"","loc":"sourcefile\\fplot_windows_terminal.f90.html"},{"title":"fplot_latex_terminal.f90 – FPLOT","text":"Source Code module fplot_latex_terminal use iso_fortran_env use fplot_terminal use fplot_constants use strings implicit none private public :: latex_terminal type , extends ( file_terminal ) :: latex_terminal !! A LATEX terminal. character ( len = 14 ), private :: m_id = \"epslatex color\" !! The terminal ID string contains procedure , public :: get_id_string => tex_get_term_string end type contains ! ------------------------------------------------------------------------------ function tex_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( latex_terminal ), intent ( in ) :: this !! The latex_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_latex_terminal.f90.html"},{"title":"fplot_plot_polar.f90 – FPLOT","text":"Source Code ! fplot_polar.f90 module fplot_plot_polar use iso_fortran_env use fplot_plot use fplot_terminal use fplot_errors use fplot_constants use fplot_legend use fplot_plot_data use fplot_plot_data_2d use fplot_colors use strings implicit none private public :: plot_polar type , extends ( plot ) :: plot_polar private !> @brief Allow the plot to autoscale? logical :: m_autoscale = . true . !> @brief The minimum radius value - only applicable if m_autoscale is !! false. real ( real64 ) :: m_minrad = 0.0d0 !> @brief The maximum radius value - only applicable if m_autoscale is !! false. real ( real64 ) :: m_maxrad = 1.0d0 !> @brief The location for theta = 0 character ( len = :), allocatable :: m_thetaStart !> @brief The direction for theta character ( len = :), allocatable :: m_thetaDirection contains final :: plr_clean_up procedure , public :: initialize => plr_init procedure , public :: get_command_string => plr_get_cmd procedure , public :: get_autoscale => plr_get_autoscale procedure , public :: set_autoscale => plr_set_autoscale procedure , public :: get_radial_limits => plr_get_limits procedure , public :: set_radial_limits => plr_set_limits procedure , public :: get_theta_start_position => plr_get_theta_start procedure , public :: set_theta_start_position => plr_set_theta_start procedure , public :: get_theta_direction => plr_get_theta_direction procedure , public :: set_theta_direction => plr_set_theta_direction procedure , public :: plr_push_data generic , public :: push => plr_push_data end type contains ! ------------------------------------------------------------------------------ subroutine plr_clean_up ( this ) !! Cleans up resources held by the plot_polar object. type ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. call this % free_resources () end subroutine ! ------------------------------------------------------------------------------ subroutine plr_init ( this , term , fname , err ) !! Initializes the plot_polar object. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Initialize the base class ! call plt_init(this, term, fname, errmgr) call this % plot % initialize ( term , fname , errmgr ) ! Initialize the rest of the object this % m_thetaStart = POLAR_THETA_RIGHT this % m_thetaDirection = POLAR_THETA_CCW end subroutine ! ------------------------------------------------------------------------------ function plr_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot_polar object. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. character ( len = :), allocatable :: x !! The command string. ! Local Variables integer ( int32 ) :: i , n type ( string_builder ) :: str type ( legend ), pointer :: leg real ( real64 ) :: lmargin , rmargin , tmargin , bmargin real ( real64 ) :: lim ( 2 ) ! class(plot_label), pointer :: lbl class ( plot_data ), pointer :: ptr type ( color ) :: clr ! Initialization call str % initialize () ! Call the base routine call str % append ( this % plot % get_command_string ()) ! Margin lmargin = this % get_left_margin () rmargin = this % get_right_margin () tmargin = this % get_top_margin () bmargin = this % get_bottom_margin () if ( lmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set lmargin at screen \" ) call str % append ( to_string ( lmargin )) end if if ( rmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set rmargin at screen \" ) call str % append ( to_string ( rmargin )) end if if ( tmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set tmargin at screen \" ) call str % append ( to_string ( tmargin )) end if if ( bmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set bmargin at screen \" ) call str % append ( to_string ( bmargin )) end if ! Polar-Specific Settings call str % append ( new_line ( 'a' )) call str % append ( \"unset border\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set polar\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set size square\" ) call str % append ( new_line ( 'a' )) call str % append ( \"unset xtics\" ) call str % append ( new_line ( 'a' )) call str % append ( \"unset ytics\" ) call str % append ( new_line ( 'a' )) call str % append ( 'set ttics 0, 30 format \"%g\".GPVAL_DEGREE_SIGN' ) call str % append ( new_line ( 'a' )) call str % append ( \"set mttics 3\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set theta \" ) call str % append ( this % get_theta_start_position ()) call str % append ( \" \" ) call str % append ( this % get_theta_direction ()) ! Radial Limits if (. not . this % get_autoscale ()) then lim = this % get_radial_limits () call str % append ( new_line ( 'a' )) call str % append ( \"set rrange [\" ) call str % append ( to_string ( lim ( 1 ))) call str % append ( \":\" ) call str % append ( to_string ( lim ( 2 ))) call str % append ( \"]\" ) end if ! Grid if ( this % get_show_gridlines ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid r polar' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if ! Title n = len_trim ( this % get_title ()) if ( n > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( 'set title \"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if ! Border call str % append ( new_line ( 'a' )) if ( this % get_draw_border ()) then call str % append ( \"set border polar\" ) else call str % append ( \"set border 0\" ) end if call str % append ( new_line ( 'a' )) call str % append ( \"set border linewidth \" ) call str % append ( to_string ( this % get_border_line_width ())) ! Legend call str % append ( new_line ( 'a' )) leg => this % get_legend () if ( associated ( leg )) call str % append ( leg % get_command_string ()) ! ! Labels ! do i = 1, this%get_label_count() ! lbl => this%get_label(i) ! if (.not.associated(lbl)) cycle ! call str%append(new_line('a')) ! call str%append(lbl%get_command_string()) ! end do ! Define the datablock n = this % get_count () do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) call str % append ( \"$\" ) call str % append ( ptr % get_datablock_name ()) call str % append ( \" << EOD\" ) call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"EOD\" ) end do ! Define the plot function and data formatting commands call str % append ( new_line ( 'a' )) call str % append ( \"plot \" ) do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( ptr % get_command_string ()) if ( i /= n ) call str % append ( \", \" ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function plr_get_autoscale ( this ) result ( rst ) !! Gets a logical value determining if the axis should be !! automatically scaled to fit the data. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. logical :: rst !! Returns true if the plot will autoscale; else, false. rst = this % m_autoscale end function ! -------------------- subroutine plr_set_autoscale ( this , x ) !! Sets a logical value determining if the axis should be !! automatically scaled to fit the data. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. logical , intent ( in ) :: x !! Set to true if the plot will autoscale; else, false. this % m_autoscale = x end subroutine ! ------------------------------------------------------------------------------ pure function plr_get_limits ( this ) result ( rst ) !! Gets the radial axis limits if autoscaling is inactive. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. real ( real64 ) :: rst ( 2 ) !! A 2-element array containing the minimum and maximum limit !! values in that order. rst = [ this % m_minrad , this % m_maxrad ] end function ! -------------------- subroutine plr_set_limits ( this , x ) !! Sets the radial axis limits if autoscaling is inactive. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. real ( real64 ), intent ( in ) :: x ( 2 ) !! A 2-element array containing the minimum and maximum limit !! values in that order. this % m_minrad = minval ( x ) this % m_maxrad = maxval ( x ) end subroutine ! ------------------------------------------------------------------------------ pure function plr_get_theta_start ( this ) result ( rst ) !! Gets the position for \\theta = 0. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. character ( len = :), allocatable :: rst !! The starting position. It is one of the following flags. !! !! - POLAR_THETA_BOTTOM !! !! - POLAR_THETA_TOP !! !! - POLAR_THETA_RIGHT !! !! - POLAR_THETA_LEFT rst = this % m_thetaStart end function ! -------------------- subroutine plr_set_theta_start ( this , x ) !! Sets the position for \\theta = 0. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. character ( len = * ), intent ( in ) :: x !! The starting position. It is one of the following flags. !! !! - POLAR_THETA_BOTTOM !! !! - POLAR_THETA_TOP !! !! - POLAR_THETA_RIGHT !! !! - POLAR_THETA_LEFT if ( x /= POLAR_THETA_BOTTOM . and . & x /= POLAR_THETA_TOP . and . & x /= POLAR_THETA_LEFT . and . & x /= POLAR_THETA_RIGHT ) & then ! Reset to default this % m_thetaStart = POLAR_THETA_RIGHT else this % m_thetaStart = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plr_get_theta_direction ( this ) result ( rst ) !! Gets the \\theta direction. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. character ( len = :), allocatable :: rst !! The direction. It is one of the following flags. !! !! - POLAR_THETA_CCW !! !! - POLAR_THETA_CW rst = this % m_thetaDirection end function ! -------------------- subroutine plr_set_theta_direction ( this , x ) !! Sets the \\theta direction. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. character ( len = * ), intent ( in ) :: x !! The direction. It is one of the following flags. !! !! - POLAR_THETA_CCW !! !! - POLAR_THETA_CW if ( x /= POLAR_THETA_CCW . and . x /= POLAR_THETA_CW ) then ! Reset to default this % m_thetaDirection = POLAR_THETA_CCW else this % m_thetaDirection = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine plr_push_data ( this , angle , radial , lw , name , ls , lc ) !! Adds a data set to the plot. class ( plot_polar ), intent ( inout ) :: this !! The [[plot_polar]] object. real ( real64 ), intent ( in ), dimension (:) :: angle !! The angular values. real ( real64 ), intent ( in ), dimension ( size ( angle )) :: radial !! The radial values. real ( real32 ), intent ( in ), optional :: lw !! The line width. character ( len = * ), intent ( in ), optional :: name !! A name to associate with the data set. integer ( int32 ), intent ( in ), optional :: ls !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID type ( color ), intent ( in ), optional :: lc !! The line color. type ( plot_data_2d ) :: pd call pd % define_data ( angle , radial ) if ( present ( lw )) call pd % set_line_width ( lw ) if ( present ( name )) call pd % set_name ( name ) if ( present ( ls )) call pd % set_line_style ( ls ) if ( present ( lc )) call pd % set_line_color ( lc ) call this % push ( pd ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_polar.f90.html"},{"title":"fplot_png_terminal.f90 – FPLOT","text":"Source Code ! fplot_png_terminal.f90 module fplot_png_terminal use iso_fortran_env use strings use fplot_terminal use fplot_constants implicit none private public :: png_terminal type , extends ( file_terminal ) :: png_terminal !! Defines a terminal used for producing PNG outputs. character ( len = 17 ), private :: m_id = \"pngcairo enhanced\" !! The terminal ID string contains procedure , public :: get_id_string => png_get_term_string end type contains ! ------------------------------------------------------------------------------ function png_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( png_terminal ), intent ( in ) :: this !! The png_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_png_terminal.f90.html"},{"title":"fplot_plot_2d.f90 – FPLOT","text":"Source Code ! fplot_plot_2d.f90 module fplot_plot_2d use iso_fortran_env use fplot_plot_data use fplot_plot use fplot_errors use fplot_plot_axis use fplot_legend use fplot_plot_data_2d use fplot_colors use strings implicit none private public :: plot_2d type , extends ( plot ) :: plot_2d !! A plot object defining a 2D plot. type ( x_axis ), private , pointer :: m_xAxis => null () !! The x-axis. type ( y_axis ), private , pointer :: m_yAxis => null () !! The y-axis. type ( y2_axis ), private , pointer :: m_y2Axis => null () !! The secondary y-axis. logical , private :: m_useY2 = . false . !! Display the secondary y axis? logical , private :: m_set2square = . false . !! Set to square scaling. logical , private :: m_useJitter = . false . !! Allow jittering? real ( real32 ), private :: m_jitterOverlap = 1.0 !! Jitter overlap. real ( real32 ), private :: m_jitterSpread = 1.0 !! Jitter horizontal spread. contains final :: p2d_clean_up procedure , public :: initialize => p2d_init procedure , public :: get_command_string => p2d_get_cmd procedure , public :: get_x_axis => p2d_get_x_axis procedure , public :: get_y_axis => p2d_get_y_axis procedure , public :: get_y2_axis => p2d_get_y2_axis procedure , public :: get_use_y2_axis => p2d_get_use_y2 procedure , public :: set_use_y2_axis => p2d_set_use_y2 procedure , public :: get_square_axes => p2d_get_square_axes procedure , public :: set_square_axes => p2d_set_square_axes procedure , public :: get_use_jittering => p2d_get_use_jitter procedure , public :: set_use_jittering => p2d_set_use_jitter procedure , public :: get_jitter_overlap => p2d_get_jitter_overlap procedure , public :: set_jitter_overlap => p2d_set_jitter_overlap procedure , public :: get_jitter_spread => p2d_get_jitter_spread procedure , public :: set_jitter_spread => p2d_set_jitter_spread procedure , public :: set_x_axis_title => p2d_set_x_axis_title procedure , public :: set_y_axis_title => p2d_set_y_axis_title procedure , public :: set_y2_axis_title => p2d_set_y2_axis_title procedure , public :: p2d_push_data generic , public :: push => p2d_push_data end type contains ! ------------------------------------------------------------------------------ subroutine p2d_clean_up ( this ) !! Cleans up resources held by the plot_2d object. type ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. call this % free_resources () if ( associated ( this % m_xAxis )) then deallocate ( this % m_xAxis ) nullify ( this % m_xAxis ) end if if ( associated ( this % m_yAxis )) then deallocate ( this % m_yAxis ) nullify ( this % m_yAxis ) end if if ( associated ( this % m_y2Axis )) then deallocate ( this % m_y2Axis ) nullify ( this % m_y2Axis ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_init ( this , term , fname , err ) !! Initializes the plot_2d object. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Initialize the base class ! call plt_init(this, term, fname, errmgr) call this % plot % initialize ( term , fname , errmgr ) ! Process flag = 0 if (. not . associated ( this % m_xAxis )) then allocate ( this % m_xAxis , stat = flag ) end if if ( flag == 0 . and . . not . associated ( this % m_yAxis )) then allocate ( this % m_yAxis , stat = flag ) end if if ( flag == 0 . and . . not . associated ( this % m_y2Axis )) then allocate ( this % m_y2Axis , stat = flag ) end if ! Error Checking if ( flag /= 0 ) then call report_memory_error ( errmgr , \"p2d_init\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function p2d_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot_2d object. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , n real ( real32 ) :: lmargin , rmargin , tmargin , bmargin class ( plot_data ), pointer :: ptr class ( plot_axis ), pointer :: axis , xAxis , yAxis type ( legend ), pointer :: leg type ( color ) :: clr ! class(plot_label), pointer :: lbl ! Initialization call str % initialize () ! Call the base routine call str % append ( this % plot % get_command_string ()) ! Grid if ( this % get_show_x_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid xtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_x_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mxtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_y_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid ytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_y_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_gridlines ()) then ! X call str % append ( new_line ( 'a' )) call str % append ( 'set grid xtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) ! Y call str % append ( new_line ( 'a' )) call str % append ( 'set grid ytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if ! Title n = len_trim ( this % get_title ()) if ( n > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( 'set title \"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if ! Margin lmargin = this % get_left_margin () rmargin = this % get_right_margin () tmargin = this % get_top_margin () bmargin = this % get_bottom_margin () if ( lmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set lmargin at screen \" ) call str % append ( to_string ( lmargin )) end if if ( rmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set rmargin at screen \" ) call str % append ( to_string ( rmargin )) end if if ( tmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set tmargin at screen \" ) call str % append ( to_string ( tmargin )) end if if ( bmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set bmargin at screen \" ) call str % append ( to_string ( bmargin )) end if ! Axes call str % append ( new_line ( 'a' )) xAxis => this % get_x_axis () if ( associated ( xAxis )) call str % append ( xAxis % get_command_string ()) call str % append ( new_line ( 'a' )) yAxis => this % get_y_axis () if ( associated ( yAxis )) call str % append ( yAxis % get_command_string ()) ! Secondary Axes if ( this % get_use_y2_axis ()) then call str % append ( new_line ( 'a' )) axis => this % get_y2_axis () if ( associated ( axis )) then call str % append ( axis % get_command_string ()) call str % append ( new_line ( 'a' )) call str % append ( \"set y2tics\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set ytics nomirror\" ) end if end if ! Tic Marks if (. not . this % get_tics_inward ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set tics out\" ) end if if ( xAxis % get_zero_axis ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set xtics axis\" ) end if if ( yAxis % get_zero_axis ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set ytics axis\" ) end if ! Border call str % append ( new_line ( 'a' )) call str % append ( \"set border back\" ) if ( this % get_draw_border ()) then n = 31 else n = 0 if (. not . xAxis % get_zero_axis ()) n = n + 1 if (. not . yAxis % get_zero_axis ()) n = n + 2 call str % append ( new_line ( 'a' )) call str % append ( \"set xtics nomirror\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set ytics nomirror\" ) if ( this % get_use_y2_axis ()) then n = n + 8 end if end if call str % append ( new_line ( 'a' )) if ( n > 0 ) then call str % append ( \"set border \" ) call str % append ( to_string ( n )) else call str % append ( \"unset border\" ) end if call str % append ( new_line ( 'a' )) call str % append ( \"set border linewidth \" ) call str % append ( to_string ( this % get_border_line_width ())) ! Scaling if ( this % get_axis_equal ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set view equal xy\" ) end if if ( this % get_square_axes ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set size square\" ) end if ! Legend call str % append ( new_line ( 'a' )) leg => this % get_legend () if ( associated ( leg )) call str % append ( leg % get_command_string ()) ! ! Labels ! do i = 1, this%get_label_count() ! lbl => this%get_label(i) ! if (.not.associated(lbl)) cycle ! call str%append(new_line('a')) ! call str%append(lbl%get_command_string()) ! end do ! Jittering call str % append ( new_line ( 'a' )) if ( this % get_use_jittering ()) then call str % append ( \"set jitter overlap \" ) call str % append ( to_string ( this % get_jitter_overlap ())) call str % append ( \" spread \" ) call str % append ( to_string ( this % get_jitter_spread ())) else call str % append ( \"unset jitter\" ) end if ! Define the datablock n = this % get_count () do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) if ( is_plot_data_function ( ptr )) then call str % append ( ptr % get_data_string ()) else call str % append ( \"$\" ) call str % append ( ptr % get_datablock_name ()) call str % append ( \" << EOD\" ) call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"EOD\" ) end if end do ! Define the plot function and data formatting commands call str % append ( new_line ( 'a' )) call str % append ( \"plot \" ) do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( ptr % get_command_string ()) if ( i /= n ) call str % append ( \", \" ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function p2d_get_x_axis ( this ) result ( ptr ) !! Gets the x-axis object. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. class ( plot_axis ), pointer :: ptr !! A pointer to the x-axis object. ptr => this % m_xAxis end function ! ------------------------------------------------------------------------------ function p2d_get_y_axis ( this ) result ( ptr ) !! Gets the y-axis object. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. class ( plot_axis ), pointer :: ptr !! A pointer to the y-axis object. ptr => this % m_yAxis end function ! ------------------------------------------------------------------------------ function p2d_get_y2_axis ( this ) result ( ptr ) !! Gets the secondary y-axis object. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. class ( plot_axis ), pointer :: ptr !! A pointer to the secondary y-axis object. ptr => this % m_y2Axis end function ! ------------------------------------------------------------------------------ pure function p2d_get_use_y2 ( this ) result ( x ) !! Gets a flag determining if the secondary y-axis should be !! displayed. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. logical :: x !! Returns true if the axis should be displayed; else, false. x = this % m_useY2 end function ! -------------------- subroutine p2d_set_use_y2 ( this , x ) !! Sets a flag determining if the secondary y-axis should be !! displayed. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. logical , intent ( in ) :: x !! Set to true if the axis should be displayed; else, false. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ pure function p2d_get_square_axes ( this ) result ( rst ) !! Gets a logical flag determining if the axes size should be squared !! off. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. logical :: rst !! Returns true if the axes are to be sized to a square; else, !! false. rst = this % m_set2square end function ! -------------------- subroutine p2d_set_square_axes ( this , x ) !! Sets a logical flag determining if the axes size should be !! squared off. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. logical , intent ( in ) :: x !! Set to true if the axes are to be sized to a square; else, !! false. this % m_set2square = x end subroutine ! ------------------------------------------------------------------------------ pure function p2d_get_use_jitter ( this ) result ( rst ) !! Gets a logical value determining if jittering should be used. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. logical :: rst !! True if jittering should be used; else, false. rst = this % m_useJitter end function ! -------------------- subroutine p2d_set_use_jitter ( this , x ) !! Sets a logical value determining if jittering should be used. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. logical , intent ( in ) :: x !! Set to true if jittering should be used; else, false. this % m_useJitter = x end subroutine ! ------------------------------------------------------------------------------ pure function p2d_get_jitter_overlap ( this ) result ( rst ) !! Gets the jitter overalp. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. real ( real32 ) :: rst !! The jitter overlap. rst = this % m_jitterOverlap end function ! -------------------- subroutine p2d_set_jitter_overlap ( this , x ) !! Sets the jitter overlap. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. real ( real32 ), intent ( in ) :: x !! The jitter overlap. this % m_jitterOverlap = x end subroutine ! ------------------------------------------------------------------------------ pure function p2d_get_jitter_spread ( this ) result ( rst ) !! Gets the jitter horizontal spread. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. real ( real32 ) :: rst !! The jitter horizontal spread. rst = this % m_jitterSpread end function ! -------------------- subroutine p2d_set_jitter_spread ( this , x ) !! Sets the jitter horizontal spread. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. real ( real32 ), intent ( in ) :: x !! The jitter horizontal spread. this % m_jitterSpread = x end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_set_x_axis_title ( this , x ) !! Sets the title associated with the plot's x-axis. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_xAxis )) then call this % m_xAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_set_y_axis_title ( this , x ) !! Sets the title associated with the plot's y-axis. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_yAxis )) then call this % m_yAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_set_y2_axis_title ( this , x ) !! Sets the title associated with the plot's secondary y-axis. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_y2Axis )) then call this % m_y2Axis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_push_data ( this , x , y , lw , name , ls , lc ) !! Adds a data set to the plot. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. real ( real64 ), intent ( in ), dimension (:) :: x !! The x-values. real ( real64 ), intent ( in ), dimension ( size ( x )) :: y !! The y-values. real ( real32 ), intent ( in ), optional :: lw !! The line width. character ( len = * ), intent ( in ), optional :: name !! A name to associate with the data set. integer ( int32 ), intent ( in ), optional :: ls !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID type ( color ), intent ( in ), optional :: lc !! The line color. type ( plot_data_2d ) :: pd call pd % define_data ( x , y ) if ( present ( lw )) call pd % set_line_width ( lw ) if ( present ( name )) call pd % set_name ( name ) if ( present ( ls )) call pd % set_line_style ( ls ) if ( present ( lc )) call pd % set_line_color ( lc ) call this % push ( pd ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_2d.f90.html"},{"title":"fplot_plot.f90 – FPLOT","text":"Source Code ! fplot_plot.f90 module fplot_plot use iso_fortran_env use fplot_plot_object use fplot_plot_data use fplot_terminal use fplot_windows_terminal use fplot_qt_terminal use fplot_wxt_terminal use fplot_png_terminal use fplot_latex_terminal use fplot_svg_terminal use fplot_pdf_terminal use fplot_colormap use fplot_colors use fplot_errors use fplot_constants use fplot_legend use fplot_label use fplot_arrow use fplot_plot_data_function use strings use collections implicit none private public :: plot public :: is_plot_data_function type , extends ( plot_object ) :: plot !! Defines the basic GNUPLOT plot. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_title = \"\" !! The plot title. logical , private :: m_hasTitle = . false . !! Has a title? class ( terminal ), private , pointer :: m_terminal => null () !! The GNUPLOT terminal object to target. type ( list ), private :: m_data !! A collection of plot_data items to plot. type ( legend ), private , pointer :: m_legend => null () !! The legend. logical , private :: m_showGrid = . false . !! Show grid lines? logical , private :: m_ticsIn = . true . !! Point tic marks in? logical , private :: m_drawBorder = . false . !! Draw the border? type ( list ), private :: m_labels ! Added 6/22/2018, JAC !! A collection of plot_label items to draw. integer ( int32 ), private :: m_colorIndex = 1 !! The color index to use for automatic line coloring for scatter plots. logical , private :: m_axisEqual = . false . !! Determines if the axes should be scaled proportionally. class ( colormap ), private , pointer :: m_colormap !! The colormap. logical , private :: m_showColorbar = . true . !! Show the colorbar? type ( list ), private :: m_arrows ! Added 1/3/2024, JAC !! A collection of plot_arrow items to draw. real ( real32 ), private :: m_leftMargin = - 1.0 real ( real32 ), private :: m_rightMargin = - 1.0 real ( real32 ), private :: m_topMargin = - 1.0 real ( real32 ), private :: m_bottomMargin = - 1.0 real ( real32 ), private :: m_borderLineWidth = 1.2 !! Border line width logical , private :: m_showXMajorGrid = . false . logical , private :: m_showXMinorGrid = . false . logical , private :: m_showYMajorGrid = . false . logical , private :: m_showYMinorGrid = . false . type ( color ), private :: m_xMajorGridColor = color ( 204 , 204 , 204 , 0 ) type ( color ), private :: m_xMinorGridColor = color ( 230 , 230 , 230 , 0 ) type ( color ), private :: m_yMajorGridColor = color ( 204 , 204 , 204 , 0 ) type ( color ), private :: m_yMinorGridColor = color ( 230 , 230 , 230 , 0 ) integer ( int32 ), private :: m_xMajorGridLineStyle = LINE_SOLID integer ( int32 ), private :: m_xMinorGridLineStyle = LINE_DASHED integer ( int32 ), private :: m_yMajorGridLineStyle = LINE_SOLID integer ( int32 ), private :: m_yMinorGridLineStyle = LINE_DASHED real ( real32 ), private :: m_xMajorGridLineWidth = 1.2 real ( real32 ), private :: m_xMinorGridLineWidth = 0.7 real ( real32 ), private :: m_yMajorGridLineWidth = 1.2 real ( real32 ), private :: m_yMinorGridLineWidth = 0.7 contains procedure , public :: free_resources => plt_clean_up procedure , public :: initialize => plt_init procedure , public :: get_title => plt_get_title procedure , public :: set_title => plt_set_title procedure , public :: is_title_defined => plt_has_title procedure , public :: get_legend => plt_get_legend procedure , public :: get_count => plt_get_count procedure , public :: plt_push_data generic , public :: push => plt_push_data procedure , public :: pop => plt_pop_data procedure , public :: clear_all => plt_clear_all procedure , public :: get => plt_get procedure , public :: set => plt_set procedure , public :: get_terminal => plt_get_term procedure , public :: get_show_gridlines => plt_get_show_grid procedure , public :: set_show_gridlines => plt_set_show_grid procedure , public :: draw => plt_draw procedure , public :: save_file => plt_save procedure , public :: get_font_name => plt_get_font procedure , public :: set_font_name => plt_set_font procedure , public :: get_font_size => plt_get_font_size procedure , public :: set_font_size => plt_set_font_size procedure , public :: get_tics_inward => plt_get_tics_in procedure , public :: set_tics_inward => plt_set_tics_in procedure , public :: get_draw_border => plt_get_draw_border procedure , public :: set_draw_border => plt_set_draw_border procedure , public :: push_label => plt_push_label procedure , public :: pop_label => plt_pop_label procedure , public :: get_label => plt_get_label procedure , public :: set_label => plt_set_label procedure , public :: get_label_count => plt_get_label_count procedure , public :: clear_all_labels => plt_clear_labels procedure , public :: get_axis_equal => plt_get_axis_equal procedure , public :: set_axis_equal => plt_set_axis_equal procedure , public :: get_colormap => plt_get_colormap procedure , public :: set_colormap => plt_set_colormap procedure , public :: get_show_colorbar => plt_get_show_colorbar procedure , public :: set_show_colorbar => plt_set_show_colorbar procedure , public :: get_command_string => plt_get_cmd procedure , public :: push_arrow => plt_push_arrow procedure , public :: pop_arrow => plt_pop_arrow procedure , public :: get_arrow => plt_get_arrow procedure , public :: set_arrow => plt_set_arrow procedure , public :: get_arrow_count => plt_get_arrow_count procedure , public :: clear_arrows => plt_clear_arrows procedure , public :: get_left_margin => plt_get_left_margin procedure , public :: set_left_margin => plt_set_left_margin procedure , public :: get_right_margin => plt_get_right_margin procedure , public :: set_right_margin => plt_set_right_margin procedure , public :: get_top_margin => plt_get_top_margin procedure , public :: set_top_margin => plt_set_top_margin procedure , public :: get_bottom_margin => plt_get_bottom_margin procedure , public :: set_bottom_margin => plt_set_bottom_margin procedure , public :: show_legend => plt_show_legend procedure , public :: set_window_size => plt_set_window_size procedure , public :: get_border_line_width => plt_get_border_line_width procedure , public :: set_border_line_width => plt_set_border_line_width procedure , public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure , public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure , public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure , public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure , public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure , public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure , public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure , public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure , public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure , public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure , public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure , public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure , public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure , public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure , public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure , public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure , public :: get_x_major_grid_line_style => & plt_get_x_major_grid_line_style procedure , public :: set_x_major_grid_line_style => & plt_set_x_major_grid_line_style procedure , public :: get_x_minor_grid_line_style => & plt_get_x_minor_grid_line_style procedure , public :: set_x_minor_grid_line_style => & plt_set_x_minor_grid_line_style procedure , public :: get_y_major_grid_line_style => & plt_get_y_major_grid_line_style procedure , public :: set_y_major_grid_line_style => & plt_set_y_major_grid_line_style procedure , public :: get_y_minor_grid_line_style => & plt_get_y_minor_grid_line_style procedure , public :: set_y_minor_grid_line_style => & plt_set_y_minor_grid_line_style procedure , public :: get_x_major_grid_line_width => & plt_get_x_major_grid_line_width procedure , public :: set_x_major_grid_line_width => & plt_set_x_major_grid_line_width procedure , public :: get_x_minor_grid_line_width => & plt_get_x_minor_grid_line_width procedure , public :: set_x_minor_grid_line_width => & plt_set_x_minor_grid_line_width procedure , public :: get_y_major_grid_line_width => & plt_get_y_major_grid_line_width procedure , public :: set_y_major_grid_line_width => & plt_set_y_major_grid_line_width procedure , public :: get_y_minor_grid_line_width => & plt_get_y_minor_grid_line_width procedure , public :: set_y_minor_grid_line_width => & plt_set_y_minor_grid_line_width end type contains ! ------------------------------------------------------------------------------ pure function is_plot_data_function ( x ) result ( rst ) !! Tests to see if the supplied [[plot_data]] object is a !! [[plot_data_function]] based type. class ( plot_data ), intent ( in ) :: x !! The [[plot_data]] object. logical :: rst !! True if x is a [[plot_data_function]] based type. select type ( x ) class is ( plot_data_function ) rst = . true . class default rst = . false . end select end function ! ------------------------------------------------------------------------------ subroutine plt_clean_up ( this ) !! Cleans up resources held by the plot object. Inheriting !! classes are expected to call this routine to free internally held !! resources. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. if ( associated ( this % m_terminal )) then deallocate ( this % m_terminal ) nullify ( this % m_terminal ) end if if ( associated ( this % m_legend )) then deallocate ( this % m_legend ) nullify ( this % m_legend ) end if if ( associated ( this % m_colormap )) then deallocate ( this % m_colormap ) nullify ( this % m_colormap ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine plt_init ( this , term , fname , err ) !! Initializes the plot object. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag , t class ( errors ), pointer :: errmgr type ( errors ), target :: deferr type ( wxt_terminal ), pointer :: wxt type ( windows_terminal ), pointer :: win type ( qt_terminal ), pointer :: qt type ( png_terminal ), pointer :: png type ( latex_terminal ), pointer :: latex type ( svg_terminal ), pointer :: svg type ( pdf_terminal ), pointer :: pdf ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( present ( term )) then t = term else t = GNUPLOT_TERMINAL_WXT end if ! Process flag = 0 if ( associated ( this % m_terminal )) deallocate ( this % m_terminal ) select case ( t ) case ( GNUPLOT_TERMINAL_PNG ) allocate ( png , stat = flag ) if ( present ( fname )) call png % set_filename ( fname ) this % m_terminal => png case ( GNUPLOT_TERMINAL_QT ) allocate ( qt , stat = flag ) this % m_terminal => qt case ( GNUPLOT_TERMINAL_WIN32 ) allocate ( win , stat = flag ) this % m_terminal => win case ( GNUPLOT_TERMINAL_LATEX ) allocate ( latex , stat = flag ) if ( present ( fname )) call latex % set_filename ( fname ) this % m_terminal => latex case ( GNUPLOT_TERMINAL_SVG ) allocate ( svg , stat = flag ) if ( present ( fname )) call svg % set_filename ( fname ) this % m_terminal => svg case ( GNUPLOT_TERMINAL_PDF ) allocate ( pdf , stat = flag ) if ( present ( fname )) call pdf % set_filename ( fname ) this % m_terminal => pdf case default ! WXT is the default allocate ( wxt , stat = flag ) this % m_terminal => wxt end select ! Establish the colormap nullify ( this % m_colormap ) if ( flag == 0 . and . . not . associated ( this % m_legend )) then allocate ( this % m_legend , stat = flag ) end if ! Error Checking if ( flag /= 0 ) then call report_memory_error ( errmgr , \"plt_init\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function plt_get_title ( this ) result ( txt ) !! Gets the plot's title. class ( plot ), intent ( in ) :: this !! The [[plot]] object. character ( len = :), allocatable :: txt !! The title. integer ( int32 ) :: n n = len_trim ( this % m_title ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_title ) end function ! -------------------- subroutine plt_set_title ( this , txt ) !! Sets the plot's title. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. character ( len = * ), intent ( in ) :: txt !! The title. integer :: n n = min ( len_trim ( txt ), PLOTDATA_MAX_NAME_LENGTH ) this % m_title = \"\" if ( n /= 0 ) then this % m_title ( 1 : n ) = txt ( 1 : n ) this % m_hasTitle = . true . else this % m_hasTitle = . false . end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_has_title ( this ) result ( x ) !! Gets a value determining if a title has been defined for the plot !! object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if a title has been defined for this plot; else, !! returns false. x = this % m_hasTitle end function ! ------------------------------------------------------------------------------ function plt_get_legend ( this ) result ( x ) !! Gets the plot's legend object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( legend ), pointer :: x !! A pointer to the legend object. x => this % m_legend end function ! ------------------------------------------------------------------------------ pure function plt_get_count ( this ) result ( x ) !! Gets the number of stored plot_data objects. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The number of plot_data objects. x = this % m_data % count () end function ! ------------------------------------------------------------------------------ subroutine plt_push_data ( this , x , err ) !! Pushes a plot_data object onto the stack. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. class ( plot_data ), intent ( inout ) :: x !! The plot_data object. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Index the color tracking index if the type is of plot_data_colored select type ( x ) class is ( plot_data_colored ) call x % set_color_index ( this % m_colorIndex ) if ( this % m_colorIndex == size ( color_list )) then this % m_colorIndex = 1 else this % m_colorIndex = this % m_colorIndex + 1 end if end select ! Store the object call this % m_data % push ( x ) end subroutine ! ------------------------------------------------------------------------------ subroutine plt_pop_data ( this ) !! Pops the last plot_data object from the stack. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. ! Process call this % m_data % pop () end subroutine ! ------------------------------------------------------------------------------ subroutine plt_clear_all ( this ) !! Removes all plot_data objects from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. ! Process this % m_colorIndex = 1 call this % m_data % clear () end subroutine ! ------------------------------------------------------------------------------ function plt_get ( this , i ) result ( x ) !! Gets a pointer to the requested plot_data object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_data object. class ( plot_data ), pointer :: x !! A pointer to the requested plot_data object. ! Local Variables class ( * ), pointer :: item ! Process item => this % m_data % get ( i ) select type ( item ) class is ( plot_data ) x => item class default nullify ( x ) end select end function ! -------------------- subroutine plt_set ( this , i , x ) !! Sets the requested plot_data object into the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_data object. class ( plot_data ), intent ( in ) :: x !! The plot_data object. call this % m_data % set ( i , x ) end subroutine ! ------------------------------------------------------------------------------ function plt_get_term ( this ) result ( x ) !! Gets the GNUPLOT terminal object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. class ( terminal ), pointer :: x !! A pointer to the GNUPLOT terminal object. x => this % m_terminal end function ! ------------------------------------------------------------------------------ pure function plt_get_show_grid ( this ) result ( x ) !! Gets a flag determining if the grid lines should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if the grid lines should be shown; else, false. x = this % m_showGrid end function ! -------------------- subroutine plt_set_show_grid ( this , x ) !! Sets a flag determining if the grid lines should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the grid lines should be shown; else, false. this % m_showGrid = x end subroutine ! ------------------------------------------------------------------------------ subroutine plt_draw ( this , persist , err ) !! Launches GNUPLOT and draws the plot per the current state of !! the command list. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical , intent ( in ), optional :: persist !! An optional parameter that can be used to keep GNUPLOT open. !! Set to true to force GNUPLOT to remain open; else, set to false !! to allow GNUPLOT to close after drawing. The default is true. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Parameters character ( len = * ), parameter :: fname = \"temp_gnuplot_file.plt\" ! Local Variables logical :: p integer ( int32 ) :: fid , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr class ( terminal ), pointer :: term ! Initialization if ( present ( persist )) then p = persist else p = . true . end if if ( present ( err )) then errmgr => err else errmgr => deferr end if term => this % get_terminal () ! Open the file for writing, and write the contents to file open ( newunit = fid , file = fname , iostat = flag ) if ( flag > 0 ) then call report_file_create_error ( errmgr , \"plt_draw\" , fname , flag ) return end if write ( fid , '(A)' ) term % get_command_string () write ( fid , '(A)' ) new_line ( 'a' ) write ( fid , '(A)' ) this % get_command_string () close ( fid ) ! Launch GNUPLOT if ( p ) then call execute_command_line ( \"gnuplot --persist \" // fname ) else call execute_command_line ( \"gnuplot \" // fname ) end if ! Clean up by deleting the file open ( newunit = fid , file = fname ) close ( fid , status = \"delete\" ) end subroutine ! ------------------------------------------------------------------------------ subroutine plt_save ( this , fname , err ) !! Saves a GNUPLOT command file. class ( plot ), intent ( in ) :: this !! The [[plot]] object. character ( len = * ), intent ( in ) :: fname !! The filename. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: fid , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr class ( terminal ), pointer :: term ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if term => this % get_terminal () ! Open the file for writing, and write the contents to file open ( newunit = fid , file = fname , iostat = flag ) if ( flag > 0 ) then call report_file_create_error ( errmgr , \"plt_save\" , fname , flag ) return end if write ( fid , '(A)' ) term % get_command_string () write ( fid , '(A)' ) new_line ( 'a' ) write ( fid , '(A)' ) this % get_command_string () close ( fid ) end subroutine ! ------------------------------------------------------------------------------ function plt_get_font ( this ) result ( x ) !! Gets the name of the font used for plot text. class ( plot ), intent ( in ) :: this !! The [[plot]] object. character ( len = :), allocatable :: x !! The font name. class ( terminal ), pointer :: term term => this % get_terminal () x = term % get_font_name () end function ! -------------------- subroutine plt_set_font ( this , x ) !! Sets the name of the font used for plot text. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. character ( len = * ), intent ( in ) :: x !! The font name. class ( terminal ), pointer :: term term => this % get_terminal () call term % set_font_name ( x ) end subroutine ! ------------------------------------------------------------------------------ function plt_get_font_size ( this ) result ( x ) !! Gets the size of the font used by the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The size of the font, in points. class ( terminal ), pointer :: term term => this % get_terminal () x = term % get_font_size () end function ! -------------------- subroutine plt_set_font_size ( this , x ) !! Sets the size of the font used by the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The font size, in points. If a value of zero is provided, !! the font size is reset to its default value; or, if a negative !! value is provided, the absolute value of the supplied value is !! utilized. class ( terminal ), pointer :: term term => this % get_terminal () call term % set_font_size ( x ) end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_tics_in ( this ) result ( x ) !! Gets a value determining if the axis tic marks should point inwards. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if the tic marks should point inwards; else, false !! if the tic marks should point outwards. x = this % m_ticsIn end function ! -------------------- subroutine plt_set_tics_in ( this , x ) !! Sets a value determining if the axis tic marks should point inwards. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the tic marks should point inwards; else, false !! if the tic marks should point outwards. this % m_ticsIn = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_draw_border ( this ) result ( x ) !! Gets a value determining if the border should be drawn. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if the border should be drawn; else, false. x = this % m_drawBorder end function ! -------------------- subroutine plt_set_draw_border ( this , x ) !! Sets a value determining if the border should be drawn. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the border should be drawn; else, false. this % m_drawBorder = x end subroutine ! ****************************************************************************** ! ADDED: JUNE 22, 2018 - JAC ! ------------------------------------------------------------------------------ subroutine plt_push_label ( this , lbl , err ) !! Adds a label to the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. class ( plot_label ), intent ( in ) :: lbl !! The plot label. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % m_labels % push ( lbl ) end subroutine ! ------------------------------------------------------------------------------ subroutine plt_pop_label ( this ) !! Removes the last label from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. call this % m_labels % pop () end subroutine ! ------------------------------------------------------------------------------ function plt_get_label ( this , i ) result ( x ) !! Gets the requested plot_label from the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_label object to retrieve. class ( plot_label ), pointer :: x !! A pointer to the requested plot_label object. ! Local Variables class ( * ), pointer :: item ! Process item => this % m_labels % get ( i ) select type ( item ) class is ( plot_label ) x => item class default nullify ( x ) end select end function ! -------------------- subroutine plt_set_label ( this , i , x ) !! Sets the specified plot_label object. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_label to replace. class ( plot_label ), intent ( in ) :: x !! The new plot_label object. call this % m_labels % set ( i , x ) end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_label_count ( this ) result ( x ) !! Gets the number of plot_label objects belonging to the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The number of plot_label objects. x = this % m_labels % count () end function ! ------------------------------------------------------------------------------ subroutine plt_clear_labels ( this ) !! Clears all plot_label objects from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. call this % m_labels % clear () end subroutine ! ****************************************************************************** ! ADDED: SEPT. 25, 2020 - JAC ! ------------------------------------------------------------------------------ pure function plt_get_axis_equal ( this ) result ( rst ) !! Gets a flag determining if the axes should be equally scaled. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: rst !! Returns true if the axes should be scaled equally; else, false. rst = this % m_axisEqual end function ! -------------------- subroutine plt_set_axis_equal ( this , x ) !! Sets a flag determining if the axes should be equally scaled. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the axes should be scaled equally; else, false. this % m_axisEqual = x end subroutine ! ****************************************************************************** ! ADDED: OCT. 8, 2020 - JAC ! ------------------------------------------------------------------------------ function plt_get_colormap ( this ) result ( x ) !! Gets a pointer to the colormap object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. class ( colormap ), pointer :: x !! A pointer to the colormap object. If no colormap is defined, a !! null pointer is returned. x => this % m_colormap end function ! -------------------- subroutine plt_set_colormap ( this , x , err ) !! Sets the colormap object. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. class ( colormap ), intent ( in ) :: x !! The colormap object. Notice, a copy of this object is !! stored, and the plot object then manages the lifetime of the !! copy. class ( errors ), intent ( inout ), optional , target :: err !! An error handler object. ! Local Variables integer ( int32 ) :: flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Process if ( associated ( this % m_colormap )) deallocate ( this % m_colormap ) allocate ( this % m_colormap , stat = flag , source = x ) if ( flag /= 0 ) then call errmgr % report_error ( \"surf_set_colormap\" , & \"Insufficient memory available.\" , PLOT_OUT_OF_MEMORY_ERROR ) return end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_colorbar ( this ) result ( x ) !! Gets a value determining if the colorbar should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if the colorbar should be drawn; else, false. x = this % m_showColorbar end function ! -------------------- subroutine plt_set_show_colorbar ( this , x ) !! Sets a value determining if the colorbar should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the colorbar should be drawn; else, false. this % m_showColorbar = x end subroutine ! ------------------------------------------------------------------------------ function plt_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. character ( len = :), allocatable :: x !! The command string. ! Local Variables integer ( int32 ) :: i type ( string_builder ) :: str class ( colormap ), pointer :: clr class ( plot_arrow ), pointer :: arrow class ( plot_label ), pointer :: lbl ! Initialization call str % initialize () ! Define the colormap clr => this % get_colormap () if ( associated ( clr )) then call str % append ( new_line ( 'a' )) call str % append ( clr % get_command_string ()) end if ! Show the colorbar if (. not . this % get_show_colorbar ()) then call str % append ( new_line ( 'a' )) call str % append ( \"unset colorbox\" ) end if ! Arrows do i = 1 , this % get_arrow_count () arrow => this % get_arrow ( i ) if (. not . associated ( arrow )) cycle call str % append ( new_line ( 'a' )) call str % append ( arrow % get_command_string ()) end do ! Labels do i = 1 , this % get_label_count () lbl => this % get_label ( i ) if (. not . associated ( lbl )) cycle call str % append ( new_line ( 'a' )) call str % append ( lbl % get_command_string ()) end do ! End x = char ( str % to_string ()) end function ! ****************************************************************************** ! ADDED: 1/3/2024 - JAC ! ------------------------------------------------------------------------------ subroutine plt_push_arrow ( this , x , err ) !! Pushes a new @ref plot_arrow object onto the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. class ( plot_arrow ), intent ( in ) :: x !! The plot_arrow object. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. call this % m_arrows % push ( x , manage = . true .) end subroutine ! ------------------------------------------------------------------------------ subroutine plt_pop_arrow ( this ) !! Pops the last plot_arrow object from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. call this % m_arrows % pop () end subroutine ! ------------------------------------------------------------------------------ function plt_get_arrow ( this , i ) result ( rst ) !! Gets a pointer to the requested plot_arrow object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_arrow to retrieve. class ( plot_arrow ), pointer :: rst !! The plot_arrow object to retrieve. class ( * ), pointer :: ptr ptr => this % m_arrows % get ( i ) select type ( ptr ) class is ( plot_arrow ) rst => ptr class default nullify ( rst ) end select end function ! ------------------------------------------------------------------------------ subroutine plt_set_arrow ( this , i , x ) !! Sets a plot_arrow into the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_arrow object to replace. class ( plot_arrow ), intent ( in ) :: x !! The new plot_arrow object. call this % m_arrows % set ( i , x ) end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_arrow_count ( this ) result ( rst ) !! Gets the number of plot_arrow objects held by the plot object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: rst !! The plot_arrow objects count. rst = this % m_arrows % count () end function ! ------------------------------------------------------------------------------ subroutine plt_clear_arrows ( this ) !! Clears all plot_arrow objects from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. call this % m_arrows % clear () end subroutine ! ****************************************************************************** ! ADDED: 4/7/2025 - JAC ! ------------------------------------------------------------------------------ pure function plt_get_left_margin ( this ) result ( x ) !! Gets the left margin of the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. x = this % m_leftMargin end function ! ---------- subroutine plt_set_left_margin ( this , x ) !! Sets the left margin of the plot. If the value is negative, the !! default margin is used. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. this % m_leftMargin = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_right_margin ( this ) result ( x ) !! Gets the right margin of the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. x = this % m_rightMargin end function ! ---------- subroutine plt_set_right_margin ( this , x ) !! Sets the right margin of the plot. If the value is negative, the !! default margin is used. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. this % m_rightMargin = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_top_margin ( this ) result ( x ) !! Gets the top margin of the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. x = this % m_topMargin end function ! ---------- subroutine plt_set_top_margin ( this , x ) !! Sets the top margin of the plot. If the value is negative, the !! default margin is used. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. this % m_topMargin = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_bottom_margin ( this ) result ( x ) !! Gets the bottom margin of the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. x = this % m_bottomMargin end function ! ---------- subroutine plt_set_bottom_margin ( this , x ) !! Sets the bottom margin of the plot. If the value is negative, the !! default margin is used. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. this % m_bottomMargin = x end subroutine ! ****************************************************************************** ! ADDED AUG. 16, 2026 - V1.9.0 ! ------------------------------------------------------------------------------ subroutine plt_show_legend ( this , x ) !! Sets a value determining the legend should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true to show the legend; else, set to false. if ( associated ( this % m_legend )) then call this % m_legend % set_is_visible ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine plt_set_window_size ( this , width , height ) !! Sets the height and width of the plot window. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: width !! The plot window width. integer ( int32 ), intent ( in ) :: height !! The plot window height. if ( associated ( this % m_terminal )) then call this % m_terminal % set_window_width ( width ) call this % m_terminal % set_window_height ( height ) end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_border_line_width ( this ) result ( x ) !! Gets the width of the lines used to draw the border. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_borderLineWidth end function ! -------------------- subroutine plt_set_border_line_width ( this , x ) !! Sets the width of the lines used to draw the border. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_borderLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_x_major_grid ( this ) result ( x ) !! Gets a value determining if the x-axis major grid should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showXMajorGrid end function ! -------------------- subroutine plt_set_show_x_major_grid ( this , x ) !! Sets a value determining if the x-axis major grid should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showXMajorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_x_minor_grid ( this ) result ( x ) !! Gets a value determining if the x-axis minor grid should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showXMinorGrid end function ! -------------------- subroutine plt_set_show_x_minor_grid ( this , x ) !! Sets a value determining if the x-axis minor grid should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showXMinorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_y_major_grid ( this ) result ( x ) !! Gets a value determining if the x-axis major grid should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showYMajorGrid end function ! -------------------- subroutine plt_set_show_y_major_grid ( this , x ) !! Sets a value determining if the x-axis major grid should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showYMajorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_y_minor_grid ( this ) result ( x ) !! Gets a value determining if the x-axis minor grid should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showYMinorGrid end function ! -------------------- subroutine plt_set_show_y_minor_grid ( this , x ) !! Sets a value determining if the x-axis minor grid should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showYMinorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_major_grid_color ( this ) result ( x ) !! Gets the color of the x-axis major grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( color ) :: x !! The color. x = this % m_xMajorGridColor end function ! -------------------- subroutine plt_set_x_major_grid_color ( this , x ) !! Sets the color of the x-axis major grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. type ( color ), intent ( in ) :: x !! The color. this % m_xMajorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_minor_grid_color ( this ) result ( x ) !! Gets the color of the x-axis minor grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( color ) :: x !! The color. x = this % m_xMinorGridColor end function ! -------------------- subroutine plt_set_x_minor_grid_color ( this , x ) !! Sets the color of the x-axis minor grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. type ( color ), intent ( in ) :: x !! The color. this % m_xMinorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_major_grid_color ( this ) result ( x ) !! Gets the color of the y-axis major grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( color ) :: x !! The color. x = this % m_yMajorGridColor end function ! -------------------- subroutine plt_set_y_major_grid_color ( this , x ) !! Sets the color of the y-axis major grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. type ( color ), intent ( in ) :: x !! The color. this % m_yMajorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_minor_grid_color ( this ) result ( x ) !! Gets the color of the y-axis minor grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( color ) :: x !! The color. x = this % m_yMinorGridColor end function ! -------------------- subroutine plt_set_y_minor_grid_color ( this , x ) !! Sets the color of the y-axis minor grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. type ( color ), intent ( in ) :: x !! The color. this % m_yMinorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_major_grid_line_style ( this ) result ( x ) !! Gets the line style used for the x-axis major grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_xMajorGridLineStyle end function ! -------------------- subroutine plt_set_x_major_grid_line_style ( this , x ) !! Sets the line style used for the x-axis major grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_xMajorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_minor_grid_line_style ( this ) result ( x ) !! Gets the line style used for the x-axis minor grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_xMinorGridLineStyle end function ! -------------------- subroutine plt_set_x_minor_grid_line_style ( this , x ) !! Sets the line style used for the x-axis minor grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_xMinorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_major_grid_line_style ( this ) result ( x ) !! Gets the line style used for the y-axis major grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_yMajorGridLineStyle end function ! -------------------- subroutine plt_set_y_major_grid_line_style ( this , x ) !! Sets the line style used for the y-axis major grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_yMajorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_minor_grid_line_style ( this ) result ( x ) !! Gets the line style used for the y-axis minor grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_yMinorGridLineStyle end function ! -------------------- subroutine plt_set_y_minor_grid_line_style ( this , x ) !! Sets the line style used for the y-axis minor grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_yMinorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_major_grid_line_width ( this ) result ( x ) !! Gets the width of the x-axis major grid lines, in pixels. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_xMajorGridLineWidth end function ! -------------------- subroutine plt_set_x_major_grid_line_width ( this , x ) !! Sets the width of the x-axis major grid lines, in pixels. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_xMajorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_minor_grid_line_width ( this ) result ( x ) !! Gets the width of the x-axis minor grid lines, in pixels. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_xMinorGridLineWidth end function ! -------------------- subroutine plt_set_x_minor_grid_line_width ( this , x ) !! Sets the width of the x-axis minor grid lines, in pixels. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_xMinorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_major_grid_line_width ( this ) result ( x ) !! Gets the width of the y-axis major grid lines, in pixels. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_yMajorGridLineWidth end function ! -------------------- subroutine plt_set_y_major_grid_line_width ( this , x ) !! Sets the width of the y-axis major grid lines, in pixels. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_yMajorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_minor_grid_line_width ( this ) result ( x ) !! Gets the width of the y-axis minor grid lines, in pixels. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_yMinorGridLineWidth end function ! -------------------- subroutine plt_set_y_minor_grid_line_width ( this , x ) !! Sets the width of the y-axis minor grid lines, in pixels. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_yMinorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ ! -------------------- ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot.f90.html"},{"title":"fplot_label.f90 – FPLOT","text":"Source Code ! fplot_label.f90 module fplot_label use iso_fortran_env use fplot_plot_object use fplot_constants use strings implicit none private public :: plot_label type , extends ( plot_object ) :: plot_label !! Defines a plot label. logical , private :: m_visible = . true . !! Is the label visible? real ( real32 ), private , dimension ( 3 ) :: m_position !! The x, y, and z coordinates of the label. real ( real32 ), private :: m_angle = 0.0 !! The rotation angle of the label. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_text !! The label text. contains procedure , public :: get_command_string => lbl_get_cmd procedure , public :: get_is_visible => lbl_get_is_visible procedure , public :: set_is_visible => lbl_set_is_visible procedure , public :: get_position => lbl_get_position procedure , public :: set_position => lbl_set_position procedure , public :: get_angle => lbl_get_angle procedure , public :: set_angle => lbl_set_angle procedure , public :: get_text => lbl_get_txt procedure , public :: set_text => lbl_set_txt end type contains ! ------------------------------------------------------------------------------ function lbl_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for the label. class ( plot_label ), intent ( in ) :: this !! The plot_label object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str real ( real32 ) :: pt ( 3 ) ! Initialization call str % initialize () pt = this % get_position () ! If visible, draw the label if ( this % get_is_visible ()) then call str % append ( 'set label \"' ) call str % append ( this % get_text ()) call str % append ( '\"' ) call str % append ( \" at \" ) call str % append ( to_string ( pt ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( pt ( 2 ))) call str % append ( \",\" ) call str % append ( to_string ( pt ( 3 ))) call str % append ( \" rotate by \" ) call str % append ( to_string ( this % get_angle ())) x = char ( str % to_string ()) end if end function ! ------------------------------------------------------------------------------ pure function lbl_get_is_visible ( this ) result ( x ) !! Gets a value determining if the label is to be drawn. class ( plot_label ), intent ( in ) :: this !! The plot_label object. logical :: x !! Returns true if the label is to be drawn; else, false. x = this % m_visible end function ! -------------------- subroutine lbl_set_is_visible ( this , x ) !! Sets a value determining if the label is to be drawn. class ( plot_label ), intent ( inout ) :: this !! The plot_label object. logical , intent ( in ) :: x !! Set to true if the label is to be drawn; else, false. this % m_visible = x end subroutine ! ------------------------------------------------------------------------------ pure function lbl_get_position ( this ) result ( x ) !! Gets the position of the label in terms of plot coordinates. class ( plot_label ), intent ( in ) :: this !! The plot_label object. real ( real32 ), dimension ( 3 ) :: x !! A 3-element array containing the X, Y, and Z position of the !! label. x = this % m_position end function ! -------------------- subroutine lbl_set_position ( this , x ) !! Sets the position of the label in terms of plot coordinates. class ( plot_label ), intent ( inout ) :: this !! The plot_label object. real ( real32 ), intent ( in ), dimension ( 3 ) :: x !! A 3-element array containing the X, Y, and Z position of the !! label. this % m_position = x end subroutine ! ------------------------------------------------------------------------------ pure function lbl_get_angle ( this ) result ( x ) !! Gets the angle of the label text, in degrees. class ( plot_label ), intent ( in ) :: this !! The plot_label object. real ( real32 ) :: x !! The angle, in degrees. x = this % m_angle end function ! -------------------- subroutine lbl_set_angle ( this , x ) !! Sets the angle of the label text, in degrees. class ( plot_label ), intent ( inout ) :: this !! The plot_label object. real ( real32 ), intent ( in ) :: x !! The angle, in degrees. this % m_angle = x end subroutine ! ------------------------------------------------------------------------------ function lbl_get_txt ( this ) result ( x ) !! Gets the text displayed by the label. class ( plot_label ), intent ( in ) :: this !! The plot_label object. character ( len = :), allocatable :: x !! The text string to display. x = trim ( this % m_text ) end function ! -------------------- subroutine lbl_set_txt ( this , x ) !! Sets the text displayed by the label. class ( plot_label ), intent ( inout ) :: this !! The plot_label object. character ( len = * ), intent ( in ) :: x !! The text string to display. integer ( int32 ) :: n n = min ( len ( x ), PLOTDATA_MAX_NAME_LENGTH ) this % m_text = \"\" this % m_text ( 1 : n ) = x ( 1 : n ) end subroutine ! ****************************************************************************** ! ADDED: JAN. 09, 2024 - JAC ! ------------------------------------------------------------------------------ ! pure subroutine lbl_assign(x, y) ! type(plot_label), intent(out) :: x ! class(plot_label), intent(in) :: y ! x%m_visible = y%m_visible ! x%m_position = y%m_position ! x%m_angle = y%m_angle ! x%m_text = y%m_text ! end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_label.f90.html"},{"title":"fplot_plot_data_histogram.f90 – FPLOT","text":"Source Code ! fplot_plot_data_histogram.f90 ! TO DO: ! - Allow naming of each data set at the define_data level as well as at the ! get/set level module fplot_plot_data_histogram use iso_fortran_env use fplot_plot_data use fplot_errors use strings use fplot_colors implicit none private public :: plot_data_histogram type , extends ( plot_data_colored ) :: plot_data_histogram !! A container for plotting data in the form of a histogram. integer ( int32 ), private :: m_binCount = 20 !! The number of bins. real ( real64 ), private :: m_minX !! The minimum data value. real ( real64 ), private :: m_maxX !! The maximum data value. real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! Column 1 is the center of each bin and column 2 is the number !! of items in each bin. logical , private :: m_filled = . true . !! Determines if each bar is filled. logical , private :: m_useY2 = . false . !! Draw against the secondary y axis? contains procedure , public :: get_bin_count => pdh_get_bin_count procedure , public :: set_bin_count => pdh_set_bin_count procedure , public :: get_minimum_value => pdh_get_min_x procedure , public :: get_maximum_value => pdh_get_max_x procedure , public :: define_data => pdh_define_data procedure , public :: get_command_string => pdh_get_cmd procedure , public :: get_data_string => pdh_get_data_cmd procedure , public :: get_axes_string => pdh_get_axes_cmd procedure , public :: get_is_filled => pdh_get_is_filled procedure , public :: set_is_filled => pdh_set_is_filled procedure , public :: get_draw_against_y2 => pdh_get_use_y2 procedure , public :: set_draw_against_y2 => pdh_set_use_y2 procedure , public :: get => pdh_get_bin_data procedure , public :: clear_data => pdh_clear_data end type contains ! ------------------------------------------------------------------------------ pure function pdh_get_bin_count ( this ) result ( x ) !! Gets the number of bins. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. integer ( int32 ) :: x !! The bin count. x = this % m_binCount end function ! ------------------------------------------------------------------------------ subroutine pdh_set_bin_count ( this , x ) !! Sets the bin count. For this property to have an effect, call before !! calling the define_data subroutine or bin_data subroutine. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. integer ( int32 ), intent ( in ) :: x !! The bin count. this % m_binCount = x end subroutine ! ------------------------------------------------------------------------------ pure function pdh_get_min_x ( this ) result ( x ) !! Gets the minimum data value. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. real ( real64 ) :: x !! The minimum data value. x = this % m_minX end function ! ------------------------------------------------------------------------------ pure function pdh_get_max_x ( this ) result ( x ) !! Gets the maximum data value. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. real ( real64 ) :: x !! The maximum data value. x = this % m_maxX end function ! ------------------------------------------------------------------------------ subroutine pdh_define_data ( this , x , err ) !! Defines the data set to plot. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set to plot. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , j , n , nbins , flag real ( real64 ) :: maxX , minX , width , val real ( real64 ), allocatable , dimension (:,:) :: ranges class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) nbins = min ( n , this % get_bin_count ()) ! protects against the case where nbins > n however unlikely if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Get the max and min of the entire data set maxX = maxval ( x ) minX = minval ( x ) width = ( maxX - minX ) / ( nbins - 1.0 ) this % m_minX = minX this % m_maxX = maxX ! Allocate space for the output if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( nbins , 2 ), stat = flag , source = 0.0d0 ) if ( flag == 0 ) allocate ( ranges ( nbins , 2 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdh_define_data\" , flag ) return end if ! Define each range ranges ( 1 ,:) = [ minX , minX + width ] do i = 2 , nbins ranges ( i , 1 ) = ranges ( i - 1 , 2 ) ranges ( i , 2 ) = ranges ( i , 1 ) + width end do ! Construct the bins do i = 1 , n val = x ( i ) do j = 1 , nbins if (( val >= ranges ( j , 1 )) . and . ( val <= ranges ( j , 2 ))) then this % m_data ( j , 1 ) = this % m_data ( j , 1 ) + 1.0d0 ! Counter exit ! Exit the inner do loop end if end do end do ! Now compute the center of each bin - store in column 2 of this%m_data this % m_data (:, 2 ) = 0.5d0 * ( ranges (:, 1 ) + ranges (:, 2 )) end subroutine ! ------------------------------------------------------------------------------ function pdh_get_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string for this object. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n , ncols type ( color ) :: clr ! Process call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) call str % append ( \" with boxes \" ) ! Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Filled if ( this % get_is_filled ()) then call str % append ( \" fill solid \" ) else call str % append ( \" fill empty \" ) end if ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdh_get_data_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining the data for this object. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , nbars , cnt real ( real64 ) :: val character :: delimiter , nl ! Initialization delimiter = achar ( 9 ) nl = new_line ( nl ) nbars = size ( this % m_data , 1 ) ! Process do i = 1 , nbars call this % get ( i , val , cnt ) call str % append ( to_string ( val )) call str % append ( delimiter ) call str % append ( to_string ( cnt )) call str % append ( nl ) end do ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdh_get_axes_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining which axes the data is to be !! plotted against. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. character ( len = :), allocatable :: rst !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then rst = \"axes x1y2\" else rst = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ pure function pdh_get_is_filled ( this ) result ( rst ) !! Gets a value determining if each box is filled. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. logical :: rst !! Returns true if the boxes are filled; else, false for an empty box. rst = this % m_filled end function ! -------------------- subroutine pdh_set_is_filled ( this , x ) !! Sets a value determining if each box is filled. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. logical , intent ( in ) :: x !! Set to true if the boxes should be filled; else, false for an empty !! box. this % m_filled = x end subroutine ! ------------------------------------------------------------------------------ pure function pdh_get_use_y2 ( this ) result ( rst ) !! Gets a value determining if the data is to be plotted against the !! secondary y axis. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. logical :: rst !! Returns true if the data is to be plotted against the secondary y !! axis; else, false for the primary y axis. rst = this % m_useY2 end function ! -------------------- subroutine pdh_set_use_y2 ( this , x ) !! Sets a value determining if the data is to be plotted against the !! secondary y axis. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. logical , intent ( in ) :: x !! Set to true if the data is to be plotted against the secondary y !! axis; else, false for the primary y axis. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ subroutine pdh_get_bin_data ( this , i , x , cnt ) !! Gets the requested binned data. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. integer ( int32 ), intent ( in ) :: i !! The bin number to get. real ( real64 ), intent ( out ) :: x !! The center of the bin. integer ( int32 ), intent ( out ) :: cnt !! The number of items in the bin. ! Process if (. not . allocated ( this % m_data )) then cnt = 0 x = 0.0d0 return end if x = this % m_data ( i , 2 ) cnt = floor ( this % m_data ( i , 1 )) end subroutine ! ------------------------------------------------------------------------------ subroutine pdh_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_histogram.f90.html"},{"title":"fplot_triangulations_delaunay_2d.f90 – FPLOT","text":"Source Code module fplot_triangulations_delaunay_2d use iso_fortran_env use geompack use fplot_errors implicit none private public :: delaunay_tri_2d type delaunay_tri_2d !! Provides a container for a 2D Delaunay triangulation. real ( real64 ), private , allocatable , dimension (:) :: m_x !! An array of the x-coordinates of each point. real ( real64 ), private , allocatable , dimension (:) :: m_y !! An array of the y-coordinates of each point. integer ( int32 ), private , allocatable , dimension (:,:) :: m_indices !! A 3-column matrix containing the indices of each triangle's !! vertex. contains procedure , public :: create => d2d_init procedure , public :: get_point_count => d2d_get_pt_count procedure , public :: get_triangle_count => d2d_get_tri_count procedure , public :: get_points_x => d2d_get_x_pts procedure , public :: get_points_y => d2d_get_y_pts procedure , public :: get_indices => d2d_get_tris procedure , public :: find_triangle => d2d_get_tri_with_pt end type contains ! ------------------------------------------------------------------------------ subroutine d2d_init ( this , x , y , err ) !! Creates an unconstrained 2D Delaunay triangulation given a !! set of x-y points. class ( delaunay_tri_2d ), intent ( inout ) :: this !! The delaunay_tri_2d object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x-coordinates of each !! data point. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y-coordinates of each !! data point. class ( errors ), intent ( inout ), target , optional :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: i , npts , ntri , flag real ( real64 ), allocatable , dimension (:,:) :: nodexy integer ( int32 ), allocatable , dimension (:,:) :: trinode , trinbr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if npts = size ( x ) ! Input Check if ( size ( y ) /= npts ) then call report_array_size_mismatch_error ( errmgr , \"d2d_init\" , \"y\" , & npts , size ( y )) return end if ! Clean up incase of an existing triangulation if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) ! Allocate workspace arrays for the triangulation allocate ( nodexy ( 2 , npts ), stat = flag ) if ( flag == 0 ) allocate ( trinode ( 3 , 2 * npts ), stat = flag ) if ( flag == 0 ) allocate ( trinbr ( 3 , 2 * npts ), stat = flag ) if ( flag /= 0 ) go to 100 ! Generate the points list do i = 1 , npts nodexy ( 1 , i ) = x ( i ) nodexy ( 2 , i ) = y ( i ) end do ! Compute the triangulation call r8tris2 ( npts , nodexy , ntri , trinode , trinbr ) ! Populate the remainder of the object allocate ( this % m_x ( npts ), stat = flag ) if ( flag == 0 ) allocate ( this % m_y ( npts ), stat = flag ) if ( flag == 0 ) allocate ( this % m_indices ( ntri , 3 ), stat = flag ) do i = 1 , npts this % m_x ( i ) = nodexy ( 1 , i ) this % m_y ( i ) = nodexy ( 2 , i ) end do do i = 1 , ntri this % m_indices ( i ,:) = trinode (:, i ) end do ! End return ! Memory Error Handler 100 continue call report_memory_error ( errmgr , \"d2d_init\" , flag ) return end subroutine ! ------------------------------------------------------------------------------ pure function d2d_get_pt_count ( this ) result ( rst ) !! Gets the number of points in the triangulation. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. integer ( int32 ) :: rst !! The number of points in the triangulation. if ( allocated ( this % m_x )) then rst = size ( this % m_x ) else rst = 0 end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_tri_count ( this ) result ( rst ) !! Gets the number of triangles in the triangulation. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. integer ( int32 ) :: rst !! The number of triangles in the triangulation. if ( allocated ( this % m_indices )) then rst = size ( this % m_indices , 1 ) else rst = 0 end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_x_pts ( this ) result ( rst ) !! Gets the x-coordinates of each point. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. real ( real64 ), allocatable , dimension (:) :: rst !! An array of the x-coordinates of each point. if ( allocated ( this % m_x )) then rst = this % m_x else allocate ( rst ( 0 )) end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_y_pts ( this ) result ( rst ) !! Gets the y-coordinates of each point. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. real ( real64 ), allocatable , dimension (:) :: rst !! An array of the y-coordinates of each point. if ( allocated ( this % m_y )) then rst = this % m_y else allocate ( rst ( 0 )) end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_tris ( this ) result ( rst ) !! Gets a list of the indices of each triangle vertex. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. integer ( int32 ), allocatable , dimension (:,:) :: rst !! An N-by-3 matrix with each column containing the index of the !! vertex of each triangle where N is the number of triangles. if ( allocated ( this % m_indices )) then rst = this % m_indices else allocate ( rst ( 0 , 0 )) end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_tri_with_pt ( this , x , y ) result ( rst ) !! Finds the triangle that contains the specified point. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. real ( real64 ), intent ( in ) :: x !! The x-coordinate of the point. real ( real64 ), intent ( in ) :: y !! The y-coordinate of the point. integer ( int32 ) :: rst !! Returns the index of the triangle containing the specified !! point. If no triangle contains the specified point, a value of !! -1 is returned. ! Local Variables integer ( int32 ) :: i , j real ( real64 ) :: x1 , y1 , x2 , y2 , x3 , y3 logical :: check ! Initialization rst = - 1 ! Process do i = 1 , this % get_triangle_count () j = this % m_indices ( i , 1 ) x1 = this % m_x ( j ) y1 = this % m_y ( j ) j = this % m_indices ( i , 2 ) x2 = this % m_x ( j ) y2 = this % m_y ( j ) j = this % m_indices ( i , 3 ) x3 = this % m_x ( j ) y3 = this % m_y ( j ) check = point_inside_triangle ( x1 , y1 , x2 , y2 , x3 , y3 , x , y ) if ( check ) then rst = i end if end do end function ! ------------------------------------------------------------------------------ ! Determine if a point lies within a triangle. ! https://stackoverflow.com/questions/2049582/how-to-determine-if-a-point-is-in-a-2d-triangle ! https://en.wikipedia.org/wiki/Barycentric_coordinate_system pure elemental function point_inside_triangle ( x1 , y1 , x2 , y2 , x3 , y3 , & x , y ) result ( rst ) ! Arguments real ( real64 ), intent ( in ) :: x1 , y1 , x2 , y2 , x3 , y3 , x , y logical :: rst ! Local Variables real ( real64 ) :: lambda1 , lambda2 , dT ! Initialization dT = ( y2 - y3 ) * ( x1 - x3 ) + ( x3 - x2 ) * ( y1 - y3 ) lambda1 = (( y2 - y3 ) * ( x - x3 ) + ( x3 - x2 ) * ( y - y3 )) / dT lambda2 = (( y3 - y1 ) * ( x - x3 ) + ( x1 - x3 ) * ( y - y3 )) / dT ! The point is within the triangle if: ! 0 <= lambda1 <= 1 ! 0 <= lambda2 <= 1 ! 0 <= lambda1 + lambda2 <= 1 rst = ( lambda1 <= 1.0d0 . and . lambda1 >= 0.0d0 ) . and . & ( lambda2 <= 1.0d0 . and . lambda2 >= 0.0d0 ) . and . & ( lambda1 + lambda2 >= 0.0d0 . and . lambda1 + lambda2 <= 1.0d0 ) end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_triangulations_delaunay_2d.f90.html"},{"title":"fplot_plot_data_function.f90 – FPLOT","text":"Source Code module fplot_plot_data_function use iso_fortran_env use fplot_plot_data use fplot_colors use fplot_constants use strings implicit none private public :: plot_data_function type , extends ( line_plot_data ) :: plot_data_function !! Defines a function to plot. character ( len = :), private , allocatable :: m_function !! The function to plot (e.g. sin(x)) character ( len = :), private , allocatable :: m_functionName !! The name of the function (e.g. f(x), g(x), etc.). real ( real64 ), private :: m_minX = - 1.0d0 !! The minimum X value of the plot range. real ( real64 ), private :: m_maxX = 1.0d0 integer ( int32 ), private :: m_sampleCount = 100 !! The number of times to sample the function contains procedure , public :: get_function => pdf_get_function procedure , public :: get_function_name => pdf_get_function_name procedure , public :: define_data => pdf_define_data procedure , public :: get_command_string => pdf_get_cmd procedure , public :: get_data_string => pdf_get_data_cmd procedure , public :: clear_data => pdf_clear_data procedure , public :: get_minimum_x => pdf_get_min_x procedure , public :: set_minimum_x => pdf_set_min_x procedure , public :: get_maximum_x => pdf_get_max_x procedure , public :: set_maximum_x => pdf_set_max_x ! procedure, public :: get_line_width => pdf_get_line_width ! procedure, public :: set_line_width => pdf_set_line_width ! procedure, public :: get_line_style => pdf_get_line_style ! procedure, public :: set_line_style => pdf_set_line_style procedure , public :: get_sample_count => pfd_get_sample_count procedure , public :: set_sample_count => pfd_set_sample_count end type contains ! ------------------------------------------------------------------------------ pure function pdf_get_function ( this ) result ( rst ) !! Gets the function to plot. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. character ( len = :), allocatable :: rst !! The function. if ( allocated ( this % m_function )) then rst = this % m_function else rst = \"\" end if end function ! ------------------------------------------------------------------------------ pure function pdf_get_function_name ( this ) result ( rst ) !! Gets the name of the function to plot (e.g. f(x), g(x), etc.). class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. character ( len = :), allocatable :: rst !! The function name. if ( allocated ( this % m_functionName )) then rst = this % m_functionName else rst = \"\" end if end function ! ------------------------------------------------------------------------------ subroutine pdf_define_data ( this , f , fname , minX , maxX , name ) !! Defines the function to plot. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. character ( len = * ), intent ( in ) :: f !! The function to plot (e.g. sin(x)). character ( len = * ), intent ( in ) :: fname !! The name of the function to plot (e.g. f(x)). real ( real64 ), intent ( in ), optional :: minX !! The minimum value to plot. If not supplied, this will default !! to a value of -1. real ( real64 ), intent ( in ), optional :: maxX !! The maximum x value to plot. If not supplied, this will default !! to a value of 1. character ( len = * ), intent ( in ), optional :: name !! An optional input that specifies the name that will be displayed !! in the legend. If nothing is supplied, the input string for !! parameter f will be utilized. this % m_function = f this % m_functionName = fname if ( present ( minX )) then this % m_minX = minX else this % m_minX = - 1.0d0 end if if ( present ( maxX )) then this % m_maxX = maxX else this % m_maxX = 1.0d0 end if if ( present ( name )) then call this % set_name ( name ) else call this % set_name ( f ) end if end subroutine ! ------------------------------------------------------------------------------ function pdf_get_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string for this object. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables integer ( int32 ) :: n type ( string_builder ) :: str type ( color ) :: clr ! Build the command string call str % initialize () call str % append ( \"[\" ) call str % append ( to_string ( this % get_minimum_x ())) call str % append ( \":\" ) call str % append ( to_string ( this % get_maximum_x ())) call str % append ( \"] \" ) call str % append ( this % get_function_name ()) ! Use the base object to define the line properties call str % append ( lpd_get_cmd ( this )) ! Return the complete command string rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdf_get_data_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining the data for this object. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str ! Build the command string call str % initialize () call str % append ( new_line ( 'a' )) call str % append ( this % get_function_name ()) call str % append ( \" = \" ) call str % append ( this % get_function ()) ! Samples call str % append ( new_line ( 'a' )) call str % append ( \"set samples \" ) call str % append ( to_string ( this % get_sample_count ())) ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine pdf_clear_data ( this ) !! Clears the function from this data set. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. this % m_function = \"\" this % m_functionName = \"\" end subroutine ! ------------------------------------------------------------------------------ pure function pdf_get_min_x ( this ) result ( rst ) !! Gets the minimum X plot range value. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. real ( real64 ) :: rst !! The value. rst = this % m_minX end function ! -------------------- subroutine pdf_set_min_x ( this , x ) !! Sets the minimum X plot range value. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. real ( real64 ), intent ( in ) :: x !! The value. this % m_minX = x end subroutine ! ------------------------------------------------------------------------------ pure function pdf_get_max_x ( this ) result ( rst ) !! Gets the maximum X plot range value. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. real ( real64 ) :: rst !! The value. rst = this % m_maxX end function ! -------------------- subroutine pdf_set_max_x ( this , x ) !! Sets the maximum X plot range value. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. real ( real64 ), intent ( in ) :: x !! The value. this % m_maxX = x end subroutine ! ------------------------------------------------------------------------------ pure function pfd_get_sample_count ( this ) result ( rst ) !! Gets the number of times to sample the function. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. integer ( int32 ) :: rst !! The sample count. rst = this % m_sampleCount end function ! -------------------- subroutine pfd_set_sample_count ( this , x ) !! Sets the number of times to sample the function. This variable is !! global for all function plots as GNUPLOT does not allow inline !! sample modification currently. Hopefully this will change somewhere !! down the road. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. integer ( int32 ), intent ( in ) :: x !! The sample count. Must be greater than 1. if ( x <= 1 ) then this % m_sampleCount = 2 else this % m_sampleCount = x end if end subroutine ! ------------------------------------------------------------------------------ ! -------------------- ! ------------------------------------------------------------------------------ ! -------------------- ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_function.f90.html"},{"title":"fplot_legend.f90 – FPLOT","text":"Source Code ! fplot_legend.f90 module fplot_legend use iso_fortran_env use fplot_plot_object use fplot_constants use strings implicit none private public :: legend type , extends ( plot_object ) :: legend !! Defines a legend object. logical , private :: m_inside = . true . !! Inside or outside the axes? logical , private :: m_box = . true . !! Box around? character ( len = 20 ), private :: m_horzPosition = LEGEND_RIGHT !! Horizontal position. character ( len = 20 ), private :: m_vertPosition = LEGEND_TOP !! Verical position. logical , private :: m_show = . false . !! Is visible? character ( len = 20 ), private :: m_layout = LEGEND_ARRANGE_VERTICALLY !! Determines the legend layout. logical , private :: m_opaque = . true . !! Opaque background? contains procedure , public :: get_draw_inside_axes => leg_get_inside procedure , public :: set_draw_inside_axes => leg_set_inside procedure , public :: get_draw_border => leg_get_box procedure , public :: set_draw_border => leg_set_box procedure , public :: get_horizontal_position => leg_get_horz_pos procedure , public :: set_horizontal_position => leg_set_horz_pos procedure , public :: get_vertical_position => leg_get_vert_pos procedure , public :: set_vertical_position => leg_set_vert_pos procedure , public :: get_is_visible => leg_get_visible procedure , public :: set_is_visible => leg_set_visible procedure , public :: get_command_string => leg_get_command_txt procedure , public :: get_layout => leg_get_layout procedure , public :: set_layout => leg_set_layout procedure , public :: get_is_opaque => leg_get_opaque procedure , public :: set_is_opaque => leg_set_opaque end type contains ! ------------------------------------------------------------------------------ pure function leg_get_inside ( this ) result ( x ) !! Gets a value determining if the legend should be drawn inside !! or outside the axes border. class ( legend ), intent ( in ) :: this !! The legend object. logical :: x !! True to draw inside the axes border; else, false for outside. x = this % m_inside end function ! --------------------- subroutine leg_set_inside ( this , x ) !! Sets a value determining if the legend should be drawn inside !! or outside the axes border. class ( legend ), intent ( inout ) :: this !! The legend object. logical , intent ( in ) :: x !! True to draw inside the axes border; else, false for outside. this % m_inside = x end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_box ( this ) result ( x ) !! Gets a value determining if the legend should have a border. class ( legend ), intent ( in ) :: this !! The legend object. logical :: x !! True if the legend should have a border; else, false. x = this % m_box end function ! --------------------- subroutine leg_set_box ( this , x ) !! Sets a value determining if the legend should have a border. class ( legend ), intent ( inout ) :: this !! The legend object. logical , intent ( in ) :: x !! True if the legend should have a border; else, false. this % m_box = x end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_horz_pos ( this ) result ( x ) !! Gets the horizontal position of the legend. class ( legend ), intent ( in ) :: this !! The legend object. character ( len = :), allocatable :: x !! The horizontal position of the legend (LEGEND_LEFT, !! LEGEND_CENTER, or LEGEND_RIGHT). integer ( int32 ) :: n n = len_trim ( this % m_horzPosition ) allocate ( character ( len = n ) :: x ) x = trim ( this % m_horzPosition ) end function ! --------------------- subroutine leg_set_horz_pos ( this , x ) !! Sets the horizontal position of the legend. class ( legend ), intent ( inout ) :: this !! The legend object. character ( len = * ), intent ( in ) :: x !! The horizontal position of the legend. The parameter must be !! set to one of the following: LEGEND_LEFT, LEGEND_CENTER, or !! LEGEND_RIGHT. If not, the default LEGEND_RIGHT will be used. this % m_horzPosition = x if ( x /= LEGEND_LEFT . and . x /= LEGEND_RIGHT . and . x /= LEGEND_CENTER ) & this % m_horzPosition = LEGEND_RIGHT end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_vert_pos ( this ) result ( x ) !! Gets the vertical position of the legend. class ( legend ), intent ( in ) :: this !! The legend object. character ( len = :), allocatable :: x !! The vertical position of the legend (LEGEND_TOP, !! LEGEND_CENTER, or LEGEND_BOTTOM). integer ( int32 ) :: n n = len_trim ( this % m_vertPosition ) allocate ( character ( len = n ) :: x ) x = trim ( this % m_vertPosition ) end function ! --------------------- subroutine leg_set_vert_pos ( this , x ) !! Sets the vertical position of the legend. class ( legend ), intent ( inout ) :: this !! The legend object. character ( len = * ), intent ( in ) :: x !! The vertical position of the legend. The parameter must be !! set to one of the following: LEGEND_TOP, LEGEND_CENTER, or !! LEGEND_BOTTOM. If not, the default LEGEND_TOP will be used. this % m_vertPosition = x if ( x /= LEGEND_TOP . and . x /= LEGEND_CENTER . and . x /= LEGEND_BOTTOM ) & this % m_vertPosition = LEGEND_TOP end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_visible ( this ) result ( x ) !! Gets a value determining if the legend is visible. class ( legend ), intent ( in ) :: this !! The legend object. logical :: x !! True if the legend is visible; else, false. x = this % m_show end function ! --------------------- subroutine leg_set_visible ( this , x ) !! Sets a value determining if the legend is visible. class ( legend ), intent ( inout ) :: this !! The legend object. logical , intent ( in ) :: x !! True if the legend is visible; else, false. this % m_show = x end subroutine ! ------------------------------------------------------------------------------ function leg_get_command_txt ( this ) result ( txt ) !! Gets the command string defining the legend properties. class ( legend ), intent ( in ) :: this !! The legend object. character ( len = :), allocatable :: txt !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str ! Process call str % initialize () ! Visible? if (. not . this % get_is_visible ()) then txt = \"set key off\" return end if ! Inside vs Outside & Position if ( this % get_draw_inside_axes ()) then call str % append ( \"set key inside\" ) else call str % append ( \"set key outside\" ) end if call str % append ( \" \" ) call str % append ( this % get_vertical_position ()) call str % append ( \" \" ) call str % append ( this % get_horizontal_position ()) ! Border call str % append ( new_line ( 'a' )) if ( this % get_draw_border ()) then ! call str%append(\"set key box opaque\") call str % append ( \"set key box\" ) else call str % append ( \"set key nobox\" ) end if ! Layout call str % append ( new_line ( 'a' )) call str % append ( \"set key \" ) call str % append ( this % get_layout ()) ! Opaque call str % append ( new_line ( 'a' )) call str % append ( \"set key \" ) if ( this % get_is_opaque ()) then call str % append ( \"opaque\" ) else call str % append ( \"noopaque\" ) end if ! End txt = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function leg_get_layout ( this ) result ( rst ) !! Gets the layout of the legend. class ( legend ), intent ( in ) :: this !! The legend object. character ( len = :), allocatable :: rst !! The layout type, either LEGEND_ARRANGE_VERTICALLY or !! LEGEND_ARRANGE_HORIZONTALLY. rst = trim ( this % m_layout ) end function ! --------------------- subroutine leg_set_layout ( this , x ) !! Sets the layout of the legend. class ( legend ), intent ( inout ) :: this !! The legend object. character ( len = * ), intent ( in ) :: x !! The layout type, either LEGEND_ARRANGE_VERTICALLY or !! LEGEND_ARRANGE_HORIZONTALLY. if ( x == LEGEND_ARRANGE_HORIZONTALLY . or . & x == LEGEND_ARRANGE_VERTICALLY ) & then this % m_layout = x end if end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_opaque ( this ) result ( rst ) !! Gets a value determining if the legend is to be opaque. class ( legend ), intent ( in ) :: this !! The legend object. logical :: rst !! True if the legend is to be opaque; else, false. rst = this % m_opaque end function ! --------------------- subroutine leg_set_opaque ( this , x ) !! Sets a value determining if the legend is to be opaque. class ( legend ), intent ( inout ) :: this !! The legend object. logical :: x !! True if the legend is to be opaque; else, false. this % m_opaque = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_legend.f90.html"},{"title":"fplot_errors.f90 – FPLOT","text":"Source Code module fplot_errors use iso_fortran_env implicit none type :: errors contains procedure :: report_error end type ! ****************************************************************************** ! ERROR CODES ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: PLOT_OUT_OF_MEMORY_ERROR = 1000 !! Occurs if there is insufficient memory available for the !! requested operation. integer ( int32 ), parameter :: PLOT_INVALID_INPUT_ERROR = 1001 !! Occurs if an invalid input is provided. integer ( int32 ), parameter :: PLOT_INVALID_OPERATION_ERROR = 1002 !! Occurs if an attempt is made to perform an invalid operation. integer ( int32 ), parameter :: PLOT_ARRAY_SIZE_MISMATCH_ERROR = 1003 !! Occurs if there is an array size mismatch error. integer ( int32 ), parameter :: PLOT_GNUPLOT_FILE_ERROR = 1004 !! Occurs if there is a GNUPLOT file error. contains ! ------------------------------------------------------------------------------ subroutine report_error ( this , fcn , msg , code ) class ( errors ), intent ( inout ) :: this character ( len = * ), intent ( in ) :: fcn character ( len = * ), intent ( in ) :: msg integer ( int32 ), intent ( in ) :: code write ( error_unit , '(A)' ) trim ( fcn ) // ': ' // trim ( msg ) error stop code end subroutine ! ------------------------------------------------------------------------------ subroutine report_memory_error ( err , fcn , flag ) !! Reports a memory allocation error. class ( errors ), intent ( inout ) :: err !! The error handling object. character ( len = * ), intent ( in ) :: fcn !! The name of the function or subroutine in which the error occurred. integer ( int32 ), intent ( in ) :: flag !! The error flag returned by the system. ! Local Variables character ( len = 256 ) :: msg ! Define the error message write ( msg , 100 ) \"Memory allocation error returning flag \" , flag , \".\" call err % report_error ( fcn , trim ( msg ), PLOT_OUT_OF_MEMORY_ERROR ) ! Formatting 100 format ( A , I0 , A ) end subroutine ! ------------------------------------------------------------------------------ subroutine report_file_create_error ( err , fcn , fname , flag ) !! Reports an I/O error related to file creating. class ( errors ), intent ( inout ) :: err !! The error handling object. character ( len = * ), intent ( in ) :: fcn !! The name of the function or subroutine in which the error occurred. character ( len = * ), intent ( in ) :: fname !! The filename. integer ( int32 ), intent ( in ) :: flag !! The error flag returned by the system. ! Local Variables character ( len = 2048 ) :: msg ! Define the error message write ( msg , 100 ) \"File \" , fname , \" could not be created. The error flag \" , & flag , \" was returned.\" call err % report_error ( fcn , trim ( msg ), PLOT_GNUPLOT_FILE_ERROR ) ! Formatting 100 format ( A , A , A , I0 , A ) end subroutine ! ------------------------------------------------------------------------------ subroutine report_array_size_mismatch_error ( err , fcn , name , expected , actual ) !! Reports an array size mismatch error. class ( errors ), intent ( inout ) :: err !! The error handling object. character ( len = * ), intent ( in ) :: fcn !! The name of the function or subroutine in which the error occurred. character ( len = * ), intent ( in ) :: name !! The variable name. integer ( int32 ), intent ( in ) :: expected !! The expected array size. integer ( int32 ), intent ( in ) :: actual !! The actual array size. ! Local Variables character ( len = 256 ) :: msg ! Define the message write ( msg , 100 ) \"Array \" , name , \" was found to be of length \" , actual , & \", but was expected to be of length \" , expected , \".\" call err % report_error ( fcn , trim ( msg ), PLOT_ARRAY_SIZE_MISMATCH_ERROR ) ! Formatting 100 format ( A , A , A , I0 , A , I0 , A ) end subroutine ! ------------------------------------------------------------------------------ subroutine report_matrix_size_mismatch_error ( err , fcn , name , mexp , nexp , & mact , nact ) !! Reports a matrix size mismatch error. class ( errors ), intent ( inout ) :: err !! The error handling object. character ( len = * ), intent ( in ) :: fcn !! The name of the function or subroutine in which the error occurred. character ( len = * ), intent ( in ) :: name !! The variable name. integer ( int32 ), intent ( in ) :: mexp !! The expected number of rows. integer ( int32 ), intent ( in ) :: nexp !! The expected number of columns. integer ( int32 ), intent ( in ) :: mact !! The actual number of rows. integer ( int32 ), intent ( in ) :: nact !! The actual number of columns. ! Local Variables character ( len = 256 ) :: msg ! Define the error write ( msg , 100 ) \"Matrix \" , name , \" was expected to be of size \" , mexp , & \"-by-\" , nexp , \", but was found to be of size \" , mact , \"-by-\" , nact , \".\" call err % report_error ( fcn , trim ( msg ), PLOT_ARRAY_SIZE_MISMATCH_ERROR ) ! Formatting 100 format ( A , A , A , I0 , A , I0 , A , I0 , A , I0 , A ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_errors.f90.html"},{"title":"fplot_surface_plot.f90 – FPLOT","text":"Source Code ! fplot_surface_plot.f90 module fplot_surface_plot use iso_fortran_env use fplot_plot_3d use fplot_errors use fplot_legend use fplot_surface_plot_data use strings implicit none private public :: surface_plot type , extends ( plot_3d ) :: surface_plot logical , private :: m_showHidden = . false . !! Show hidden lines? logical , private :: m_smooth = . true . !! Smooth the surface? logical , private :: m_contour = . false . !! Show a contour plot as well as the surface plot? logical , private :: m_useLighting = . false . !! Use lighting? real ( real32 ), private :: m_lightIntensity = 0.5 !! Lighting intensity (0 - 1) - default is 0.5 real ( real32 ), private :: m_specular = 0.5 !! Specular highlight intensity (0 - 1). real ( real32 ), private :: m_transparency = 1.0 !! Defines the translucency value. Must exist on (0, 1]. contains procedure , public :: initialize => surf_init procedure , public :: get_show_hidden => surf_get_show_hidden procedure , public :: set_show_hidden => surf_set_show_hidden procedure , public :: get_command_string => surf_get_cmd procedure , public :: get_allow_smoothing => surf_get_smooth procedure , public :: set_allow_smoothing => surf_set_smooth procedure , public :: get_show_contours => surf_get_show_contours procedure , public :: set_show_contours => surf_set_show_contours procedure , public :: get_use_lighting => surf_get_use_lighting procedure , public :: set_use_lighting => surf_set_use_lighting procedure , public :: get_light_intensity => surf_get_light_intensity procedure , public :: set_light_intensity => surf_set_light_intensity procedure , public :: get_specular_intensity => surf_get_specular_intensity procedure , public :: set_specular_intensity => surf_set_specular_intensity procedure , public :: get_transparency => surf_get_transparency procedure , public :: set_transparency => surf_set_transparency procedure , public :: surf_push_data generic , public :: push => surf_push_data end type contains ! ------------------------------------------------------------------------------ subroutine surf_init ( this , term , fname , err ) !! Initializes the surface_plot object. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables type ( legend ), pointer :: lgnd ! Initialize the base class call this % plot_3d % initialize ( term , fname , err ) ! Do not display the legend lgnd => this % get_legend () call lgnd % set_is_visible (. false .) end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_show_hidden ( this ) result ( x ) !! Gets a value indicating if hidden lines should be shown. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. logical :: x !! Returns true if hidden lines should be shown; else, false. x = this % m_showHidden end function ! ------------------------------------------------------------------------------ subroutine surf_set_show_hidden ( this , x ) !! Sets a value indicating if hidden lines should be shown. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. logical , intent ( in ) :: x !! Set to true if hidden lines should be shown; else, false. this % m_showHidden = x end subroutine ! ------------------------------------------------------------------------------ function surf_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot_3d !! object. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str ! class(colormap), pointer :: clr ! Initialization call str % initialize () ! Call the base routine call str % append ( this % plot % get_command_string ()) ! Hidden Stuff call str % append ( new_line ( 'a' )) if ( this % get_show_hidden ()) then call str % append ( \"unset hidden3d\" ) else call str % append ( \"set hidden3d\" ) end if ! Define the colormap ! clr => this%get_colormap() ! if (associated(clr)) then ! call str%append(new_line('a')) ! call str%append(clr%get_command_string()) ! end if ! Allow for smoothing interpolation if ( this % get_allow_smoothing ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set pm3d interpolate 0,0\" ) end if ! Draw a contour plot as well? if ( this % get_show_contours ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set contour\" ) end if ! Show colorbar ! if (.not.this%get_show_colorbar()) then ! call str%append(new_line('a')) ! call str%append(\"unset colorbox\") ! end if ! Lighting if ( this % get_use_lighting ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set pm3d lighting primary \" ) call str % append ( to_string ( this % get_light_intensity ())) call str % append ( \" specular \" ) call str % append ( to_string ( this % get_specular_intensity ())) end if ! Translucent if ( this % get_transparency () < 1.0 . and . this % get_transparency () > 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set style fill transparent solid \" ) call str % append ( to_string ( this % get_transparency ())) end if ! Call the base class to define the rest of the plot commands call str % append ( new_line ( 'a' )) call str % append ( this % plot_3d % get_command_string ()) ! Output x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ ! module function surf_get_colormap(this) result(x) ! class(surface_plot), intent(in) :: this ! class(colormap), pointer :: x ! x => this%m_colormap ! end function ! ! -------------------- ! module subroutine surf_set_colormap(this, x, err) ! ! Arguments ! class(surface_plot), intent(inout) :: this ! class(colormap), intent(in) :: x ! class(errors), intent(inout), optional, target :: err ! ! Local Variables ! integer(int32) :: flag ! class(errors), pointer :: errmgr ! type(errors), target :: deferr ! ! Initialization ! if (present(err)) then ! errmgr => err ! else ! errmgr => deferr ! end if ! ! Process ! if (associated(this%m_colormap)) deallocate(this%m_colormap) ! allocate(this%m_colormap, stat = flag, source = x) ! if (flag /= 0) then ! call errmgr%report_error(\"surf_set_colormap\", & ! \"Insufficient memory available.\", PLOT_OUT_OF_MEMORY_ERROR) ! return ! end if ! end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_smooth ( this ) result ( x ) !! Gets a value determining if the plotted surfaces should be !! smoothed. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. logical :: x !! Returns true if the surface should be smoothed; else, false. x = this % m_smooth end function ! -------------------- subroutine surf_set_smooth ( this , x ) !! Sets a value determining if the plotted surfaces should be !! smoothed. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. logical , intent ( in ) :: x !! Set to true if the surface should be smoothed; else, false. this % m_smooth = x end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_show_contours ( this ) result ( x ) !! Gets a value determining if a contour plot should be drawn in !! conjunction with the surface plot. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. logical :: x !! Returns true if the contour plot should be drawn; else, false to !! only draw the surface. x = this % m_contour end function ! -------------------- subroutine surf_set_show_contours ( this , x ) !! Sets a value determining if a contour plot should be drawn in !! conjunction with the surface plot. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. logical , intent ( in ) :: x !! Set to true if the contour plot should be drawn; else, false to !! only draw the surface. this % m_contour = x end subroutine ! ------------------------------------------------------------------------------ ! pure module function surf_get_show_colorbar(this) result(x) ! class(surface_plot), intent(in) :: this ! logical :: x ! x = this%m_showColorbar ! end function ! ! -------------------- ! module subroutine surf_set_show_colorbar(this, x) ! class(surface_plot), intent(inout) :: this ! logical, intent(in) :: x ! this%m_showColorbar = x ! end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_use_lighting ( this ) result ( x ) !! Gets a value indicating if lighting, beyond the ambient !! light source, is to be used. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. logical :: x !! True if lighting should be used; else, false. x = this % m_useLighting end function ! -------------------- subroutine surf_set_use_lighting ( this , x ) !! Sets a value indicating if lighting, beyond the ambient !! light source, is to be used. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. logical , intent ( in ) :: x !! True if lighting should be used; else, false. this % m_useLighting = x end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_light_intensity ( this ) result ( x ) !! Gets the ratio of the strength of the light source relative !! to the ambient light. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. real ( real32 ) :: x !! The light intensity ratio. x = this % m_lightIntensity end function ! -------------------- subroutine surf_set_light_intensity ( this , x ) !! Sets the ratio of the strength of the light source relative !! to the ambient light. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. real ( real32 ), intent ( in ) :: x !! The light intensity ratio. The value must exist in the !! set [0, 1]; else, it will be clipped to lie within the range. if ( x < 0.0 ) then this % m_lightIntensity = 0.0 else if ( x > 1.0 ) then this % m_lightIntensity = 1.0 else this % m_lightIntensity = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_specular_intensity ( this ) result ( x ) !! Gets the ratio of the strength of the specular light source !! relative to the ambient light. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. real ( real32 ) :: x !! The specular light intensity ratio. x = this % m_specular end function ! -------------------- subroutine surf_set_specular_intensity ( this , x ) !! Sets the ratio of the strength of the specular light source !! relative to the ambient light. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. real ( real32 ), intent ( in ) :: x !! The specular light intensity ratio. The value must exist in the !! set [0, 1]; else, it will be clipped to lie within the range. if ( x < 0.0 ) then this % m_specular = 0.0 else if ( x > 1.0 ) then this % m_specular = 1.0 else this % m_specular = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_transparency ( this ) result ( x ) !! Gets a factor defining the transparency of plotted surfaces. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. real ( real32 ) :: x !! A value existing on the set (0 1] defining the level of !! transparency. A value of 1 indicates a fully opaque surface. x = this % m_transparency end function ! -------------------- subroutine surf_set_transparency ( this , x ) !! Sets a factor defining the transparency of plotted surfaces. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. real ( real32 ), intent ( in ) :: x !! A value existing on the set (0 1] defining the level of !! transparency. A value of 1 indicates a fully opaque surface. !! Any values supplied outside of the set are clipped to fit within !! (0 1]. if ( x > 1.0 ) then this % m_transparency = 1.0 else if ( x <= 0.0 ) then this % m_transparency = 0.1 else this % m_transparency = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine surf_push_data ( this , x , y , z ) !! Adds a data set to the plot. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! An M-by-N matrix containing the x-coordinate data. real ( real64 ), intent ( in ), dimension ( size ( x , 1 ), size ( x , 2 )) :: y !! An M-by-N matrix containing the y-coordinate data. real ( real64 ), intent ( in ), dimension ( size ( x , 1 ), size ( x , 2 )) :: z !! An M-by-N matrix containing the z-coordinate data. type ( surface_plot_data ) :: pd call pd % define_data ( x , y , z ) call this % push ( pd ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_surface_plot.f90.html"},{"title":"fplot_colors.f90 – FPLOT","text":"Source Code ! fplot_colors.f90 module fplot_colors use iso_fortran_env implicit none private public :: color public :: operator ( == ) public :: operator ( /= ) public :: CLR_BLACK public :: CLR_WHITE public :: CLR_RED public :: CLR_LIME public :: CLR_BLUE public :: CLR_YELLOW public :: CLR_CYAN public :: CLR_MAGENTA public :: CLR_SILVER public :: CLR_GRAY public :: CLR_MAROON public :: CLR_OLIVE public :: CLR_GREEN public :: CLR_PURPLE public :: CLR_TEAL public :: CLR_NAVY public :: CLR_ORANGE public :: color_list type color !! Describes an RGB color. integer ( int32 ), public :: red = 0 !! The red component of the color (must be between 0 and 255). integer ( int32 ), public :: green = 0 !! The green component of the color (must be between 0 and 255). integer ( int32 ), public :: blue = 255 !! The blue component of the color (must be between 0 and 255). integer ( int32 ), public :: alpha = 0 !! The alpha component of the color (must be between 0 and 255). !! Notice, 0 is fully opaque and 255 is fully transparent. contains procedure , public , pass :: to_hex_string => clr_to_hex_string procedure , public , pass :: rgb_to_hex_string => clr_rgb_to_hex_string procedure , public , pass :: copy_from => clr_copy_from end type interface operator ( == ) module procedure :: clr_equals end interface interface operator ( /= ) module procedure :: clr_not_equals end interface type ( color ), parameter :: CLR_BLACK = color ( 0 , 0 , 0 , 0 ) !! Black. type ( color ), parameter :: CLR_WHITE = color ( 255 , 255 , 255 , 0 ) !! White. type ( color ), parameter :: CLR_RED = color ( 255 , 0 , 0 , 0 ) !! Red. type ( color ), parameter :: CLR_LIME = color ( 0 , 255 , 0 , 0 ) !! Lime. type ( color ), parameter :: CLR_BLUE = color ( 0 , 0 , 255 , 0 ) !! Blue. type ( color ), parameter :: CLR_YELLOW = color ( 255 , 255 , 0 , 0 ) !! Yellow. type ( color ), parameter :: CLR_CYAN = color ( 0 , 255 , 255 , 0 ) !! Cyan. type ( color ), parameter :: CLR_MAGENTA = color ( 255 , 0 , 255 , 0 ) !! Magenta. type ( color ), parameter :: CLR_SILVER = color ( 192 , 192 , 192 , 0 ) !! Silver. type ( color ), parameter :: CLR_GRAY = color ( 128 , 128 , 128 , 0 ) !! Gray. type ( color ), parameter :: CLR_MAROON = color ( 128 , 0 , 0 , 0 ) !! Maroon. type ( color ), parameter :: CLR_OLIVE = color ( 128 , 128 , 0 , 0 ) !! Olive. type ( color ), parameter :: CLR_GREEN = color ( 0 , 128 , 0 , 0 ) !! Green. type ( color ), parameter :: CLR_PURPLE = color ( 128 , 0 , 128 , 0 ) !! Purple. type ( color ), parameter :: CLR_TEAL = color ( 0 , 128 , 128 , 0 ) !! Teal. type ( color ), parameter :: CLR_NAVY = color ( 0 , 0 , 128 , 0 ) !! Navy. type ( color ), parameter :: CLR_ORANGE = color ( 255 , 165 , 0 , 0 ) !! Orange. ! A list of colors that can be cycled through by plotting code type ( color ), parameter , dimension ( 7 ) :: color_list = [ & color ( 0 , int ( 0.447 * 255 ), int ( 0.741 * 255 ), 0 ), & color ( int ( 0.85 * 255 ), int ( 0.325 * 255 ), int ( 0.098 * 255 ), 0 ), & color ( int ( 0.929 * 255 ), int ( 0.694 * 255 ), int ( 0.125 * 255 ), 0 ), & color ( int ( 0.494 * 255 ), int ( 0.184 * 255 ), int ( 0.556 * 255 ), 0 ), & color ( int ( 0.466 * 255 ), int ( 0.674 * 255 ), int ( 0.188 * 255 ), 0 ), & color ( int ( 0.301 * 255 ), int ( 0.745 * 255 ), int ( 0.933 * 255 ), 0 ), & color ( int ( 0.635 * 255 ), int ( 0.078 * 255 ), int ( 0.184 * 255 ), 0 )] contains ! ------------------------------------------------------------------------------ pure function clr_to_hex_string ( this ) result ( txt ) !! Returns the color in hexadecimal format. class ( color ), intent ( in ) :: this !! The color object. character ( 8 ) :: txt !! A string containing the hexadecimal equivalent. ! Local Variables integer ( int32 ) :: r , g , b , a , clr ! Clip each color if necessary if ( this % red < 0 ) then r = 0 else if ( this % red > 255 ) then r = 255 else r = this % red end if if ( this % green < 0 ) then g = 0 else if ( this % green > 255 ) then g = 255 else g = this % green end if if ( this % blue < 0 ) then b = 0 else if ( this % blue > 255 ) then b = 255 else b = this % blue end if if ( this % alpha < 0 ) then a = 0 else if ( this % alpha > 255 ) then a = 255 else a = this % alpha end if ! Build the color information clr = ishft ( a , 24 ) + ishft ( r , 16 ) + ishft ( g , 8 ) + b ! Convert the integer to a hexadecimal string write ( txt , '(Z8.8)' ) clr end function ! ------------------------------------------------------------------------------ pure function clr_rgb_to_hex_string ( this ) result ( txt ) !! Returns the color in hexadecimal format ignoring any alpha channel. class ( color ), intent ( in ) :: this !! The color object. character ( 6 ) :: txt !! A string containing the hexadecimal equivalent. ! Local Variables integer ( int32 ) :: r , g , b , clr ! Clip each color if necessary if ( this % red < 0 ) then r = 0 else if ( this % red > 255 ) then r = 255 else r = this % red end if if ( this % green < 0 ) then g = 0 else if ( this % green > 255 ) then g = 255 else g = this % green end if if ( this % blue < 0 ) then b = 0 else if ( this % blue > 255 ) then b = 255 else b = this % blue end if ! Build the color information clr = ishft ( r , 16 ) + ishft ( g , 8 ) + b ! Convert the integer to a hexadecimal string write ( txt , '(Z6.6)' ) clr end function ! ------------------------------------------------------------------------------ subroutine clr_copy_from ( this , clr ) !! Copies another color to this color. class ( color ), intent ( inout ) :: this !! The color object. class ( color ), intent ( in ) :: clr !! The color to copy. this % red = clr % red this % green = clr % green this % blue = clr % blue end subroutine ! ****************************************************************************** ! ADDED: JAN. 09, 2024 - JAC ! ------------------------------------------------------------------------------ ! pure subroutine clr_assign(x, y) ! type(color), intent(out) :: x ! class(color), intent(in) :: y ! call x%copy_from(y) ! end subroutine ! ------------------------------------------------------------------------------ pure function clr_equals ( x , y ) result ( rst ) type ( color ), intent ( in ) :: x , y logical :: rst rst = . true . if ( x % red /= y % red . or . & x % green /= y % green . or . & x % blue /= y % blue & ) then rst = . false . end if end function ! ------------------------------------------------------------------------------ pure function clr_not_equals ( x , y ) result ( rst ) type ( color ), intent ( in ) :: x , y logical :: rst rst = . not . clr_equals ( x , y ) end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_colors.f90.html"},{"title":"fplot_plot_axis.f90 – FPLOT","text":"Source Code ! fplot_plot_axis.f90 module fplot_plot_axis use iso_fortran_env use fplot_plot_object use fplot_constants use strings implicit none private public :: plot_axis public :: pa_get_string_result public :: x_axis public :: y_axis public :: y2_axis public :: z_axis public :: name_value_pair type name_value_pair !! Defines a name-value pair. character ( len = :), allocatable :: name !! The name. real ( real64 ) :: value !! The associated value. end type type , abstract , extends ( plot_object ) :: plot_axis !! Defines a plot axis object. logical , private :: m_hasTitle = . false . !! Has a title? character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_title = \"\" !! Axis title. logical , private :: m_autoscale = . true . !! Autoscale? real ( real64 ), private , dimension ( 2 ) :: m_limits = [ 0.0d0 , 1.0d0 ] !! Display limits. logical , private :: m_logScale = . false . !! Log scaled? logical , private :: m_zeroAxis = . false . !! Has a zero axis? real ( real32 ), private :: m_axisWidth = 1.5 !! The width, in pixels, of the zero-axis line. logical , private :: m_defaultTicLabels = . true . !! Use default tic label format? character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_ticLabelFmt = \"%g\" !! The tic lablel format. logical , private :: m_showTicLabels = . true . !! Show tic labels? integer ( int32 ), private :: m_ticXOffset = 0 !! The tic label x-offset, in characters. integer ( int32 ), private :: m_ticYOffset = 0 !! The tic label y-offset, in characters. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: & m_ticLabelAlignment = GNUPLOT_HORIZONTAL_ALIGN_CENTER !! The tic label alignment. !! !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT !! !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER !! !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT logical , private :: m_offsetTics = . false . !! Offset tics? real ( real32 ), private :: m_ticLabelAngle = 0.0 !! The tic label angle, in degrees. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_ticRotationOrigin = & GNUPLOT_ROTATION_ORIGIN_CENTER !! The tic label rotation origin. !! !! - GNUPLOT_ROTATION_ORIGIN_RIGHT !! !! - GNUPLOT_ROTATION_ORIGIN_LEFT !! !! - GNUPLOT_ROTATION_ORIGIN_CENTER integer ( int32 ), private :: m_titleXOffset = 0 !! The axis title x offset, in characters. integer ( int32 ), private :: m_titleYOffset = 0 !! The axis title y offset, in characters. logical , private :: m_useManualTicLabels = . false . !! Use manual (user-defined) tic labels? type ( name_value_pair ), private , allocatable , dimension (:) :: m_ticLabels !! A list of user-defined tic labels. contains procedure , public :: get_title => pa_get_title procedure , public :: set_title => pa_set_title procedure , public :: is_title_defined => pa_has_title procedure , public :: get_autoscale => pa_get_autoscale procedure , public :: set_autoscale => pa_set_autoscale procedure , public :: get_limits => pa_get_axis_limits procedure , public :: set_limits => pa_set_axis_limits procedure , public :: get_is_log_scaled => pa_get_log_scale procedure , public :: set_is_log_scaled => pa_set_log_scale procedure , public :: get_command_string => pa_get_cmd_string procedure , public :: get_zero_axis => pa_get_zero_axis procedure , public :: set_zero_axis => pa_set_zero_axis procedure , public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure , public :: set_zero_axis_line_width => pa_set_zero_axis_width procedure ( pa_get_string_result ), deferred , public :: get_id_string procedure , public :: get_use_default_tic_label_format => & pa_get_use_dft_tic_lbl_fmt procedure , public :: set_use_default_tic_label_format => & pa_set_use_dft_tic_lbl_fmt procedure , public :: get_tic_label_format => pa_get_tic_label_fmt procedure , public :: set_tic_label_format => pa_set_tic_label_fmt procedure , public :: get_show_tic_labels => pa_get_show_tic_labels procedure , public :: set_show_tic_labels => pa_set_show_tic_labels procedure , public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure , public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure , public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure , public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure , public :: get_tic_label_angle => pa_get_tic_label_angle procedure , public :: set_tic_label_angle => pa_set_tic_label_angle procedure , public :: get_tic_label_rotation_origin => & pa_get_tic_rotation_origin procedure , public :: set_tic_label_rotation_origin => & pa_set_tic_rotation_origin procedure , public :: get_tic_label_alignment => & pa_get_tic_label_alignment procedure , public :: set_tic_label_alignment => & pa_set_tic_label_alignment procedure , public :: get_offset_tics => pa_get_offset_tics procedure , public :: set_offset_tics => pa_set_offset_tics procedure , public :: get_title_x_offset => pa_get_title_x_offset procedure , public :: set_title_x_offset => pa_set_title_x_offset procedure , public :: get_title_y_offset => pa_get_title_y_offset procedure , public :: set_title_y_offset => pa_set_title_y_offset procedure , public :: get_use_manual_tic_labels => & pa_get_use_manual_tic_labels procedure , public :: set_use_manual_tic_labels => & pa_set_use_manual_tic_labels procedure , public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure , public :: set_manual_tic_labels => pa_set_manual_tic_labels end type interface function pa_get_string_result ( this ) result ( x ) !! Retrieves a string from a plot_axis. import plot_axis class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: x !! The string. end function end interface type , extends ( plot_axis ) :: x_axis !! Defines an x-axis object. character , private :: m_id = \"x\" !! The ID character. contains procedure , public :: get_id_string => xa_get_id end type type , extends ( plot_axis ) :: y_axis !! Defines a y-axis object. character , private :: m_id = \"y\" !! The ID character. contains procedure , public :: get_id_string => ya_get_id end type type , extends ( plot_axis ) :: y2_axis !! Defines a secondary y-axis object. character ( len = 2 ), private :: m_id = \"y2\" !! The ID character. contains procedure , public :: get_id_string => y2a_get_id end type type , extends ( plot_axis ) :: z_axis !! Defines a z-axis object. character , private :: m_id = \"z\" !! The ID character. contains procedure , public :: get_id_string => za_get_id end type contains ! ------------------------------------------------------------------------------ function pa_get_title ( this ) result ( txt ) !! Gets the axis title. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: txt !! The title. integer ( int32 ) :: n n = len_trim ( this % m_title ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_title ) end function ! -------------------- subroutine pa_set_title ( this , txt ) !! Sets the axis title. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. character ( len = * ), intent ( in ) :: txt !! The title. ! Local Variables integer ( int32 ) :: n ! Process n = min ( len_trim ( txt ), PLOTDATA_MAX_NAME_LENGTH ) this % m_title = \"\" if ( n /= 0 ) then this % m_title ( 1 : n ) = txt ( 1 : n ) this % m_hasTitle = . true . else this % m_hasTitle = . false . end if end subroutine ! ------------------------------------------------------------------------------ pure function pa_has_title ( this ) result ( x ) !! Gets a value determining if a title has been defined for this axis. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true if a title has been defined; else, false. x = this % m_hasTitle end function ! ------------------------------------------------------------------------------ pure function pa_get_autoscale ( this ) result ( x ) !! Gets a value determining if the axis should be automatically scaled !! to fit the data. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true if the axis should be automatically scaled; else, !! false. x = this % m_autoscale end function ! -------------------- subroutine pa_set_autoscale ( this , x ) !! Sets a value determining if the axis should be automatically scaled !! to fit the data. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true if the axis should be automatically scaled; else, !! set to false. this % m_autoscale = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_axis_limits ( this ) result ( x ) !! Gets the axis display limits, assuming autoscaling is not !! active for this axis. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. real ( real64 ), dimension ( 2 ) :: x !! A two-element array containing the limits as follows: !! [lower, upper]. x ( 1 ) = minval ( this % m_limits ) x ( 2 ) = maxval ( this % m_limits ) end function ! -------------------- subroutine pa_set_axis_limits ( this , lower , upper ) !! Gets the axis display limits, assuming autoscaling is not !! active for this axis. This routine also calls set_autoscale and !! sets the property value to false. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. real ( real64 ), intent ( in ) :: lower !! The lower display limit. real ( real64 ), intent ( in ) :: upper !! The upper display limit. this % m_limits ( 1 ) = min ( lower , upper ) this % m_limits ( 2 ) = max ( lower , upper ) call this % set_autoscale (. false .) end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_log_scale ( this ) result ( x ) !! Gets a logical value defining if the axis should be log scaled. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true if log scaling is applied to the axis; else, false. x = this % m_logScale end function ! -------------------- subroutine pa_set_log_scale ( this , x ) !! Sets a logical value defining if the axis should be log scaled. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true if log scaling is applied to the axis; else, false. this % m_logScale = x end subroutine ! ------------------------------------------------------------------------------ function pa_get_cmd_string ( this ) result ( txt ) !! Returns the appropriate GNUPLOT command string to define the !! plot_axis properties. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: txt !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str real ( real32 ) :: angle character ( len = :), allocatable :: axis , fmt real ( real64 ) :: lim ( 2 ) integer ( int32 ) :: i type ( name_value_pair ), allocatable , dimension (:) :: ticLabels ! Process axis = this % get_id_string () fmt = this % get_tic_label_format () lim = this % get_limits () call str % initialize () ! Formatting if (. not . this % get_use_default_tic_label_format ()) then call str % append ( \"set format \" ) call str % append ( axis ) call str % append ( '\"' ) call str % append ( fmt ) call str % append ( '\"' ) call str % append ( new_line ( 'a' )) end if ! Show Tic Labels? if ( this % get_show_tic_labels ()) then call str % append ( \"set \" ) else call str % append ( \"unset \" ) end if call str % append ( axis ) call str % append ( \"tics\" ) call str % append ( new_line ( 'a' )) ! Tic Label Offsets if ( this % get_show_tic_labels () . and . this % get_offset_tics ()) then call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"tics \" ) call str % append ( this % get_tic_label_alignment ()) call str % append ( \" offset \" ) call str % append ( to_string ( this % get_tic_label_x_offset ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_tic_label_y_offset ())) call str % append ( new_line ( 'a' )) end if ! Tic Label Rotation angle = this % get_tic_label_angle () if ( this % get_show_tic_labels () . and . angle /= 0.0 ) then call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"tics rotate by \" ) call str % append ( to_string ( angle )) call str % append ( \" \" ) call str % append ( this % get_tic_label_rotation_origin ()) call str % append ( new_line ( 'a' )) end if ! Axis Limits if ( this % get_autoscale ()) then call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"range [*:*]\" ) else call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"range [\" ) call str % append ( to_string ( lim ( 1 ))) call str % append ( \":\" ) call str % append ( to_string ( lim ( 2 ))) call str % append ( \"]\" ) end if ! Titles call str % append ( new_line ( 'a' )) if ( this % is_title_defined ()) then ! Title call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"label \" ) call str % append ( '\"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) ! Offsets if ( this % get_title_x_offset () /= 0 . or . & this % get_title_y_offset () /= 0 ) & then call str % append ( \" offset \" ) call str % append ( to_string ( this % get_title_x_offset ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_title_y_offset ())) end if else call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"label \" ) call str % append ( '\"\"' ) end if call str % append ( new_line ( 'a' )) ! Scaling call str % append ( new_line ( 'a' )) if ( this % get_is_log_scaled ()) then call str % append ( \"set log \" ) call str % append ( axis ) else call str % append ( \"unset log \" ) call str % append ( axis ) end if ! Zero Axis if ( this % get_zero_axis ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set \" ) call str % append ( this % get_id_string ()) call str % append ( \"zeroaxis linestyle -1 linewidth \" ) call str % append ( to_string ( this % get_zero_axis_line_width ())) end if ! Use manual labels ticLabels = this % get_manual_tic_labels () if ( this % get_use_manual_tic_labels () . and . size ( ticLabels ) > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set \" ) call str % append ( this % get_id_string () // \"tics(\" ) do i = 1 , size ( ticLabels ) call str % append ( '\"' ) call str % append ( ticLabels ( i )% name ) call str % append ( '\" ' ) call str % append ( to_string ( ticLabels ( i )% value )) if ( i /= size ( ticLabels )) call str % append ( \", \" ) end do call str % append ( \")\" ) end if ! Output txt = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function pa_get_zero_axis ( this ) result ( x ) !! Gets a value determining if the axis should be drawn through !! zero of opposing axes. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true to draw as a zero axis; else, set to false. x = this % m_zeroAxis end function ! -------------------- subroutine pa_set_zero_axis ( this , x ) !! Sets a value determining if the axis should be drawn through !! zero of opposing axes. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true to draw as a zero axis; else, set to false. this % m_zeroAxis = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_zero_axis_width ( this ) result ( x ) !! Gets the width of the line used to represent the zero axis line, if !! active. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. real ( real32 ) :: x !! The width of the line, in pixels. x = this % m_axisWidth end function ! -------------------- subroutine pa_set_zero_axis_width ( this , x ) !! Sets the width of the line used to represent the zero axis line, if !! active. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. real ( real32 ), intent ( in ) :: x !! The width of the line, in pixels. this % m_axisWidth = x end subroutine ! ADDED March 29, 2023 - JAC ! ------------------------------------------------------------------------------ pure function pa_get_use_dft_tic_lbl_fmt ( this ) result ( rst ) !! Gets a value determining if the default tic label format will be !! used. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: rst !! Returns true if the default tic label format will be used; else, !! false. rst = this % m_defaultTicLabels end function ! -------------------- subroutine pa_set_use_dft_tic_lbl_fmt ( this , x ) !! Sets a value determining if the default tic label format will be !! used. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true if the default tic label format will be used; else, !! false. this % m_defaultTicLabels = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_label_fmt ( this ) result ( rst ) !! Gets the tic label format. The format string can be any format !! string accepted by the C command 'printf.' class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: rst !! The tic label format string. rst = trim ( this % m_ticLabelFmt ) end function ! -------------------- subroutine pa_set_tic_label_fmt ( this , x ) !! Sets the tic label format. The format string can be any format !! string accepted by the C command 'printf.' class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. character ( len = * ), intent ( in ) :: x !! The tic label format string. this % m_ticLabelFmt = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_show_tic_labels ( this ) result ( x ) !! Gets a value determining if tic labels should be shown. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true to show tic labels; else, set to false. x = this % m_showTicLabels end function ! -------------------- subroutine pa_set_show_tic_labels ( this , x ) !! Sets a value determining if tic labels should be shown. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true to show tic labels; else, set to false. this % m_showTicLabels = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_x_offset ( this ) result ( x ) !! Gets the tic label x-offset, in characters. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. integer ( int32 ) :: x !! The tic label x-offset, in characters. x = this % m_ticXOffset end function ! -------------------- subroutine pa_set_tic_x_offset ( this , x ) !! Sets the tic label x-offset, in characters. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. integer ( int32 ), intent ( in ) :: x !! The tic label x-offset, in characters. this % m_ticXOffset = x call this % set_offset_tics (. true .) end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_y_offset ( this ) result ( x ) !! Gets the tic label y-offset, in characters. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. integer ( int32 ) :: x !! The tic label y-offset, in characters. x = this % m_ticYOffset end function ! -------------------- subroutine pa_set_tic_y_offset ( this , x ) !! Sets the tic label y-offset, in characters. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. integer ( int32 ), intent ( in ) :: x !! The tic label y-offset, in characters. this % m_ticYOffset = x call this % set_offset_tics (. true .) end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_label_angle ( this ) result ( x ) !! Gets the tic label angle, in degrees. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. real ( real32 ) :: x !! The tic label angle, in degrees. x = this % m_ticLabelAngle end function ! -------------------- subroutine pa_set_tic_label_angle ( this , x ) !! Sets the tic label angle, in degrees. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. real ( real32 ), intent ( in ) :: x !! The tic label angle, in degrees. this % m_ticLabelAngle = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_rotation_origin ( this ) result ( x ) !! Gets the tic label rotation origin. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: x !! The tic label rotation origin. The tic label rotation origin !! must be one of the following: !! !! - GNUPLOT_ROTATION_ORIGIN_RIGHT !! !! - GNUPLOT_ROTATION_ORIGIN_LEFT !! !! - GNUPLOT_ROTATION_ORIGIN_CENTER integer ( int32 ) :: n n = len_trim ( this % m_ticRotationOrigin ) allocate ( character ( len = n ) :: x ) x = trim ( this % m_ticRotationOrigin ) end function ! -------------------- subroutine pa_set_tic_rotation_origin ( this , x ) !! Sets the tic label rotation origin. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. character ( len = * ), intent ( in ) :: x !! The tic label rotation origin. The tic label rotation origin !! must be one of the following: !! !! - GNUPLOT_ROTATION_ORIGIN_RIGHT !! !! - GNUPLOT_ROTATION_ORIGIN_LEFT !! !! - GNUPLOT_ROTATION_ORIGIN_CENTER this % m_ticRotationOrigin = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_label_alignment ( this ) result ( x ) !! Gets the tic label alignment. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: x !! The tic label alignment. The tic label alignment must be one of !! the following: !! !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT !! !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER !! !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT integer ( int32 ) :: n n = len_trim ( this % m_ticLabelAlignment ) allocate ( character ( len = n ) :: x ) x = trim ( this % m_ticLabelAlignment ) end function ! -------------------- subroutine pa_set_tic_label_alignment ( this , x ) !! Sets the tic label alignment. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. character ( len = * ), intent ( in ) :: x !! The tic label alignment. The tic label alignment must be one of !! the following: !! !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT !! !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER !! !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT this % m_ticLabelAlignment = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_offset_tics ( this ) result ( x ) !! Gets a value determining if the tics should be offset. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true to offset the tics; else, set to false. x = this % m_offsetTics end function ! -------------------- subroutine pa_set_offset_tics ( this , x ) !! Sets a value determining if the tics should be offset. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true to offset the tics; else, set to false. this % m_offsetTics = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_title_x_offset ( this ) result ( x ) !! Gets the axis title x-offset, in characters. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. integer ( int32 ) :: x !! The axis title x-offset, in characters. x = this % m_titleXOffset end function ! -------------------- subroutine pa_set_title_x_offset ( this , x ) !! Sets the axis title x-offset, in characters. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. integer ( int32 ), intent ( in ) :: x !! The axis title x-offset, in characters. this % m_titleXOffset = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_title_y_offset ( this ) result ( x ) !! Gets the axis title y-offset, in characters. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. integer ( int32 ) :: x !! The axis title y-offset, in characters. x = this % m_titleYOffset end function ! -------------------- subroutine pa_set_title_y_offset ( this , x ) !! Sets the axis title y-offset, in characters. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. integer ( int32 ), intent ( in ) :: x !! The axis title y-offset, in characters. this % m_titleYOffset = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_use_manual_tic_labels ( this ) result ( rst ) !! Gets a value determining if manual tic labels should be used. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: rst !! True if manual tic labels should be used; else, false. rst = this % m_useManualTicLabels end function ! -------------------- subroutine pa_set_use_manual_tic_labels ( this , x ) !! Sets a value determining if manual tic labels should be used. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true if manual tic labels should be used; else, false. this % m_useManualTicLabels = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_manual_tic_labels ( this ) result ( rst ) !! Gets a list of manual tic labels. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. type ( name_value_pair ), allocatable , dimension (:) :: rst !! A list of name-value pairs where the name defines the label !! shown with the corresponding axis value. if ( allocated ( this % m_ticLabels )) then rst = this % m_ticLabels else allocate ( rst ( 0 )) end if end function ! -------------------- subroutine pa_set_manual_tic_labels ( this , x ) !! Sets a list of manual tic labels. This routine also sets !! set_use_manual_tic_labels to true. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. type ( name_value_pair ), intent ( in ), dimension (:) :: x !! The list of tic values with the name component representing the !! displayed label text and the value is the associated axis value. if ( allocated ( this % m_ticLabels )) deallocate ( this % m_ticLabels ) allocate ( this % m_ticLabels ( size ( x )), source = x ) call this % set_use_manual_tic_labels (. true .) end subroutine ! ****************************************************************************** ! X_AXIS MEMBERS ! ------------------------------------------------------------------------------ function xa_get_id ( this ) result ( x ) !! Gets the axis identification string. class ( x_axis ), intent ( in ) :: this !! The x_axis object. character ( len = :), allocatable :: x !! The identification string. x = this % m_id end function ! ****************************************************************************** ! Y_AXIS MEMBERS ! ------------------------------------------------------------------------------ function ya_get_id ( this ) result ( x ) !! Gets the axis identification string. class ( y_axis ), intent ( in ) :: this !! The y_axis object. character ( len = :), allocatable :: x !! The identification string. x = this % m_id end function ! ****************************************************************************** ! Y2_AXIS MEMBERS ! ------------------------------------------------------------------------------ function y2a_get_id ( this ) result ( x ) !! Gets the axis identification string. class ( y2_axis ), intent ( in ) :: this !! The y2_axis object. character ( len = :), allocatable :: x !! The identification string. x = this % m_id end function ! ****************************************************************************** ! Z_AXIS MEMBERS ! ------------------------------------------------------------------------------ function za_get_id ( this ) result ( x ) !! Gets the axis identification string. class ( z_axis ), intent ( in ) :: this !! The z_axis object. character ( len = :), allocatable :: x !! The identification string. x = this % m_id end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_axis.f90.html"},{"title":"fplot_surface_plot_data.f90 – FPLOT","text":"Source Code module fplot_surface_plot_data use iso_fortran_env use fplot_plot_data use fplot_errors use strings implicit none private public :: surface_plot_data type , extends ( plot_data ) :: surface_plot_data !! Provides a three-dimensional surface plot data set. real ( real64 ), private , allocatable , dimension (:,:) :: m_x !! Stores the x-coordinate data real ( real64 ), private , allocatable , dimension (:,:) :: m_y !! Stores the y-coordinate data real ( real64 ), private , allocatable , dimension (:,:) :: m_z !! Stores the z-coordinate data logical , private :: m_wireframe = . false . !! Set to true to display a wireframe of the surface; else, just a !! smooth surface will be drawn contains procedure , public :: get_size => surfd_get_size procedure , public :: get_x => surfd_get_x procedure , public :: set_x => surfd_set_x procedure , public :: get_y => surfd_get_y procedure , public :: set_y => surfd_set_y procedure , public :: get_z => surfd_get_z procedure , public :: set_z => surfd_set_z procedure , public :: get_use_wireframe => surfd_get_wireframe procedure , public :: set_use_wireframe => surfd_set_wireframe procedure , public :: get_command_string => surfd_get_cmd procedure , public :: get_data_string => surfd_get_data_cmd procedure , public :: define_data => surfd_set_data_1 procedure , public :: clear_data => surfd_clear_data end type contains ! ------------------------------------------------------------------------------ pure function surfd_get_size ( this , dim ) result ( x ) !! Gets the size of the stored data set. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: dim !! The dimension of interest. Notice, data is stored as a !! 2D matrix (i.e. only 1 and 2 are valid inputs). integer ( int32 ) :: x !! The size of the requested dimension. if ( allocated ( this % m_x )) then x = size ( this % m_x , dim ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function surfd_get_x ( this , i , j ) result ( x ) !! Gets the requested X data point. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ) :: x !! The value. if ( allocated ( this % m_x )) then x = this % m_x ( i , j ) else x = 0.0d0 end if end function ! -------------------- subroutine surfd_set_x ( this , i , j , x ) !! Sets the requested X data point. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ), intent ( in ) :: x !! The value. if ( allocated ( this % m_x )) then this % m_x ( i , j ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surfd_get_y ( this , i , j ) result ( x ) !! Gets the requested Y data point. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ) :: x !! The value. if ( allocated ( this % m_y )) then x = this % m_y ( i , j ) else x = 0.0d0 end if end function ! -------------------- subroutine surfd_set_y ( this , i , j , x ) !! Sets the requested Y data point. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ), intent ( in ) :: x !! The value. if ( allocated ( this % m_y )) then this % m_y ( i , j ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surfd_get_z ( this , i , j ) result ( x ) !! Gets the requested Z data point. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ) :: x !! The value. if ( allocated ( this % m_z )) then x = this % m_z ( i , j ) else x = 0.0d0 end if end function ! -------------------- subroutine surfd_set_z ( this , i , j , x ) !! Sets the requested Z data point. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ), intent ( in ) :: x !! The value. if ( allocated ( this % m_z )) then this % m_z ( i , j ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surfd_get_wireframe ( this ) result ( x ) !! Gets a value determining if a wireframe mesh should be displayed. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. logical :: x !! Returns true if a wireframe mesh should be displayed; else, !! false to display a solid surface. x = this % m_wireframe end function ! -------------------- subroutine surfd_set_wireframe ( this , x ) !! Sets a value determining if a wireframe mesh should be displayed. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. logical , intent ( in ) :: x !! Set to true if a wireframe mesh should be displayed; else, !! false to display a solid surface. this % m_wireframe = x end subroutine ! ------------------------------------------------------------------------------ function surfd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this surface_plot_data !! object. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! PM3D or wireframe? if ( this % get_use_wireframe ()) then call str % append ( \" with lines\" ) else call str % append ( \" with pm3d\" ) end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function surfd_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data to plot. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. character ( len = :), allocatable :: x !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , m , n character :: delimiter , nl ! Initialization call str % initialize () m = this % get_size ( 1 ) n = this % get_size ( 2 ) delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) ! Process do j = 1 , n do i = 1 , m call str % append ( to_string ( this % get_x ( i , j ))) call str % append ( delimiter ) call str % append ( to_string ( this % get_y ( i , j ))) call str % append ( delimiter ) call str % append ( to_string ( this % get_z ( i , j ))) call str % append ( nl ) end do if ( j /= n ) call str % append ( nl ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine surfd_set_data_1 ( this , x , y , z , err ) !! Defines the data set. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! An M-by-N matrix containing the x-coordinate data. real ( real64 ), intent ( in ), dimension (:,:) :: y !! An M-by-N matrix containing the y-coordinate data. real ( real64 ), intent ( in ), dimension (:,:) :: z !! An M-by-N matrix containing the z-coordinate data. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , j , m , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization m = size ( x , 1 ) n = size ( x , 2 ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( y , 1 ) /= m . or . size ( y , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"surfd_set_data_1\" , & \"y\" , m , n , size ( y , 1 ), size ( y , 2 )) return end if if ( size ( z , 1 ) /= m . or . size ( z , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"surfd_set_data_1\" , & \"z\" , m , n , size ( z , 1 ), size ( z , 2 )) return end if ! Process if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_z )) deallocate ( this % m_z ) allocate ( this % m_x ( m , n ), stat = flag ) if ( flag == 0 ) allocate ( this % m_y ( m , n ), stat = flag ) if ( flag == 0 ) allocate ( this % m_z ( m , n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"surfd_set_data_1\" , flag ) return end if do concurrent ( j = 1 : n ) do i = 1 , m this % m_x ( i , j ) = x ( i , j ) this % m_y ( i , j ) = y ( i , j ) this % m_z ( i , j ) = z ( i , j ) end do end do end subroutine ! ------------------------------------------------------------------------------ subroutine surfd_clear_data ( this ) !! Clears the data from this data set. class ( surface_plot_data ), intent ( inout ) :: this !! The surface_plot_data object. if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_z )) deallocate ( this % m_z ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_surface_plot_data.f90.html"},{"title":"fplot_qt_terminal.f90 – FPLOT","text":"Source Code ! fplot_qt_terminal.f90 module fplot_qt_terminal use iso_fortran_env use fplot_terminal implicit none private public :: qt_terminal type , extends ( terminal ) :: qt_terminal !! Defines a terminal that utilizes QT. character ( len = 2 ), private :: m_id = \"qt\" !! The terminal ID string contains procedure , public :: get_id_string => qt_get_term_string end type contains function qt_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( qt_terminal ), intent ( in ) :: this !! The qt_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function end module","tags":"","loc":"sourcefile\\fplot_qt_terminal.f90.html"},{"title":"fplot_wxt_terminal.f90 – FPLOT","text":"Source Code ! fplot_wxt_terminal.f90 module fplot_wxt_terminal use iso_fortran_env use fplot_terminal implicit none private public :: wxt_terminal type , extends ( terminal ) :: wxt_terminal !! A WXT terminal. character ( len = 3 ), private :: m_id = \"wxt\" !! The terminal ID string contains procedure , public :: get_id_string => wxt_get_term_string end type contains function wxt_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( wxt_terminal ), intent ( in ) :: this !! The wxt_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function end module","tags":"","loc":"sourcefile\\fplot_wxt_terminal.f90.html"},{"title":"fplot_multiplot.f90 – FPLOT","text":"Source Code ! fplot_multiplot.f90 module fplot_multiplot use iso_fortran_env use fplot_plot_object use fplot_plot use fplot_terminal use fplot_windows_terminal use fplot_qt_terminal use fplot_wxt_terminal use fplot_png_terminal use fplot_latex_terminal use fplot_svg_terminal use fplot_pdf_terminal use fplot_constants use fplot_errors use collections use strings implicit none private public :: multiplot type , extends ( plot_object ) :: multiplot !! Defines a multi-plot layout. type ( list ), private :: m_plots !! The collection of plot objects. integer ( int32 ), private :: m_rows = 0 !! The number of rows of plots. integer ( int32 ), private :: m_cols = 0 !! The number of columns of plots. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_title !! The page title. logical , private :: m_hasTitle = . false . !! Has a title? class ( terminal ), pointer :: m_terminal => null () !! The GNUPLOT terminal object to target. contains final :: mp_clean procedure , public :: get_command_string => mp_get_command procedure , public :: initialize => mp_init procedure , public :: get_row_count => mp_get_rows procedure , public :: get_column_count => mp_get_cols procedure , public :: get_plot_count => mp_get_count procedure , public :: get_title => mp_get_title procedure , public :: set_title => mp_set_title procedure , public :: draw => mp_draw procedure , public :: get => mp_get procedure , public :: set => mp_set procedure , public :: is_title_defined => mp_has_title procedure , public :: get_terminal => mp_get_term procedure , public :: save_file => mp_save procedure , public :: get_font_name => mp_get_font procedure , public :: set_font_name => mp_set_font procedure , public :: get_font_size => mp_get_font_size procedure , public :: set_font_size => mp_set_font_size procedure , public :: set_window_size => mp_set_window_size end type contains ! ------------------------------------------------------------------------------ function mp_get_command ( this ) result ( x ) !! Gets the GNUPLOT commands for this object. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , m , n class ( plot ), pointer :: ptr ! Initialization call str % initialize () m = this % get_row_count () n = this % get_column_count () ! Set up the multiplot call str % append ( \"set multiplot layout \" ) call str % append ( to_string ( m )) call str % append ( \",\" ) call str % append ( to_string ( n )) call str % append ( \" columnsfirst\" ) if ( this % is_title_defined ()) then call str % append ( \" title \" ) call str % append ( '\"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if call str % append ( new_line ( 'a' )) ! Write commands for each plot object do j = 1 , n do i = 1 , m ptr => this % get ( i , j ) call str % append ( new_line ( 'a' )) call str % append ( ptr % get_command_string ()) end do end do ! Close out the multiplot call str % append ( new_line ( 'a' )) call str % append ( \"unset multiplot\" ) ! Get the string x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine mp_init ( this , m , n , term , width , height , fname , err ) !! Initializes the multiplot object. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: m !! The number of rows of plots. integer ( int32 ), intent ( in ) :: n !! The number of columns of plots. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. The !! default terminal is a WXT terminal. The acceptable inputs are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF integer ( int32 ), intent ( in ), optional :: width !! Optionally, the width of the plot window. integer ( int32 ), intent ( in ), optional :: height !! Optionally, the height of the plot window. character ( len = * ), intent ( in ), optional :: fname !! A filename to associate with terminals that print to file. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag , t , i class ( errors ), pointer :: errmgr type ( errors ), target :: deferr type ( wxt_terminal ), pointer :: wxt type ( windows_terminal ), pointer :: win type ( qt_terminal ), pointer :: qt type ( png_terminal ), pointer :: png type ( latex_terminal ), pointer :: latex type ( svg_terminal ), pointer :: svg type ( pdf_terminal ), pointer :: pdf ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( present ( term )) then t = term else t = GNUPLOT_TERMINAL_WXT end if ! Process call this % m_plots % clear () this % m_rows = m this % m_cols = n flag = 0 ! Populate the list with a dummy variable at the outset. This allows ! the list to be appropriately sized so the user may use the \"set\" ! subroutine appropriately do i = 1 , m * n call this % m_plots % push ( i ) end do ! Define the terminal if ( associated ( this % m_terminal )) deallocate ( this % m_terminal ) select case ( t ) case ( GNUPLOT_TERMINAL_PNG ) allocate ( png , stat = flag ) if ( present ( fname )) call png % set_filename ( fname ) this % m_terminal => png case ( GNUPLOT_TERMINAL_QT ) allocate ( qt , stat = flag ) this % m_terminal => qt case ( GNUPLOT_TERMINAL_WIN32 ) allocate ( win , stat = flag ) this % m_terminal => win case ( GNUPLOT_TERMINAL_LATEX ) allocate ( latex , stat = flag ) if ( present ( fname )) call latex % set_filename ( fname ) this % m_terminal => latex case ( GNUPLOT_TERMINAL_SVG ) allocate ( svg ) if ( present ( fname )) call svg % set_filename ( fname ) this % m_terminal => svg case ( GNUPLOT_TERMINAL_PDF ) allocate ( pdf , stat = flag ) if ( present ( fname )) call pdf % set_filename ( fname ) this % m_terminal => pdf case default ! WXT is the default allocate ( wxt , stat = flag ) this % m_terminal => wxt end select ! Error Checking if ( flag /= 0 ) then call report_memory_error ( errmgr , \"mp_init\" , flag ) return end if ! Size the window? if ( present ( width )) then call this % m_terminal % set_window_width ( width ) end if if ( present ( height )) then call this % m_terminal % set_window_height ( height ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine mp_clean ( this ) !! Cleans up resources held by the multiplot object. type ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. if ( associated ( this % m_terminal )) deallocate ( this % m_terminal ) nullify ( this % m_terminal ) end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_rows ( this ) result ( x ) !! Gets the number of rows of plots. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ) :: x !! The row count. x = this % m_rows end function ! -------------------- pure function mp_get_cols ( this ) result ( x ) !! Gets the number of columns of plots. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ) :: x !! The column count. x = this % m_cols end function ! -------------------- pure function mp_get_count ( this ) result ( x ) !! Gets the total number of plots. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ) :: x !! The plot count. x = this % m_plots % count () end function ! ------------------------------------------------------------------------------ function mp_get_title ( this ) result ( x ) !! Gets the multiplot's title. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. character ( len = :), allocatable :: x !! The title. x = this % m_title end function ! -------------------- subroutine mp_set_title ( this , x ) !! Sets the multiplot's title. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. character ( len = * ), intent ( in ) :: x !! The title. ! Local Variables integer ( int32 ) :: n ! Process n = min ( len ( x ), PLOTDATA_MAX_NAME_LENGTH ) this % m_title = \"\" if ( n /= 0 ) then this % m_title ( 1 : n ) = x ( 1 : n ) this % m_hasTitle = . true . else this % m_hasTitle = . false . end if end subroutine ! ------------------------------------------------------------------------------ subroutine mp_draw ( this , persist , err ) !! Launches GNUPLOT and draws the multiplot per the current state of !! the command list. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. logical , intent ( in ), optional :: persist !! An optional parameter that can be used to keep GNUPLOT open. !! Set to true to force GNUPLOT to remain open; else, set to false !! to allow GNUPLOT to close after drawing. The default is true. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Parameters character ( len = * ), parameter :: fname = \"temp_gnuplot_file.plt\" ! Local Variables logical :: p integer ( int32 ) :: fid , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr class ( terminal ), pointer :: term ! Initialization if ( present ( persist )) then p = persist else p = . true . end if if ( present ( err )) then errmgr => err else errmgr => deferr end if term => this % get_terminal () ! Open the file for writing, and write the contents to file open ( newunit = fid , file = fname , iostat = flag ) if ( flag > 0 ) then call report_file_create_error ( errmgr , \"mp_draw\" , fname , flag ) return end if write ( fid , '(A)' ) term % get_command_string () write ( fid , '(A)' ) new_line ( 'a' ) write ( fid , '(A)' ) this % get_command_string () close ( fid ) ! Launch GNUPLOT if ( p ) then call execute_command_line ( \"gnuplot --persist \" // fname ) else call execute_command_line ( \"gnuplot \" // fname ) end if ! Clean up by deleting the file open ( newunit = fid , file = fname ) close ( fid , status = \"delete\" ) end subroutine ! ------------------------------------------------------------------------------ function mp_get ( this , i , j ) result ( x ) !! Gets the requested plot object. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: i !! The row index of the plot to retrieve. integer ( int32 ), intent ( in ) :: j !! The column index of the plot to retrieve. class ( plot ), pointer :: x !! A pointer to the plot object. ! Local Variables class ( * ), pointer :: item integer ( int32 ) :: ind ! Process ind = this % m_rows * ( j - 1 ) + i item => this % m_plots % get ( ind ) select type ( item ) class is ( plot ) x => item class default nullify ( x ) end select end function ! -------------------- subroutine mp_set ( this , i , j , x ) !! Replaces the specified plot. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: i !! The row index of the plot to replace. integer ( int32 ), intent ( in ) :: j !! The column index of the plot to replace. class ( plot ), intent ( in ) :: x !! The new plot. ! Local Variables integer ( int32 ) :: ind ! Process ind = this % m_rows * ( j - 1 ) + i call this % m_plots % set ( ind , x ) end subroutine ! ------------------------------------------------------------------------------ pure function mp_has_title ( this ) result ( x ) !! Gets a value determining if a title has been defined for the !! multiplot object. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. logical :: x !! Returns true if a title has been defined for this multiplot; !! else, returns false. x = this % m_hasTitle end function ! ------------------------------------------------------------------------------ function mp_get_term ( this ) result ( x ) !! Gets the GNUPLOT terminal object. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. class ( terminal ), pointer :: x !! A pointer to the terminal object. x => this % m_terminal end function ! ------------------------------------------------------------------------------ subroutine mp_save ( this , fname , err ) !! Saves a GNUPLOT command file. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. character ( len = * ), intent ( in ) :: fname !! The filename. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: fid , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr class ( terminal ), pointer :: term ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if term => this % get_terminal () ! Open the file for writing, and write the contents to file open ( newunit = fid , file = fname , iostat = flag ) if ( flag > 0 ) then call report_file_create_error ( errmgr , \"mp_save\" , fname , flag ) return end if write ( fid , '(A)' ) term % get_command_string () write ( fid , '(A)' ) new_line ( 'a' ) write ( fid , '(A)' ) this % get_command_string () close ( fid ) end subroutine ! ------------------------------------------------------------------------------ function mp_get_font ( this ) result ( x ) !! Gets the name of the font used for plot text. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. character ( len = :), allocatable :: x !! The font name. class ( terminal ), pointer :: term term => this % get_terminal () x = term % get_font_name () end function ! -------------------- subroutine mp_set_font ( this , x ) !! Sets the name of the font used for plot text. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. character ( len = * ), intent ( in ) :: x !! The font name. class ( terminal ), pointer :: term term => this % get_terminal () call term % set_font_name ( x ) end subroutine ! ------------------------------------------------------------------------------ function mp_get_font_size ( this ) result ( x ) !! Gets the size of the font used by the plot. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ) :: x !! The font size. class ( terminal ), pointer :: term term => this % get_terminal () x = term % get_font_size () end function ! -------------------- subroutine mp_set_font_size ( this , x ) !! Sets the size of the font used by the plot. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: x !! The font size. class ( terminal ), pointer :: term term => this % get_terminal () call term % set_font_size ( x ) end subroutine ! ****************************************************************************** ! ADDED AUG. 16, 2026 - V1.9.0 ! ------------------------------------------------------------------------------ subroutine mp_set_window_size ( this , width , height ) !! Sets the height and width of the plot window. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: width !! The plot window width. integer ( int32 ), intent ( in ) :: height !! The plot window height. if ( associated ( this % m_terminal )) then call this % m_terminal % set_window_width ( width ) call this % m_terminal % set_window_height ( height ) end if end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_multiplot.f90.html"},{"title":"fplot_core_routines.f90 – FPLOT","text":"Source Code ! fplot_core_routines.f90 module fplot_core_routines use iso_fortran_env implicit none private public :: linspace public :: logspace public :: meshgrid contains ! ------------------------------------------------------------------------------ pure function linspace ( start , finish , npts ) result ( x ) !! Constructs a linearly spaced array. real ( real64 ), intent ( in ) :: start !! The first value in the array. real ( real64 ), intent ( in ) :: finish !! The last value in the array. integer ( int32 ), intent ( in ) :: npts !! The number of values in the array. real ( real64 ), allocatable , dimension (:) :: x !! The resulting array. ! Local Variables integer ( int32 ) :: i real ( real64 ) :: dx ! Process allocate ( x ( npts )) dx = ( finish - start ) / ( npts - 1.0d0 ) x ( 1 ) = start do i = 2 , npts x ( i ) = x ( i - 1 ) + dx end do end function ! ------------------------------------------------------------------------------ pure function logspace ( start , finish , npts ) result ( x ) !! Construcst a logarithmically spaced array. real ( real64 ), intent ( in ) :: start !! The exponent of the first value in the array. real ( real64 ), intent ( in ) :: finish !! The exponent of the final value in the array. integer ( int32 ), intent ( in ) :: npts !! The number of values in the array. real ( real64 ), allocatable , dimension (:) :: x !! The resulting array. ! Local Variables integer ( int32 ) :: i real ( real64 ) :: dx , exponent ! Process allocate ( x ( npts )) dx = ( finish - start ) / ( npts - 1.0d0 ) exponent = start do i = 1 , npts x ( i ) = 1.0d1 ** exponent exponent = exponent + dx end do end function ! ------------------------------------------------------------------------------ pure function meshgrid ( x , y ) result ( xy ) !! Constructs two matrices (X and Y) from x and y data arrays. real ( real64 ), intent ( in ), dimension (:) :: x !! An M-element array of x data points. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array of y data points. real ( real64 ), allocatable , dimension (:,:,:) :: xy !! An N-by-M-by-2 array containing the x data matrix on the first !! page of the array, and the y data matrix on the second page. ! Local Variables integer ( int32 ) :: i , nx , ny ! Process nx = size ( x ) ny = size ( y ) allocate ( xy ( ny , nx , 2 )) do i = 1 , ny xy ( i ,:, 1 ) = x end do do i = 1 , nx xy (:, i , 2 ) = y end do end function end module","tags":"","loc":"sourcefile\\fplot_core_routines.f90.html"},{"title":"fplot_plot_object.f90 – FPLOT","text":"Source Code module fplot_plot_object use iso_fortran_env implicit none type , abstract :: plot_object !! The base type for all plot objects. contains procedure ( get_string_result ), deferred , public :: get_command_string end type interface function get_string_result ( this ) result ( x ) !! Returns a string from a plot_object. import plot_object class ( plot_object ), intent ( in ) :: this !! The plot_object object. character ( len = :), allocatable :: x !! The result string. end function end interface end module","tags":"","loc":"sourcefile\\fplot_plot_object.f90.html"},{"title":"fplot_plot_data_error_bars.f90 – FPLOT","text":"Source Code ! fplot_plot_data_error_bars.f90 module fplot_plot_data_error_bars use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: plot_data_error_bars type , extends ( plot_data_colored ) :: plot_data_error_bars !! Defines a 2D error-bar based data set. logical , private :: m_xBars = . false . !! Display x error bars? logical , private :: m_yBars = . false . !! Display y error bars? real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! A matrix containing the raw and error data. Column 1 is for the !! x coordinate, column 2 for the y coordinate, and the remaining !! columns are for the error data (x, then y if applicable). logical , private :: m_box = . false . !! Display an error box for the case where x and y errors are !! defined. logical , private :: m_range = . false . !! Plot error bars using a defined range vs. a +/- value. real ( real32 ), private :: m_lineWidth = 2.0 !! Line width contains procedure , public :: get_command_string => pde_get_cmd procedure , public :: get_data_string => pde_get_data_cmd generic , public :: define_x_error_data => pde_define_x_err , & pde_define_x_err_lim generic , public :: define_y_error_data => pde_define_y_err , & pde_define_y_err_lim generic , public :: define_xy_error_data => pde_define_xy_err , & pde_define_xy_err_lim procedure , public :: get_plot_x_error_bars => pde_get_plot_x_err procedure , public :: get_plot_y_error_bars => pde_get_plot_y_err procedure , public :: get_count => pde_get_count procedure , public :: get_use_error_box => pde_get_box procedure , public :: set_use_error_box => pde_set_box procedure , public :: get_use_range => pde_get_use_range procedure , public :: clear_data => pde_clear_data procedure :: pde_define_x_err procedure :: pde_define_y_err procedure :: pde_define_xy_err procedure :: pde_define_x_err_lim procedure :: pde_define_y_err_lim procedure :: pde_define_xy_err_lim procedure , public :: get_line_width => pde_get_line_width procedure , public :: set_line_width => pde_set_line_width end type contains ! ------------------------------------------------------------------------------ function pde_get_cmd ( this ) result ( cmd ) !! Gets the appropriate GNUPLOT command string for the object. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. character ( len = :), allocatable :: cmd !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Error Bars if ( this % get_plot_x_error_bars () . and . this % get_plot_y_error_bars ()) then if ( this % get_use_error_box ()) then call str % append ( \" w boxxyerr\" ) else call str % append ( \" w xyerr\" ) end if else if ( this % get_plot_x_error_bars () . and . . not . this % get_plot_y_error_bars ()) then call str % append ( \" w xerr\" ) else if (. not . this % get_plot_x_error_bars () . and . this % get_plot_y_error_bars ()) then call str % append ( \" w yerr\" ) end if ! Output cmd = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pde_get_data_cmd ( this ) result ( cmd ) !! Gets the appropriate GNUPLOT commands to plot the data itself. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. character ( len = :), allocatable :: cmd !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , n character :: delimiter , nl ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) n = this % get_count () ! Process if ( this % get_plot_x_error_bars () . and . this % get_plot_y_error_bars ()) then if ( this % get_use_range ()) then do i = 1 , n call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 4 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 5 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 6 ))) call str % append ( nl ) end do else do i = 1 , n call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 4 ))) call str % append ( nl ) end do end if else if ( this % get_use_range ()) then do i = 1 , n call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 4 ))) call str % append ( nl ) end do else do i = 1 , n call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( nl ) end do end if end if ! if (this%get_plot_x_error_bars() .and. this%get_plot_y_error_bars()) then ! do i = 1, n ! call str%append(to_string(this%m_data(i, 1))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 2))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 3))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 4))) ! call str%append(nl) ! end do ! else ! do i = 1, n ! call str%append(to_string(this%m_data(i, 1))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 2))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 3))) ! call str%append(nl) ! end do ! end if ! End cmd = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine pde_define_x_err ( this , x , y , xerr , err ) !! Defines the x error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: xerr !! An N-element array containing the x errors at each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_x_err\" , & \"y\" , n , size ( y )) return end if if ( size ( xerr ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_x_err\" , & \"xerr\" , n , size ( xerr )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 3 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_x_err\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = xerr ( i ) end do this % m_xBars = . true . this % m_range = . false . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_define_y_err ( this , x , y , yerr , err ) !! Defines the y error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: yerr !! An N-element array containing the y errors at each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_y_err\" , & \"y\" , n , size ( y )) return end if if ( size ( yerr ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_y_err\" , & \"yerr\" , n , size ( yerr )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 3 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_y_err\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = yerr ( i ) end do this % m_yBars = . true . this % m_range = . false . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_define_xy_err ( this , x , y , xerr , yerr , err ) !! Defines x and y error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: xerr !! An N-element array containing the x errors at each data point. real ( real64 ), intent ( in ), dimension (:) :: yerr !! An N-element array containing the y errors at each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_xy_err\" , & \"y\" , n , size ( y )) return end if if ( size ( xerr ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_xy_err\" , & \"xerr\" , n , size ( xerr )) return end if if ( size ( yerr ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_xy_err\" , & \"yerr\" , n , size ( yerr )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 4 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_xy_err\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = xerr ( i ) this % m_data ( i , 4 ) = yerr ( i ) end do this % m_xBars = . true . this % m_yBars = . true . this % m_range = . false . end subroutine ! ------------------------------------------------------------------------------ pure function pde_get_plot_x_err ( this ) result ( x ) !! Checks to see if the x error bar data has been defined, and as !! a result, if the x error data is to be plotted. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. logical :: x !! Returns true if the x error bars are to be plotted; else, false. x = this % m_xBars end function ! ------------------------------------------------------------------------------ pure function pde_get_plot_y_err ( this ) result ( x ) !! Checks to see if the y error bar data has been defined, and as !! a result, if the x error data is to be plotted. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. logical :: x !! Returns true if the y error bars are to be plotted; else, false. x = this % m_yBars end function ! ------------------------------------------------------------------------------ pure function pde_get_count ( this ) result ( x ) !! Gets the number of stored data points. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. integer ( int32 ) :: x !! The number of data points. if ( allocated ( this % m_data )) then x = size ( this % m_data , 1 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pde_get_box ( this ) result ( x ) !! Checks to see if the x and y error boxes should be utilized. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. logical :: x !! Returns true if the error boxes are to be plotted; else, !! false. Notice, the error boxes are only utilized if there is !! both x and y error data defined, regardless of the value of this !! property. x = this % m_box end function ! -------------------- subroutine pde_set_box ( this , x ) !! Deterimines if the x and y error boxes should be utilized. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. logical , intent ( in ) :: x !! Set to true if the error boxes are to be plotted; else, !! false. Notice, the error boxes are only utilized if there is !! both x and y error data defined, regardless of the value of this !! property. this % m_box = x end subroutine ! ------------------------------------------------------------------------------ pure function pde_get_use_range ( this ) result ( x ) !! Gets a value determining if a defined range is being used !! to define the error bar extremes. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. logical :: x !! True if a defined range is being used; else, false. x = this % m_range end function ! ------------------------------------------------------------------------------ subroutine pde_define_x_err_lim ( this , x , y , xmin , xmax , err ) !! Defines the x error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: xmin !! An N-element array containing the minimum x values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: xmax !! An N-element array containing the maximum x values at each data !! point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_x_err_lim\" , \"y\" , n , size ( y )) return end if if ( size ( xmin ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_x_err_lim\" , \"xmin\" , n , size ( xmin )) return end if if ( size ( xmax ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_x_err_lim\" , \"xmax\" , n , size ( xmax )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 4 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_x_err_lim\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = xmin ( i ) this % m_data ( i , 4 ) = xmax ( i ) end do this % m_xBars = . true . this % m_range = . true . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_define_y_err_lim ( this , x , y , ymin , ymax , err ) !! Defines the y error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: ymin !! An N-element array containing the minimum y values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: ymax !! An N-element array containing the maximum y values at each data !! point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_y_err_lim\" , \"y\" , n , size ( y )) return end if if ( size ( ymin ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_y_err_lim\" , \"ymin\" , n , size ( ymin )) return end if if ( size ( ymax ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_y_err_lim\" , \"ymax\" , n , size ( ymax )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 4 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_y_err_lim\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = ymin ( i ) this % m_data ( i , 4 ) = ymax ( i ) end do this % m_yBars = . true . this % m_range = . true . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_define_xy_err_lim ( this , x , y , xmin , xmax , ymin , & ymax , err ) !! Defines the x and y error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: xmin !! An N-element array containing the minimum x values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: xmax !! An N-element array containing the maximum x values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: ymin !! An N-element array containing the minimum y values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: ymax !! An N-element array containing the maximum x values at each data !! point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"y\" , n , size ( y )) return end if if ( size ( xmin ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"xmin\" , n , size ( xmin )) return end if if ( size ( xmax ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"xmax\" , n , size ( xmax )) return end if if ( size ( ymin ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"ymin\" , n , size ( ymin )) return end if if ( size ( ymax ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"ymax\" , n , size ( ymax )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 6 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_xy_err_lim\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = xmin ( i ) this % m_data ( i , 4 ) = xmax ( i ) this % m_data ( i , 5 ) = ymin ( i ) this % m_data ( i , 6 ) = ymax ( i ) end do this % m_xBars = . true . this % m_yBars = . true . this % m_range = . true . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ pure function pde_get_line_width ( this ) result ( x ) !! Gets the line width. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. real ( real32 ) :: x !! The line width. x = this % m_lineWidth end function ! -------------------- subroutine pde_set_line_width ( this , x ) !! Sets the line width. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_lineWidth = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_error_bars.f90.html"},{"title":"fplot_colormap.f90 – FPLOT","text":"Source Code ! fplot_colormap.f90 module fplot_colormap use iso_fortran_env use fplot_plot_object use strings use fplot_errors use fplot_colors use forcolormap , cmap => Colormap ! avoid conflict with the internally defined colormap type implicit none private public :: cmap public :: colormap public :: cm_get_string_result public :: rainbow_colormap public :: hot_colormap public :: cool_colormap public :: parula_colormap public :: grey_colormap public :: earth_colormap public :: custom_colormap type , abstract , extends ( plot_object ) :: colormap !! A colormap object for a surface plot. character ( len = :), private , allocatable :: m_label !! The label to associate with the colormap. logical , private :: m_horizontal = . false . !! The colormap should be drawn horizontally. logical , private :: m_drawBorder = . true . !! Draw the colormap border. logical , private :: m_showTics = . true . !! Show the tic marks. contains procedure , public :: get_command_string => cm_get_cmd procedure ( cm_get_string_result ), deferred , public :: get_color_string procedure , public :: get_label => cm_get_label procedure , public :: set_label => cm_set_label procedure , public :: get_horizontal => cm_get_horizontal procedure , public :: set_horizontal => cm_set_horizontal procedure , public :: get_draw_border => cm_get_draw_border procedure , public :: set_draw_border => cm_set_draw_border procedure , public :: get_show_tics => cm_get_show_tics procedure , public :: set_show_tics => cm_set_show_tics end type interface function cm_get_string_result ( this ) result ( x ) !! Retrieves a string result from a colormap object. import colormap class ( colormap ), intent ( in ) :: this !! The colormap object. character ( len = :), allocatable :: x !! The string. end function end interface ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: rainbow_colormap !! Defines a rainbow colormap. contains procedure , public :: get_color_string => rcm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: hot_colormap !! Defines a colormap consisting of \"hot\" colors. contains procedure , public :: get_color_string => hcm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: cool_colormap !! Defines a colormap consisting of \"cool\" colors. contains procedure , public :: get_color_string => ccm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: parula_colormap !! Defines a colormap equivalent to the MATLAB parula colormap. contains procedure , public :: get_color_string => pcm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: grey_colormap !! Defines a grey-scaled colormap. contains procedure , public :: get_color_string => gcm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: earth_colormap !! Defines an earthy-colored colormap. contains procedure , public :: get_color_string => ecm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: custom_colormap !! Defines a custom colormap that utilizes the FORCOLORMAP library !! to provide the map. class ( cmap ), private , pointer :: m_map => null () !! The FORCOLORMAP object. contains final :: custom_final procedure , public :: get_color_string => custom_get_clr procedure , public :: set_colormap => custom_set procedure , public :: get_colormap => custom_get end type ! ------------------------------------------------------------------------------ contains ! ****************************************************************************** ! COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function cm_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this colormap object. class ( colormap ), intent ( in ) :: this !! The colormap object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str ! Initialization call str % initialize () ! Palette Definition call str % append ( \"set palette defined (\" ) call str % append ( this % get_color_string ()) call str % append ( \")\" ) if ( len ( this % get_label ()) > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( 'set cblabel \"' ) call str % append ( this % get_label ()) call str % append ( '\"' ) end if ! Orientation if ( this % get_horizontal ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set colorbox horizontal\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set size 0.8,0.8; set origin 0.1,0.2\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set colorbox user origin 0.1,0.175 size 0.8,0.055\" ) if ( len ( this % get_label ()) > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set cblabel offset 0,0.8\" ) end if end if ! Border & Tic Marks if (. not . this % get_draw_border ()) then ! Eliminate the border call str % append ( new_line ( 'a' )) call str % append ( \"set colorbox noborder\" ) ! Hide the tic marks call str % append ( new_line ( 'a' )) call str % append ( \"set cbtic scale 0\" ) else ! Respect the tic mark visibility setting if the border is shown if (. not . this % get_show_tics ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set cbtic scale 0\" ) end if end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function cm_get_label ( this ) result ( rst ) !! Gets the label to associate with the colorbar. class ( colormap ), intent ( in ) :: this !! The colormap object. character ( len = :), allocatable :: rst !! The label. if ( allocated ( this % m_label )) then rst = this % m_label else rst = \"\" end if end function ! -------------------- subroutine cm_set_label ( this , x ) !! Sets the label to associate with the colorbar. class ( colormap ), intent ( inout ) :: this !! The colormap object. character ( len = * ), intent ( in ) :: x !! The label. this % m_label = x end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_horizontal ( this ) result ( rst ) !! Gets a logical value determining if the colormap should be !! drawn horizontally and below the plot. class ( colormap ), intent ( in ) :: this !! The colormap object. logical :: rst !! Returns true if the colormap should be drawn horizontally; !! else, false. rst = this % m_horizontal end function ! -------------------- subroutine cm_set_horizontal ( this , x ) !! Sets a logical value determining if the colormap should be !! drawn horizontally and below the plot. class ( colormap ), intent ( inout ) :: this !! The colormap object. logical , intent ( in ) :: x !! Set to true if the colormap should be drawn horizontally; !! else, false. this % m_horizontal = x end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_draw_border ( this ) result ( rst ) !! Gets a logical value determining if the border should be drawn. class ( colormap ), intent ( in ) :: this !! The colormap object. logical :: rst !! Returns true if the border should be drawn; else, false. rst = this % m_drawBorder end function ! -------------------- subroutine cm_set_draw_border ( this , x ) !! Sets a logical value determining if the border should be drawn. class ( colormap ), intent ( inout ) :: this !! The colormap object. logical , intent ( in ) :: x !! Set to true if the border should be drawn; else, false. this % m_drawBorder = x end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_show_tics ( this ) result ( rst ) !! Gets a logical value determining if the tic marks should be drawn. class ( colormap ), intent ( in ) :: this !! The colormap object. logical :: rst !! Returns true if the tic marks should be drawn; else, false. rst = this % m_showTics end function ! -------------------- subroutine cm_set_show_tics ( this , x ) !! Sets a logical value determining if the tic marks should be drawn. class ( colormap ), intent ( inout ) :: this !! The colormap object. logical , intent ( in ) :: x !! Set to true if the tic marks should be drawn; else, false. this % m_showTics = x end subroutine ! ------------------------------------------------------------------------------ ! TO DO: ! - Set user-defined tic labels & limits (ref: http://gnuplot.sourceforge.net/demo_5.4/cerf.html) ! ****************************************************************************** ! RAINBOW_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function rcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( rainbow_colormap ), intent ( in ) :: this !! The rainbow_colormap object. character ( len = :), allocatable :: x !! The command string. x = '0 \"dark-blue\", 1 \"blue\", 2 \"cyan\", 3 \"green\", 4 \"yellow\", ' // & '5 \"orange\", 6 \"red\", 7 \"dark-red\"' end function ! ****************************************************************************** ! HOT_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function hcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( hot_colormap ), intent ( in ) :: this !! The hot_colormap object. character ( len = :), allocatable :: x !! The command string. x = '0 \"black\", 1 \"red\", 2 \"orange\", 3 \"yellow\", 4 \"white\"' end function ! ****************************************************************************** ! COOL_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function ccm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( cool_colormap ), intent ( in ) :: this !! The cool_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#08589E',\" ) call str % append ( \"1 '#2B8CBE',\" ) call str % append ( \"2 '#4EB3D3',\" ) call str % append ( \"3 '#7BCCC4',\" ) call str % append ( \"4 '#A8DDB5',\" ) call str % append ( \"5 '#CCEBC5',\" ) call str % append ( \"6 '#E0F3DB',\" ) call str % append ( \"7 '#F7FCF0'\" ) x = char ( str % to_string ()) ! x = '0 \"blue\", 1 \"turquoise\", 2 \"light-green\"' end function ! ****************************************************************************** ! PARULA_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function pcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( parula_colormap ), intent ( in ) :: this !! The parula_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#352a87',\" ) call str % append ( \"1 '#0363e1',\" ) call str % append ( \"2 '#1485d4',\" ) call str % append ( \"3 '#06a7c6',\" ) call str % append ( \"4 '#38b99e',\" ) call str % append ( \"5 '#92bf73',\" ) call str % append ( \"6 '#d9ba56',\" ) call str % append ( \"7 '#fcce2e',\" ) call str % append ( \"8 '#f9fb0e'\" ) x = char ( str % to_string ()) end function ! ****************************************************************************** ! GREY_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function gcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( grey_colormap ), intent ( in ) :: this !! The grey_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#FFFFFF',\" ) call str % append ( \"1 '#F0F0F0',\" ) call str % append ( \"2 '#D9D9D9',\" ) call str % append ( \"3 '#BDBDBD',\" ) call str % append ( \"4 '#969696',\" ) call str % append ( \"5 '#737373',\" ) call str % append ( \"6 '#525252',\" ) call str % append ( \"7 '#252525'\" ) x = char ( str % to_string ()) end function ! ****************************************************************************** ! EARTH_COLORMAP ! ------------------------------------------------------------------------------ function ecm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( earth_colormap ), intent ( in ) :: this !! The earth_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#8C510A',\" ) call str % append ( \"1 '#BF812D',\" ) call str % append ( \"2 '#DFC27D',\" ) call str % append ( \"3 '#F6E8C3',\" ) call str % append ( \"4 '#D9F0D3',\" ) call str % append ( \"5 '#A6DBA0',\" ) call str % append ( \"6 '#5AAE61',\" ) call str % append ( \"7 '#1B7837'\" ) x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ ! Additional Color Maps: ! https://github.com/Gnuplotting/gnuplot-palettes ! ****************************************************************************** ! ADDED: Jan. 08, 2024 - JAC ! CUSTOM_COLORMAP ! ------------------------------------------------------------------------------ function custom_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( custom_colormap ), intent ( in ) :: this !! The custom_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str integer ( int32 ) :: i , n , r , g , b , c character ( len = 6 ) :: ctxt if (. not . associated ( this % m_map )) then allocate ( character ( len = 0 ) :: x ) return end if n = this % m_map % get_levels () do i = 0 , n - 1 ! Get the RGB triple call this % m_map % get_RGB ( i , r , g , b ) c = ishft ( r , 16 ) + ishft ( g , 8 ) + b write ( ctxt , '(Z6.6)' ) c ! Append the color information call str % append ( to_string ( i )) call str % append ( \" '#\" ) call str % append ( ctxt ) call str % append ( \"'\" ) if ( i /= n - 1 ) then call str % append ( \",\" ) end if end do x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine custom_set ( this , map , err ) !! Sets the FORCOLORMAP colormap object. class ( custom_colormap ), intent ( inout ) :: this !! The custom_colormap object. class ( cmap ), intent ( in ) :: map !! The FORCOLORMAP colormap object. The custom_colormap object !! stores a copy of this object; therefore, any changes made to !! x after calls to this routine will not impact the behavior of !! the custom_colormap object. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Process if ( associated ( this % m_map )) deallocate ( this % m_map ) allocate ( this % m_map , source = map , stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"custom_set\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function custom_get ( this ) result ( rst ) !! Gets a pointer to the FORCOLORMAP colormap object. class ( custom_colormap ), intent ( in ) :: this !! The custom_colormap object. class ( cmap ), pointer :: rst !! A pointer to the FORCOLORMAP colormap object. rst => this % m_map end function ! ------------------------------------------------------------------------------ subroutine custom_final ( this ) type ( custom_colormap ), intent ( inout ) :: this !! The custom_colormap object. if ( associated ( this % m_map )) then deallocate ( this % m_map ) nullify ( this % m_map ) end if end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_colormap.f90.html"},{"title":"fplot_svg_terminal.f90 – FPLOT","text":"Source Code module fplot_svg_terminal use iso_fortran_env use fplot_terminal use fplot_constants use strings implicit none private public :: svg_terminal type , extends ( file_terminal ) :: svg_terminal !! An SVG terminal. character ( len = 47 ), private :: m_id = 'svg enhanced background \"white\" dynamic mousing' !! The terminal ID string contains procedure , public :: get_id_string => svg_get_term_string end type contains ! ------------------------------------------------------------------------------ function svg_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( svg_terminal ), intent ( in ) :: this !! The svg_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_svg_terminal.f90.html"},{"title":"fplot_delaunay_tri_surface.f90 – FPLOT","text":"Source Code ! fplot_delaunay_tri_surface.f90 module fplot_delaunay_tri_surface use iso_fortran_env use ieee_arithmetic use fplot_triangulations_delaunay_2d use fplot_errors implicit none private public :: delaunay_tri_surface type , extends ( delaunay_tri_2d ) :: delaunay_tri_surface !! Provides a type describing a triangulated surface. real ( real64 ), private , allocatable , dimension (:) :: m_z !! An array of the z-coordinates of each point. contains procedure , public :: define_function_values => dts_define_fcn procedure , public :: get_points_z => dts_get_z generic , public :: evaluate => dts_interp_1 , dts_interp_2 procedure , private :: dts_interp_1 procedure , private :: dts_interp_2 end type contains ! ------------------------------------------------------------------------------ subroutine dts_define_fcn ( this , z , err ) !! Defines the function values that correspond to the x and y !! data points. class ( delaunay_tri_surface ), intent ( inout ) :: this !! The delaunay_tri_surface object. real ( real64 ), intent ( in ), dimension (:) :: z !! An N-element array containing the function values for !! each x and y coordinate. Notice, the x and y coordinates must !! already be defined prior to calling this routine. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = this % get_point_count () ! Input Check if ( n == 0 ) then call errmgr % report_error ( \"dts_define_fcn\" , & \"No x-y coordinates have been defined.\" , & PLOT_INVALID_OPERATION_ERROR ) return end if if ( size ( z ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"dts_define_fcn\" , & \"z\" , n , size ( z )) return end if ! Store the data if ( allocated ( this % m_z )) deallocate ( this % m_z ) allocate ( this % m_z ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"dts_define_fcn\" , flag ) return end if this % m_z = z end subroutine ! ------------------------------------------------------------------------------ pure function dts_get_z ( this ) result ( rst ) !! Gets the z-coordinates of each point. class ( delaunay_tri_surface ), intent ( in ) :: this !! The delaunay_tri_surface object. real ( real64 ), allocatable , dimension (:) :: rst !! An array of the z-coordinates of each point. if ( allocated ( this % m_z )) then rst = this % m_z else allocate ( rst ( 0 )) end if end function ! ------------------------------------------------------------------------------ ! Interpolation Routine - Barycentric Coordinate Approach ! https://www.iue.tuwien.ac.at/phd/nentchev/node25.html ! https://academic.csuohio.edu/duffy_s/CVE_512_11.pdf pure function dts_interp_1 ( this , x , y ) result ( z ) !! Evaluates the function at the requested point by means of !! linear interpolation. class ( delaunay_tri_surface ), intent ( in ) :: this !! The delaunay_tri_surface object. real ( real64 ), intent ( in ) :: x !! The x-coordinate at which to evaluate the function. real ( real64 ), intent ( in ) :: y !! The y-coordinate at which to evaluate the function. real ( real64 ) :: z !! The function value. If the point (x, y) does not lie within the !! range of defined values, then a value of NaN is returned. ! Local Variables integer ( int32 ) :: i , n1 , n2 , n3 real ( real64 ) :: x1 , x2 , x3 , y1 , y2 , y3 , z1 , z2 , z3 integer ( int32 ), allocatable , dimension (:,:) :: indices real ( real64 ), allocatable , dimension (:) :: xc , yc , zc ! Initialization z = ieee_value ( z , ieee_quiet_nan ) indices = this % get_indices () xc = this % get_points_x () yc = this % get_points_y () zc = this % get_points_z () ! Quick Return if ( this % get_triangle_count () == 0 . or . & this % get_point_count () == 0 . or . & size ( zc ) == 0 ) return ! Locate the triangle to which the point (x, y) belongs. If no triangle ! is found, simply return NaN i = this % find_triangle ( x , y ) if ( i == - 1 ) return ! Get the triangle vertices n1 = indices ( i , 1 ) n2 = indices ( i , 2 ) n3 = indices ( i , 3 ) x1 = xc ( n1 ) y1 = yc ( n1 ) z1 = zc ( n1 ) x2 = xc ( n2 ) y2 = yc ( n2 ) z2 = zc ( n2 ) x3 = xc ( n3 ) y3 = yc ( n3 ) z3 = zc ( n3 ) ! Perform the interpolation z = linear_interp ( x1 , y1 , z1 , x2 , y2 , z2 , x3 , y3 , z3 , x , y ) end function ! -------------------- pure function dts_interp_2 ( this , x , y ) result ( z ) !! Evaluates the function at the requested point by means of !! linear interpolation. class ( delaunay_tri_surface ), intent ( in ) :: this !! The delaunay_tri_surface object. real ( real64 ), intent ( in ), dimension (:) :: x !! The x data coordinates. real ( real64 ), intent ( in ), dimension (:) :: y !! The x data coordinates. real ( real64 ), allocatable , dimension (:) :: z !! The interpolated z coordinate points. If the point (x, y) does !! not lie within the range of defined values, then a value of NaN !! is returned. ! Local Variables integer ( int32 ) :: i , j , n1 , n2 , n3 , nxy real ( real64 ) :: x1 , x2 , x3 , y1 , y2 , y3 , z1 , z2 , z3 , nan integer ( int32 ), allocatable , dimension (:,:) :: indices real ( real64 ), allocatable , dimension (:) :: xc , yc , zc ! Initialization nxy = min ( size ( x ), size ( y )) nan = ieee_value ( nan , ieee_quiet_nan ) allocate ( z ( nxy )) z = nan indices = this % get_indices () xc = this % get_points_x () yc = this % get_points_y () zc = this % get_points_z () ! Quick Return if ( this % get_triangle_count () == 0 . or . & this % get_point_count () == 0 . or . & size ( zc ) == 0 ) return ! Locate the triangle to which the point (x, y) belongs. If no triangle ! is found, simply return NaN do i = 1 , nxy ! Find the index of the triangle j = this % find_triangle ( x ( i ), y ( i )) if ( j == - 1 ) cycle ! Skip if we couldn't find a triangle ! Get the vertices n1 = indices ( j , 1 ) n2 = indices ( j , 2 ) n3 = indices ( j , 3 ) x1 = xc ( n1 ) y1 = yc ( n1 ) z1 = zc ( n1 ) x2 = xc ( n2 ) y2 = yc ( n2 ) z2 = zc ( n2 ) x3 = xc ( n3 ) y3 = yc ( n3 ) z3 = zc ( n3 ) ! Perform the interpolation z ( i ) = linear_interp ( x1 , y1 , z1 , x2 , y2 , z2 , x3 , y3 , z3 , x ( i ), y ( i )) end do end function ! ------------------------------------------------------------------------------ ! Utilizes linear shape functions to interpolate on a triangle given its ! vertex locations, and the desired interpolation location. Notice, the ! interpolation location is expected to lie within the triangle. This is ! not checked. pure elemental function linear_interp ( x1 , y1 , z1 , x2 , y2 , z2 , x3 , & y3 , z3 , x , y ) result ( z ) real ( real64 ), intent ( in ) :: x1 , y1 , z1 , x2 , y2 , z2 , x3 , y3 , z3 , x , y real ( real64 ) :: a1 , a2 , a3 , j , z j = ( x2 - x1 ) * y3 + ( x1 - x3 ) * y2 + ( x3 - x2 ) * y1 a1 = ( x2 * y3 - x3 * y2 + ( y2 - y3 ) * x + ( x3 - x2 ) * y ) a2 = ( x3 * y1 - x1 * y3 + ( y3 - y1 ) * x + ( x1 - x3 ) * y ) a3 = ( x1 * y2 - x2 * y1 + ( y1 - y2 ) * x + ( x2 - x1 ) * y ) z = ( a1 * z1 + a2 * z2 + a3 * z3 ) / j end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_delaunay_tri_surface.f90.html"},{"title":"fplot_arrow.f90 – FPLOT","text":"Source Code module fplot_arrow use iso_fortran_env use fplot_plot_object use fplot_colors use fplot_constants use strings implicit none private public :: plot_arrow type , extends ( plot_object ) :: plot_arrow !! Defines an arrow that can be drawn on a plot. logical , private :: m_visible = . true . !! Visible? real ( real32 ), private , dimension ( 3 ) :: m_tail = [ 0.0 , 0.0 , 0.0 ] !! The x, y, z coordinates of the tail. real ( real32 ), private , dimension ( 3 ) :: m_head = [ 0.0 , 0.0 , 0.0 ] !! The x, y, z coordinates of the head. type ( color ), private :: m_color = CLR_BLACK !! The arrow color. integer ( int32 ), private :: m_linestyle = LINE_SOLID !! The line style. real ( real32 ), private :: m_linewidth = 1.5 !! The line width. integer ( int32 ), private :: m_head_type = ARROW_HEAD !! The head configuration. integer ( int32 ), private :: m_filling = ARROW_FILLED !! Arrow filling. logical , private :: m_front = . true . !! Move to front? real ( real32 ), private :: m_size = 0.375 !! Arrow head size. real ( real32 ), private :: m_angle = 1 0.0 !! Arrow head angle. real ( real32 ), private :: m_backangle = 9 0.0 !! Arrow head back angle. logical , private :: m_use_default_size = . true . !! Use default head size. contains procedure , public :: get_is_visible => par_get_is_visible procedure , public :: set_is_visible => par_set_is_visible procedure , public :: get_tail_location => par_get_tail generic , public :: set_tail_location => par_set_tail_1 , & par_set_tail_2 , par_set_tail_3 procedure , private :: par_set_tail_1 procedure , private :: par_set_tail_2 procedure , private :: par_set_tail_3 procedure , public :: get_head_location => par_get_head generic , public :: set_head_location => par_set_head_1 , & par_set_head_2 , par_set_head_3 procedure , private :: par_set_head_1 procedure , private :: par_set_head_2 procedure , private :: par_set_head_3 procedure , public :: get_color => par_get_color procedure , public :: set_color => par_set_color procedure , public :: get_line_style => par_get_line_style procedure , public :: set_line_style => par_set_line_style procedure , public :: get_line_width => par_get_line_width procedure , public :: set_line_width => par_set_line_width procedure , public :: get_head_type => par_get_head_type procedure , public :: set_head_type => par_set_head_type procedure , public :: get_head_fill => par_get_fill procedure , public :: set_head_fill => par_set_fill procedure , public :: get_move_to_front => par_get_move_to_front procedure , public :: set_move_to_front => par_set_move_to_front procedure , public :: get_head_size => par_get_head_size procedure , public :: set_head_size => par_set_head_size procedure , public :: get_head_angle => par_get_head_angle procedure , public :: set_head_angle => par_set_head_angle procedure , public :: get_head_back_angle => par_get_head_back_angle procedure , public :: set_head_back_angle => par_set_head_back_angle procedure , public :: get_use_default_size => par_get_use_default_size procedure , public :: set_use_default_size => par_set_use_default_size procedure , public :: get_command_string => par_get_cmd end type contains ! ------------------------------------------------------------------------------ pure function par_get_is_visible ( this ) result ( rst ) !! Gets a value determining if the arrow is visible. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. logical :: rst !! True if the arrow is visible; else, false. rst = this % m_visible end function ! -------------------- subroutine par_set_is_visible ( this , x ) !! Sets a value determining if the arrow is visible. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. logical , intent ( in ) :: x !! True if the arrow is visible; else, false. this % m_visible = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_tail ( this ) result ( rst ) !! Gets the coordinates of the arrow's tail. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ), dimension ( 3 ) :: rst !! A 3-element array containing the x, y, and z coordinates of the !! arrow's tail. rst = this % m_tail end function ! -------------------- subroutine par_set_tail_1 ( this , x ) !! Sets the coordinates of the arrow's tail. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x ( 3 ) !! A 3-element array containing the x, y, and z coordinates of the !! arrow's tail. this % m_tail = x end subroutine ! -------------------- subroutine par_set_tail_2 ( this , x , y ) !! Sets the coordinates of the arrow's tail. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The x-coordinate of the arrow's tail. real ( real32 ), intent ( in ) :: y !! !! The y-coordinate of the arrow's tail. this % m_tail = [ x , y , 0.0 ] end subroutine ! -------------------- subroutine par_set_tail_3 ( this , x , y , z ) !! Sets the coordinates of the arrow's tail. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The x-coordinate of the arrow's tail. real ( real32 ), intent ( in ) :: y !! The y-coordinate of the arrow's tail. real ( real32 ), intent ( in ) :: z !! The z-coordinate of the arrow's tail. this % m_tail = [ x , y , z ] end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head ( this ) result ( rst ) !! Gets the coordinates of the arrow's head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ), dimension ( 3 ) :: rst !! A 3-element array containing the x, y, and z coordinates of the !! arrow's head. rst = this % m_head end function ! -------------------- subroutine par_set_head_1 ( this , x ) !! Sets the location of the arrow's head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x ( 3 ) !! A 3-element array containing the x, y, and z coordinates of the !! arrow's head. this % m_head = x end subroutine ! -------------------- subroutine par_set_head_2 ( this , x , y ) !! Sets the location of the arrow's head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The x-coordinate of the arrow's head. real ( real32 ), intent ( in ) :: y !! The y-coordinate of the arrow's head. this % m_head = [ x , y , 0.0 ] end subroutine ! -------------------- subroutine par_set_head_3 ( this , x , y , z ) !! Sets the location of the arrow's head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The x-coordinate of the arrow's head. real ( real32 ), intent ( in ) :: y !! The y-coordinate of the arrow's head. real ( real32 ), intent ( in ) :: z !! The z-coordinate of the arrow's head. this % m_head = [ x , y , z ] end subroutine ! ------------------------------------------------------------------------------ pure function par_get_color ( this ) result ( rst ) !! Gets the color of the arrow. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. type ( color ) :: rst !! The color. rst = this % m_color end function ! -------------------- subroutine par_set_color ( this , x ) !! Sets the color of the arrow. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. type ( color ), intent ( in ) :: x !! The color. this % m_color = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_line_style ( this ) result ( rst ) !! Gets the line style used to draw the arrow. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. integer ( int32 ) :: rst !! The line style. rst = this % m_linestyle end function ! -------------------- subroutine par_set_line_style ( this , x ) !! Sets the line style used to draw the arrow. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. integer ( int32 ), intent ( in ) :: x !! The line style. The value must be one of the following. !! !! - LINE_SOLID !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! If the value is not one of the above, the command is ignored. if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_linestyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function par_get_line_width ( this ) result ( rst ) !! Gets the width of the lines used to draw the arrow. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ) :: rst !! The width of the line. rst = this % m_linewidth end function ! -------------------- subroutine par_set_line_width ( this , x ) !! Sets the width of the lines used to draw the arrow. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The width of the line. this % m_linewidth = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head_type ( this ) result ( rst ) !! Gets the type of arrow head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. integer ( int32 ) :: rst !! The arrow head type. rst = this % m_head_type end function ! -------------------- subroutine par_set_head_type ( this , x ) !! Sets the type of arrow head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. integer ( int32 ), intent ( in ) :: x !! The arrow head type. It must be one of the following constants. !! !! - ARROW_HEAD !! !! - ARROW_BACKHEAD !! !! - ARROW_HEADS !! !! - ARROW_NO_HEAD !! !! If the value is not one of the above, the command is ignored. if ( x == ARROW_BACKHEAD . or . & x == ARROW_HEAD . or . & x == ARROW_HEADS . or . & x == ARROW_NO_HEAD & ) then this % m_head_type = x end if end subroutine ! ------------------------------------------------------------------------------ pure function par_get_fill ( this ) result ( rst ) !! Gets a flag denoting the head fill type. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. integer ( int32 ) :: rst !! The flag denoting head fill. rst = this % m_filling end function ! -------------------- subroutine par_set_fill ( this , x ) !! Sets a flag denoting the head fill type. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. integer ( int32 ), intent ( in ) :: x !! The flag denoting head fill. It must be one of the following !! constants. !! !! - ARROW_FILLED !! !! - ARROW_EMPTY !! !! - ARROW_NO_BORDER !! !! - ARROW_NO_FILL !! !! If the value is not one of the above, the command is ignored. if ( x == ARROW_FILLED . or . & x == ARROW_EMPTY . or . & x == ARROW_NO_BORDER . or . & x == ARROW_NO_FILL & ) then this % m_filling = x end if end subroutine ! ------------------------------------------------------------------------------ pure function par_get_move_to_front ( this ) result ( rst ) !! Gets a value determining if the arrow should be moved to the front. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. logical :: rst !! True if the arrow should be moved to the front; else, false. rst = this % m_front end function ! -------------------- subroutine par_set_move_to_front ( this , x ) !! Sets a value determining if the arrow should be moved to the front. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. logical , intent ( in ) :: x !! True if the arrow should be moved to the front; else, false. this % m_front = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head_size ( this ) result ( rst ) !! Gets the size of the arrow head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ) :: rst !! The head size. rst = this % m_size end function ! -------------------- subroutine par_set_head_size ( this , x ) !! Sets the size of the arrow head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The head size. this % m_size = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head_angle ( this ) result ( rst ) !! Gets the angle of the arrow head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ) :: rst !! The angle, in degrees. rst = this % m_angle end function ! -------------------- subroutine par_set_head_angle ( this , x ) !! Sets the angle of the arrow head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The angle, in degrees. this % m_angle = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head_back_angle ( this ) result ( rst ) !! Gets the angle of the back of the arrow head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ) :: rst !! The angle, in degrees. rst = this % m_backangle end function ! -------------------- subroutine par_set_head_back_angle ( this , x ) !! Sets the angle of the back of the arrow head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The angle, in degrees. this % m_backangle = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_use_default_size ( this ) result ( rst ) !! Gets a value determining if arrow head sizing defaults should be used. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. logical :: rst !! True if the defaults should be used; else, false. rst = this % m_use_default_size end function ! -------------------- subroutine par_set_use_default_size ( this , x ) !! Sets a value determining if arrow head sizing defaults should be used. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. logical , intent ( in ) :: x !! True if the defaults should be used; else, false. this % m_use_default_size = x end subroutine ! ------------------------------------------------------------------------------ function par_get_cmd ( this ) result ( rst ) !! Returns the appropriate GNUPLOT command string to establish appropriate !! parameters. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. character ( len = :), allocatable :: rst !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str type ( color ) :: clr real ( real32 ) :: tail ( 3 ), head ( 3 ) ! Quick Return if (. not . this % get_is_visible ()) then rst = \"\" return end if ! Command call str % append ( \"set arrow\" ) ! Position Info tail = this % get_tail_location () head = this % get_head_location () call str % append ( \" from \" ) call str % append ( to_string ( tail ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( tail ( 2 ))) call str % append ( \",\" ) call str % append ( to_string ( tail ( 3 ))) call str % append ( \" to \" ) call str % append ( to_string ( head ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( head ( 2 ))) call str % append ( \",\" ) call str % append ( to_string ( head ( 3 ))) ! Head Type select case ( this % get_head_type ()) case ( ARROW_BACKHEAD ) call str % append ( \" backhead\" ) case ( ARROW_HEAD ) call str % append ( \" head\" ) case ( ARROW_HEADS ) call str % append ( \" heads\" ) case ( ARROW_NO_HEAD ) call str % append ( \" nohead\" ) end select if ( this % get_head_type () /= ARROW_NO_HEAD ) then ! Fill Info select case ( this % get_head_fill ()) case ( ARROW_FILLED ) call str % append ( \" filled\" ) case ( ARROW_EMPTY ) call str % append ( \" empty\" ) case ( ARROW_NO_BORDER ) call str % append ( \" noborder\" ) case ( ARROW_NO_FILL ) call str % append ( \" nofilled\" ) end select ! Size if (. not . this % get_use_default_size ()) then call str % append ( \" size \" ) call str % append ( to_string ( this % get_head_size ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_head_angle ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_head_back_angle ())) end if end if ! Front/Back if ( this % get_move_to_front ()) then call str % append ( \" front\" ) else call str % append ( \" back\" ) end if ! Line Color clr = this % get_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Line Style call str % append ( \" lt \" ) call str % append ( to_string ( this % get_line_style ())) if ( this % get_line_style () /= LINE_SOLID ) then call str % append ( \" dashtype \" ) call str % append ( to_string ( this % get_line_style ())) end if ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ ! pure subroutine par_assign(x, y) ! type(plot_arrow), intent(out) :: x ! class(plot_arrow), intent(in) :: y ! x%m_visible = y%m_visible ! x%m_tail = y%m_tail ! x%m_head = y%m_head ! x%m_color = y%m_color ! x%m_linestyle = y%m_linestyle ! x%m_linewidth = y%m_linewidth ! x%m_head_type = y%m_head_type ! x%m_filling = y%m_filling ! x%m_front = y%m_front ! x%m_size = y%m_size ! x%m_angle = y%m_angle ! x%m_backangle = y%m_backangle ! x%m_use_default_size = y%m_use_default_size ! end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_arrow.f90.html"},{"title":"fplot_stats_plots.f90 – FPLOT","text":"Source Code module fplot_stats_plots use iso_fortran_env use fplot_plot_object use fplot_plot use fplot_plot_data_2d use fplot_plot_data_histogram use fplot_plot_2d use fplot_multiplot use fplot_terminal use fplot_constants use fplot_errors use fplot_colors use fplot_plot_axis use collections use strings implicit none private public :: correlation_plot type , extends ( plot_object ) :: correlation_plot !! Defines a multiplot arrangement designed to illustrate correlation !! between data sets. type ( multiplot ), private :: m_plt !! The multiplot object. contains procedure , public :: get_command_string => cp_get_command procedure , public :: initialize => cp_init procedure , public :: get_row_count => cp_get_rows procedure , public :: get_column_count => cp_get_cols procedure , public :: get_plot_count => cp_get_count procedure , public :: draw => cp_draw procedure , public :: save_file => cp_save procedure , public :: get => cp_get procedure , public :: get_terminal => cp_get_term procedure , public :: get_font_name => cp_get_font procedure , public :: set_font_name => cp_set_font procedure , public :: get_font_size => cp_get_font_size procedure , public :: set_font_size => cp_set_font_size end type contains ! ------------------------------------------------------------------------------ function cp_get_command ( this ) result ( x ) !! Gets the GNUPLOT commands for this object. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. character ( len = :), allocatable :: x !! The command string. end function ! ------------------------------------------------------------------------------ subroutine cp_init ( this , x , labels , term , width , height , err ) !! Initializes the correlation_plot object. class ( correlation_plot ), intent ( inout ) :: this !! The correlation_plot object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data to plot with each column representing a data set. type ( string ), intent ( in ), optional , dimension (:) :: labels !! An optional array containing a label to associate with each !! data set in x. If supplied, this array must have the same length !! as x has columns. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. The !! default terminal is a WXT terminal. The acceptable inputs are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF integer ( int32 ), intent ( in ), optional :: width !! Optionally, the width of the plot window. integer ( int32 ), intent ( in ), optional :: height !! Optionally, the height of the plot window. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , j , k , t , n , flag real ( real64 ) :: m , b real ( real64 ), allocatable , dimension (:) :: mdl class ( errors ), pointer :: errmgr type ( errors ), target :: deferr type ( plot_2d ), allocatable , dimension (:) :: plts type ( plot_data_2d ) :: pdata , mdata type ( plot_data_histogram ) :: hdata class ( plot_axis ), pointer :: xAxis , yAxis ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x , 2 ) call this % m_plt % initialize ( n , n , term = term , width = width , & height = height , err = errmgr ) allocate ( plts ( n * n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"cp_init\" , flag ) return end if call this % m_plt % set_font_size ( 11 ) ! use a small font size ! Input Checking if ( present ( labels )) then if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"cp_init\" , & \"labels\" , n , size ( labels )) return end if end if ! Create plots k = 0 call pdata % set_draw_line (. false .) call pdata % set_draw_markers (. true .) call pdata % set_marker_style ( MARKER_FILLED_CIRCLE ) call pdata % set_marker_scaling ( 0.5 ) call mdata % set_line_width ( 2.0 ) call mdata % set_line_color ( CLR_BLACK ) do j = 1 , n do i = 1 , n k = k + 1 call plts ( k )% initialize ( err = errmgr ) if ( i == j ) then ! Plot a histogram of the data call hdata % define_data ( x (:, i ), err = errmgr ) call plts ( k )% push ( hdata ) else ! Plot a scatter plot call pdata % define_data ( x (:, j ), x (:, i ), err = errmgr ) call plts ( k )% push ( pdata ) ! Fit a line to the data call compute_linear_fit ( x (:, j ), x (:, i ), m , b ) mdl = m * x (:, j ) + b ! Plot the fitted line call mdata % define_data ( x (:, j ), mdl , err = err ) call plts ( k )% push ( mdata ) end if ! Deal with axis labels if ( j == 1 ) then ! Display y axis labels for these plots yAxis => plts ( k )% get_y_axis () if ( present ( labels )) then call yAxis % set_title ( char ( labels ( i ))) else call yAxis % set_title ( char ( \"x_{\" // to_string ( i ) // \"}\" )) end if end if ! Get an x-axis object for the plot xAxis => plts ( k )% get_x_axis () ! Define axis labels if ( i == n ) then ! Display x axis labels for these plots if ( present ( labels )) then call xAxis % set_title ( char ( labels ( j ))) else call xAxis % set_title ( char ( \"x_{\" // to_string ( j ) // \"}\" )) end if end if ! Rotate histogram tic labels call xAxis % set_tic_label_angle ( 4 5.0 ) call xAxis % set_tic_label_rotation_origin ( GNUPLOT_ROTATION_ORIGIN_RIGHT ) ! Store the plot - the collection makes a copy of the plot and ! manages it's lifetime call this % m_plt % set ( i , j , plts ( k )) end do end do end subroutine ! ------------------------------------------------------------------------------ pure function cp_get_rows ( this ) result ( x ) !! Gets the number of rows of plots. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ) :: x !! The row count. x = this % m_plt % get_row_count () end function ! -------------------- pure function cp_get_cols ( this ) result ( x ) !! Gets the number of columns of plots. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ) :: x !! The column count. x = this % m_plt % get_column_count () end function ! -------------------- pure function cp_get_count ( this ) result ( x ) !! Gets the total number of plots. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ) :: x !! The plot count. x = this % m_plt % get_plot_count () end function ! ------------------------------------------------------------------------------ subroutine cp_draw ( this , persist , err ) !! Launches GNUPLOT and draws the correlation_plot per the current !! state of the command list. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. logical , intent ( in ), optional :: persist !! An optional parameter that can be used to keep GNUPLOT open. !! Set to true to force GNUPLOT to remain open; else, set to false !! to allow GNUPLOT to close after drawing. The default is true. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. call this % m_plt % draw ( persist , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine cp_save ( this , fname , err ) !! Saves a GNUPLOT command file. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. character ( len = * ), intent ( in ) :: fname !! The filename. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. call this % m_plt % save_file ( fname , err ) end subroutine ! ------------------------------------------------------------------------------ function cp_get ( this , i , j ) result ( x ) !! Gets the requested plot object. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ), intent ( in ) :: i !! The row index of the plot to retrieve. integer ( int32 ), intent ( in ) :: j !! The column index of the plot to retrieve. class ( plot ), pointer :: x !! A pointer to the plot object. x => this % m_plt % get ( i , j ) end function ! ------------------------------------------------------------------------------ function cp_get_term ( this ) result ( x ) !! Gets the GNUPLOT terminal object. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. class ( terminal ), pointer :: x !! A pointer to the terminal object. x => this % m_plt % get_terminal () end function ! ------------------------------------------------------------------------------ function cp_get_font ( this ) result ( x ) !! Gets the name of the font used for plot text. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. character ( len = :), allocatable :: x !! The font name. x = this % m_plt % get_font_name () end function ! -------------------- subroutine cp_set_font ( this , x ) !! Sets the name of the font used for plot text. class ( correlation_plot ), intent ( inout ) :: this !! The correlation_plot object. character ( len = * ), intent ( in ) :: x !! The font name. call this % m_plt % set_font_name ( x ) end subroutine ! ------------------------------------------------------------------------------ function cp_get_font_size ( this ) result ( x ) !! Gets the size of the font used by the plot. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ) :: x !! The font size. x = this % m_plt % get_font_size () end function ! -------------------- subroutine cp_set_font_size ( this , x ) !! Sets the size of the font used by the plot. class ( correlation_plot ), intent ( inout ) :: this !! The correlation_plot object. integer ( int32 ), intent ( in ) :: x !! The font size. call this % m_plt % set_font_size ( x ) end subroutine ! ****************************************************************************** ! PRIVATE HELPER ROUTINES ! ------------------------------------------------------------------------------ subroutine compute_linear_fit ( x , y , m , b ) !! Computes the coefficients of a linear equation (y = m * x + b) using a !! least-squares approach. real ( real64 ), intent ( in ), dimension (:) :: x !! The x-coordinate data. real ( real64 ), intent ( in ), dimension (:) :: y !! The y-coordinate data. real ( real64 ), intent ( out ) :: m !! The slope term. real ( real64 ), intent ( out ) :: b !! The intercept term. ! Local Variables integer ( int32 ) :: i , n real ( real64 ) :: sumX , sumY , sumX2 , sumY2 , sumXY ! Initialization n = size ( x ) sumX = 0.0d0 sumY = 0.0d0 sumX2 = 0.0d0 sumY2 = 0.0d0 sumXY = 0.0d0 ! Process do i = 1 , n sumX = sumX + x ( i ) sumY = sumY + y ( i ) sumXY = sumXY + x ( i ) * y ( i ) sumX2 = sumX2 + ( x ( i )) ** 2 sumY2 = sumY2 + ( y ( i )) ** 2 end do m = ( n * sumXY - sumX * sumY ) / ( n * sumX2 - sumX ** 2 ) b = ( sumY * sumX2 - sumX * sumXY ) / ( n * sumX2 - sumX ** 2 ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_stats_plots.f90.html"},{"title":"fplot_core.f90 – FPLOT","text":"Source Code module fplot_core !! FPLOT is a Fortran library providing a means of interacting with !! [GNUPLOT](http://www.gnuplot.info/) from a Fortran program. The library !! is designed in an object-oriented manner, and as such utilizes language !! features that require a compiler that supports the 2003 standard. !! Additionally, it is expected that Gnuplot is installed on the system !! path. For full functionallity, a minimum of GNUPLOT v5.2 is expected. use fplot_constants use fplot_core_routines use fplot_colors use fplot_plot_object use fplot_plot_data use fplot_plot_axis use fplot_terminal use fplot_windows_terminal use fplot_qt_terminal use fplot_wxt_terminal use fplot_png_terminal use fplot_latex_terminal use fplot_label use fplot_arrow use fplot_legend use fplot_plot_data_2d use fplot_plot_data_3d use fplot_surface_plot_data use fplot_plot_data_error_bars use fplot_plot_data_bar use fplot_plot_data_histogram use fplot_colormap use fplot_filled_plot_data use fplot_triangulations_delaunay_2d use fplot_plot_data_tri_2d use fplot_delaunay_tri_surface use fplot_tri_surface_plot_data use fplot_vector_field_plot_data use fplot_plot use fplot_plot_2d use fplot_plot_3d use fplot_surface_plot use fplot_multiplot use fplot_plot_bar use fplot_plot_polar use fplot_stats_plots use fplot_plot_data_box_whisker use fplot_plot_data_function use strings use fplot_svg_terminal use fplot_pdf_terminal implicit none end module","tags":"","loc":"sourcefile\\fplot_core.f90.html"},{"title":"fplot_filled_plot_data.f90 – FPLOT","text":"Source Code ! fplot_filled_plot_data.f90 module fplot_filled_plot_data use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: filled_plot_data type , extends ( plot_data_colored ) :: filled_plot_data !! Defines a two-dimensional filled plot data set. logical , private :: m_useY2 = . false . !! Plot against the secondary y-axis. real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! The data set (column 1 = x, column 2 = y, column 3 = constraint y) contains procedure , public :: get_axes_string => fpd_get_axes_cmd procedure , public :: get_draw_against_y2 => fpd_get_draw_against_y2 procedure , public :: set_draw_against_y2 => fpd_set_draw_against_y2 procedure , public :: get_command_string => fpd_get_cmd procedure , public :: get_data_string => fpd_get_data_cmd procedure , public :: define_data => fpd_define_data procedure , public :: clear_data => fpd_clear_data end type contains ! ------------------------------------------------------------------------------ function fpd_get_axes_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string defining which axes the data !! is to be plotted against. class ( filled_plot_data ), intent ( in ) :: this !! The filled_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then x = \"axes x1y2\" else x = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ pure function fpd_get_draw_against_y2 ( this ) result ( x ) !! Gets a value determining if the data should be plotted against !! the secondary y-axis. class ( filled_plot_data ), intent ( in ) :: this !! The filled_plot_data object. logical :: x !! Returns true if the data should be plotted against the secondary !! y-axis; else, false to plot against the primary y-axis. x = this % m_useY2 end function ! -------------------- subroutine fpd_set_draw_against_y2 ( this , x ) !! Sets a value determining if the data should be plotted against !! the secondary y-axis. class ( filled_plot_data ), intent ( inout ) :: this !! The filled_plot_data object. logical , intent ( in ) :: x !! Set to true if the data should be plotted against the secondary !! y-axis; else, false to plot against the primary y-axis. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ function fpd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this !! filled_plot_data object. class ( filled_plot_data ), intent ( in ) :: this !! The filled_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Establish filled data call str % append ( \" with filledcurves\" ) ! Line Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function fpd_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data to plot. class ( filled_plot_data ), intent ( in ) :: this !! The filled_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i character ( len = :), allocatable :: nl , delimiter ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) ! Process do i = 1 , size ( this % m_data , 1 ) call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( nl ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine fpd_define_data ( this , x , y , yc , err ) !! Defines the data set. class ( filled_plot_data ), intent ( inout ) :: this !! The filled_plot_data object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinate data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinate data. real ( real64 ), intent ( in ), dimension (:) :: yc !! An N-element array containing the constraining curve y !! coordinate data. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables type ( errors ), target :: deferr class ( errors ), pointer :: errmgr integer ( int32 ) :: i , n , flag ! Set up error handling if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Input Checking n = size ( x ) if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"fpd_define_data\" , & \"y\" , n , size ( y )) return end if if ( size ( yc ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"fpd_define_data\" , & \"yc\" , n , size ( yc )) return end if ! Allocate space for the data if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 3 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"fpd_define_data\" , flag ) return end if ! Create a name if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Store the data do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = yc ( i ) end do end subroutine ! ------------------------------------------------------------------------------ subroutine fpd_clear_data ( this ) !! Clears the data from this data set. class ( filled_plot_data ), intent ( inout ) :: this !! The filled_plot_data object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_filled_plot_data.f90.html"},{"title":"fplot_constants.f90 – FPLOT","text":"Source Code module fplot_constants use iso_fortran_env implicit none ! ****************************************************************************** ! GNUPLOT TERMINAL CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: GNUPLOT_TERMINAL_WIN32 = 1 !! Defines a Win32 terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_WXT = 2 !! Defines a WXT terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_QT = 3 !! Defines a QT terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_PNG = 4 !! Defines a PNG terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_LATEX = 5 !! Defines a LATEX terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_SVG = 6 !! Defines an SVG terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_PDF = 7 !! Defines a PDF terminal. ! ****************************************************************************** ! MARKER CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: MARKER_PLUS = 1 !! Defines a + data point marker. integer ( int32 ), parameter :: MARKER_X = 2 !! Defines an x data point marker. integer ( int32 ), parameter :: MARKER_ASTERISK = 3 !! Defines an * data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_SQUARE = 4 !! Defines an empty square-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_SQUARE = 5 !! Defines an filled square-shaped data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_CIRCLE = 6 !! Defines an empty circle-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_CIRCLE = 7 !! Defines an filled circle-shaped data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_TRIANGLE = 8 !! Defines an empty triangle-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_TRIANGLE = 9 !! Defines an filled triangle-shaped data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_NABLA = 10 !! Defines an empty nabla-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_NABLA = 11 !! Defines an filled nabla-shaped data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_RHOMBUS = 12 !! Defines an empty rhombus-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_RHOMBUS = 13 !! Defines an filled rhombus-shaped data point marker. ! ****************************************************************************** ! LINE CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: LINE_SOLID = 1 !! Defines a solid line. integer ( int32 ), parameter :: LINE_DASHED = 2 !! Defines a dashed line. integer ( int32 ), parameter :: LINE_DOTTED = 3 !! Defines a dotted line. integer ( int32 ), parameter :: LINE_DASH_DOTTED = 4 !! Defines a dash-dotted line. integer ( int32 ), parameter :: LINE_DASH_DOT_DOT = 5 !! Defines a dash-dot-dotted line. ! ****************************************************************************** ! LEGEND CONSTANTS ! ------------------------------------------------------------------------------ character ( len = * ), parameter :: LEGEND_TOP = \"top\" !! Defines the legend should be placed at the top of the plot. character ( len = * ), parameter :: LEGEND_CENTER = \"center\" !! Defines the legend should be centered on the plot. character ( len = * ), parameter :: LEGEND_LEFT = \"left\" !! Defines the legend should be placed at the left of the plot. character ( len = * ), parameter :: LEGEND_RIGHT = \"right\" !! Defines the legend should be placed at the right of the plot. character ( len = * ), parameter :: LEGEND_BOTTOM = \"bottom\" !! Defines the legend should be placed at the bottom of the plot. character ( len = * ), parameter :: LEGEND_ARRANGE_VERTICALLY = \"vertical\" !! Defines the legend should be arranged such that the column count !! is minimized. character ( len = * ), parameter :: LEGEND_ARRANGE_HORIZONTALLY = \"horizontal\" !! Defines the legend should be arranged such that the row count !! is minimized. ! ****************************************************************************** ! POLAR PLOT CONSTANTS ! ------------------------------------------------------------------------------ character ( len = * ), parameter :: POLAR_THETA_TOP = \"top\" !! States that theta should start at the top of the plot. character ( len = * ), parameter :: POLAR_THETA_RIGHT = \"right\" !! States that theta should start at the right of the plot. character ( len = * ), parameter :: POLAR_THETA_BOTTOM = \"bottom\" !! States that theta should start at the bottom of the plot. character ( len = * ), parameter :: POLAR_THETA_LEFT = \"left\" !! States that theta should start at the left of the plot. character ( len = * ), parameter :: POLAR_THETA_CCW = \"ccw\" !! States that theta should proceed in a counter-clockwise direction. character ( len = * ), parameter :: POLAR_THETA_CW = \"cw\" !! States that theta should proceed in a clockwise direction. ! ****************************************************************************** ! COORDINATE SYSTEM CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: COORDINATES_CARTESIAN = 100 !! Defines a Cartesian coordinate system. integer ( int32 ), parameter :: COORDINATES_SPHERICAL = 101 !! Defines a spherical coordinate system. integer ( int32 ), parameter :: COORDINATES_CYLINDRICAL = 102 !! Defines a cylindrical coordinate system. ! ****************************************************************************** ! ARROW CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: ARROW_NO_HEAD = 0 !! Defines an arrow with no head. integer ( int32 ), parameter :: ARROW_HEAD = 1 !! Defines an arrow with a traditional head. integer ( int32 ), parameter :: ARROW_BACKHEAD = 2 !! Defines an arrow with it's head at it's back end (tail). integer ( int32 ), parameter :: ARROW_HEADS = 3 !! Defines an arrow with a head on both ends. integer ( int32 ), parameter :: ARROW_FILLED = 100 !! Defines a filled arrow head. integer ( int32 ), parameter :: ARROW_EMPTY = 101 !! Defines an empty arrow head. integer ( int32 ), parameter :: ARROW_NO_FILL = 102 !! Defines an arrow head without fill. integer ( int32 ), parameter :: ARROW_NO_BORDER = 103 !! Defines an arrow head with no border. ! ****************************************************************************** ! PLOT DATA CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: PLOTDATA_MAX_NAME_LENGTH = 128 !! Defines the maximum number of characters allowed in a graph label. ! ****************************************************************************** ! PRIVATE/DEFAULT CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: GNUPLOT_DEFAULT_WINDOW_WIDTH = 640 !! The default GNUPLOT window width, in pixels. integer ( int32 ), parameter :: GNUPLOT_DEFAULT_WINDOW_HEIGHT = 420 !! The default GNUPLOT window height, in pixels. integer ( int32 ), parameter :: GNUPLOT_MAX_LABEL_LENGTH = 128 !! Defines the maximum number of characters allowed in a graph label. character ( len = * ), parameter :: GNUPLOT_DEFAULT_FONTNAME = \"Arial\" !! Defines the default font used by text on the graph. integer ( int32 ), parameter :: GNUPLOT_DEFAULT_FONT_SIZE = 14 !! Defines the default font size used by text on the graph. integer ( int32 ), parameter :: GNUPLOT_MAX_PATH_LENGTH = 256 !! Defines the maximum number of characters allowed in a file path. ! ****************************************************************************** ! HORIZONTAL ALIGNMENT CONSTANTS ! ------------------------------------------------------------------------------ character ( len = * ), parameter :: GNUPLOT_HORIZONTAL_ALIGN_LEFT = \"left\" !! Defines the text should be aligned to the left. character ( len = * ), parameter :: GNUPLOT_HORIZONTAL_ALIGN_CENTER = \"center\" !! Defines the text should be centered. character ( len = * ), parameter :: GNUPLOT_HORIZONTAL_ALIGN_RIGHT = \"right\" !! Defines the text should be aligned to the right. ! ****************************************************************************** ! ROTATION ORIGIN CONSTANTS ! ------------------------------------------------------------------------------ character ( len = * ), parameter :: GNUPLOT_ROTATION_ORIGIN_RIGHT = \"right\" !! Defines the text should be rotated around the right side of the text. character ( len = * ), parameter :: GNUPLOT_ROTATION_ORIGIN_CENTER = \"center\" !! Defines the text should be rotated around the center of the text. character ( len = * ), parameter :: GNUPLOT_ROTATION_ORIGIN_LEFT = \"left\" !! Defines the text should be rotated around the left side of the text. end module","tags":"","loc":"sourcefile\\fplot_constants.f90.html"},{"title":"fplot_plot_bar.f90 – FPLOT","text":"Source Code ! fplot_plot_bar.f90 module fplot_plot_bar use iso_fortran_env use fplot_plot_2d use strings implicit none private public :: plot_bar type , extends ( plot_2d ) :: plot_bar !! Defines a 2D plot tailored towards bar plotting. real ( real32 ), private :: m_barWidth = 1.0d0 !! A relative scaling of the width of a single bar. The value !! must be between 0 and 1 with 1 being full width. integer ( int32 ), private :: m_gap = 1 !! The default gap size between groups logical , private :: m_stacked = . false . !! True if bars should be stacked; else, false for side-by-side contains procedure , public :: get_bar_width => pb_get_bar_width procedure , public :: set_bar_width => pb_set_bar_width procedure , public :: get_command_string => pb_get_cmd procedure , public :: get_stacked => pb_get_stacked procedure , public :: set_stacked => pb_set_stacked procedure , public :: get_spacing => pb_get_spacing procedure , public :: set_spacing => pb_set_spacing end type contains ! ------------------------------------------------------------------------------ pure function pb_get_bar_width ( this ) result ( x ) !! Gets the bar width scaling factor. class ( plot_bar ), intent ( in ) :: this !! The plot_bar object. real ( real32 ) :: x !! The scaling factor. x = this % m_barWidth end function ! ------------------------------------------------------------------------------ subroutine pb_set_bar_width ( this , x ) !! Sets the bar width scaling factor. class ( plot_bar ), intent ( inout ) :: this !! The plot_bar object. real ( real32 ), intent ( in ) :: x !! The scaling factor. The value must be in the set [0, 1]; else, the !! value will be shifted accordingly. if ( x > 1.0 ) then this % m_barWidth = 1.0 else if ( x < 0.0 ) then this % m_barWidth = 0.0 else this % m_barWidth = x end if end subroutine ! ------------------------------------------------------------------------------ function pb_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT commands required to draw the plot. class ( plot_bar ), intent ( in ) :: this !! The plot_bar object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str ! Initialization call str % initialize () ! Style call str % append ( new_line ( 'a' )) call str % append ( \"set style data histogram\" ) if ( this % get_stacked ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set style histogram rowstacked\" ) else call str % append ( new_line ( 'a' )) call str % append ( \"set style histogram cluster gap \" ) call str % append ( to_string ( this % get_spacing ())) end if ! Box Width call str % append ( new_line ( 'a' )) call str % append ( \"set boxwidth \" ) call str % append ( to_string ( this % get_bar_width ())) call str % append ( \" relative\" ) ! Call the base routine to establish the remainder of the plot call str % append ( this % plot_2d % get_command_string ()) ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function pb_get_stacked ( this ) result ( rst ) !! Gets a value determining if data sets should be stacked (true) or !! left side-by-side (false). class ( plot_bar ), intent ( in ) :: this !! The [[plot_bar]] object. logical :: rst !! True if multiple data sets should be stacked; else, false. rst = this % m_stacked end function ! -------------------- subroutine pb_set_stacked ( this , x ) !! Gets a value determining if data sets should be stacked (true) or !! left side-by-side (false). class ( plot_bar ), intent ( inout ) :: this !! The [[plot_bar]] object. logical , intent ( in ) :: x !! True if multiple data sets should be stacked; else, false. this % m_stacked = x end subroutine ! ------------------------------------------------------------------------------ pure function pb_get_spacing ( this ) result ( rst ) !! Gets the spacing between clusters of data sets. class ( plot_bar ), intent ( in ) :: this !! The [[plot+bar]] object. integer ( int32 ) :: rst !! The spacing. rst = this % m_gap end function ! -------------------- subroutine pb_set_spacing ( this , x ) !! Sets the spacing between clusters of data sets. class ( plot_bar ), intent ( inout ) :: this !! The [[plot+bar]] object. integer ( int32 ), intent ( in ) :: x !! The spacing. this % m_gap = x end subroutine ! ------------------------------------------------------------------------------ ! TO DO YET: ! - lighting end module","tags":"","loc":"sourcefile\\fplot_plot_bar.f90.html"},{"title":"fplot_plot_data_box_whisker.f90 – FPLOT","text":"Source Code module fplot_plot_data_box_whisker use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: plot_data_box_whisker type , extends ( plot_data_colored ) :: plot_data_box_whisker !! A container for box-whisker plot data. type ( string ), private , allocatable , dimension (:) :: m_x !! The x-coordinate data. real ( real64 ), private , allocatable , dimension (:) :: m_boxMin !! The minimum y-values for each box. real ( real64 ), private , allocatable , dimension (:) :: m_boxMax !! The maximum y-values for each box. real ( real64 ), private , allocatable , dimension (:) :: m_whiskerMin !! The minimum y-values for each whisker. real ( real64 ), private , allocatable , dimension (:) :: m_whiskerMax !! The maximum y-values for each whisker. real ( real64 ), private , allocatable , dimension (:) :: m_mid !! The mid-range y-values for each whisker. Typically the mean !! or median. logical , private :: m_useY2 = . false . !! Plot against the secondary y-axis? logical , private :: m_whiskerbars = . true . !! Use horizontal whisker bar caps? real ( real32 ), private :: m_whiskerWidth = 1.5 !! On a scale of 0 -> 1, the whiskerwidth. real ( real32 ), private :: m_lineWidth = 2.0 !! The line width. real ( real32 ), private :: m_boxWidth = 0.05 !! The box width. logical , private :: m_fillBoxes = . true . !! Fill the boxes? real ( real32 ), private :: m_boxOpacity = 1.0 !! Box opacity [0, 1.0]. logical , private :: m_drawBorder = . true . !! Draw the box border? real ( real32 ), private :: m_midLineWidth = 2.0 !! The mid-line width. type ( color ), private :: m_midLineColor = CLR_BLACK !! The mid-line color. contains procedure , public :: define_data => pdbw_define_data_xstring procedure , public :: get_command_string => pdbw_get_cmd procedure , public :: get_data_string => pdbw_get_data_cmd procedure , public :: get_draw_against_y2 => pdbw_get_use_y2 procedure , public :: set_draw_against_y2 => pdbw_set_use_y2 procedure , public :: get_use_whiskerbars => pdbw_get_use_whiskerbars procedure , public :: set_use_whiskerbars => pdbw_set_use_whiskerbars procedure , public :: get_whiskerbar_width => pdbw_get_whiskerbar_width procedure , public :: set_whiskerbar_width => pdbw_set_whiskerbar_width procedure , public :: get_line_width => pdbw_get_line_width procedure , public :: set_line_width => pdbw_set_line_width procedure , public :: get_box_width => pdbw_get_box_width procedure , public :: set_box_width => pdbw_set_box_width procedure , public :: get_fill_boxes => pdbw_get_fill_boxes procedure , public :: set_fill_boxes => pdbw_set_fill_boxes procedure , public :: get_box_fill_opacity => pdbw_get_opacity procedure , public :: set_box_fill_opacity => pdbw_set_opacity procedure , public :: clear_data => pdbw_clear_data procedure , public :: get_midline_width => pdbw_get_midline_width procedure , public :: set_midline_width => pdbw_set_midline_width procedure , public :: get_midline_color => pdbw_get_midline_color procedure , public :: set_midline_color => pdbw_set_midline_color end type contains ! ------------------------------------------------------------------------------ subroutine pdbw_define_data_xstring ( this , x , boxmin , boxmax , whiskermin , & whiskermax , mid , err ) !! Defines the data set to plot. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. type ( string ), intent ( in ), dimension (:) :: x !! The x-coordinate data. real ( real64 ), intent ( in ), dimension ( size ( x )) :: boxmin !! The minimum y-values for each box. real ( real64 ), intent ( in ), dimension ( size ( x )) :: boxmax !! The maximum y-values for each box. real ( real64 ), intent ( in ), dimension ( size ( x )) :: whiskermin !! The minimum y-values for each whisker. real ( real64 ), intent ( in ), dimension ( size ( x )) :: whiskermax !! The maximum y-values for each whisker. real ( real64 ), intent ( in ), optional , dimension ( size ( x )) :: mid !! The mid-range values for each whisker. Typically the mean or !! median of the data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Allocations if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_boxMin )) deallocate ( this % m_boxMin ) if ( allocated ( this % m_boxMax )) deallocate ( this % m_boxMax ) if ( allocated ( this % m_whiskerMin )) deallocate ( this % m_whiskerMin ) if ( allocated ( this % m_whiskerMax )) deallocate ( this % m_whiskerMax ) if ( allocated ( this % m_mid )) deallocate ( this % m_mid ) allocate ( this % m_x ( n ), source = x , stat = flag ) if ( flag == 0 ) allocate ( this % m_boxMin ( n ), source = boxmin , stat = flag ) if ( flag == 0 ) allocate ( this % m_boxMax ( n ), source = boxmax , stat = flag ) if ( flag == 0 ) allocate ( this % m_whiskerMin ( n ), source = whiskermin , stat = flag ) if ( flag == 0 ) allocate ( this % m_whiskerMax ( n ), source = whiskermax , stat = flag ) if ( flag == 0 . and . present ( mid )) allocate ( this % m_mid ( n ), source = mid , stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdbw_define_data_xstring\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function pdbw_get_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string for this object. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n , nname type ( color ) :: clr ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Style call str % append ( ' using ($0+1):2:3:4:5:(' ) call str % append ( to_string ( this % get_box_width ())) call str % append ( \"):xtic(1) with candlesticks\" ) ! Title nname = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Whisker bars if ( this % get_use_whiskerbars ()) then call str % append ( \" whiskerbars \" ) call str % append ( to_string ( this % get_whiskerbar_width ())) end if ! Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Fill Boxes if ( this % get_fill_boxes ()) then call str % append ( \" fill solid \" ) call str % append ( to_string ( this % get_box_fill_opacity ())) call str % append ( \" border\" ) end if ! Mid Values if ( allocated ( this % m_mid )) then call str % append ( \", $\" ) call str % append ( this % get_datablock_name ()) call str % append ( ' using ($0+1):6:6:6:6:(' ) call str % append ( to_string ( this % get_box_width ())) call str % append ( \"):xtic(1) with candlesticks\" ) call str % append ( \" lt -1\" ) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_midline_width ())) clr = this % get_midline_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) call str % append ( \" notitle\" ) end if ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdbw_get_data_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining the data for this object. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , n character :: delimiter , nl ! Initialization delimiter = achar ( 9 ) nl = new_line ( nl ) n = size ( this % m_x ) ! Process do i = 1 , n call str % append ( this % m_x ( i )) call str % append ( delimiter ) call str % append ( to_string ( this % m_boxMin ( i ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_whiskerMin ( i ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_whiskerMax ( i ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_boxMax ( i ))) if ( allocated ( this % m_mid )) then call str % append ( delimiter ) call str % append ( to_string ( this % m_mid ( i ))) end if call str % append ( nl ) end do ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdbw_get_axes_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining which axes the data is to be !! plotted against. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. character ( len = :), allocatable :: rst !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then rst = \"axes x1y2\" else rst = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ pure function pdbw_get_use_y2 ( this ) result ( rst ) !! Gets a value determining if the data is to be plotted against the !! secondary y axis. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. logical :: rst !! Returns true if the data is to be plotted against the secondary y !! axis; else, false for the primary y axis. rst = this % m_useY2 end function ! -------------------- subroutine pdbw_set_use_y2 ( this , x ) !! Sets a value determining if the data is to be plotted against the !! secondary y axis. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. logical , intent ( in ) :: x !! Set to true if the data is to be plotted against the secondary y !! axis; else, false for the primary y axis. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_use_whiskerbars ( this ) result ( rst ) !! Gets a value determining if whiskerbars should be used. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. logical :: rst !! True if whiskerbars should be used; else, false. rst = this % m_whiskerbars end function ! -------------------- subroutine pdbw_set_use_whiskerbars ( this , x ) !! Sets a value determining if whiskerbars should be used. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. logical , intent ( in ) :: x !! Set to true if whiskerbars should be used; else, false. this % m_whiskerbars = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_whiskerbar_width ( this ) result ( rst ) !! Gets the width of whiskerbar. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: rst !! The width of the whiskerbar on a scale of 0:1 with 1 being the full !! width. rst = this % m_whiskerWidth end function ! -------------------- subroutine pdbw_set_whiskerbar_width ( this , x ) !! Sets the width of the whiskerbar. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The width of the whiskerbar. This value is clamped to [0, 1] with !! 1 representing full width. if ( x < 0.0d0 ) then this % m_whiskerWidth = 0.0d0 else if ( x > 1.0d0 ) then this % m_whiskerWidth = 1.0d0 else this % m_whiskerWidth = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_line_width ( this ) result ( x ) !! Gets the width of the line, in pixels. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: x !! The line width. x = this % m_lineWidth end function ! -------------------- subroutine pdbw_set_line_width ( this , x ) !! Sets the width of the line, in pixels. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_lineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_box_width ( this ) result ( rst ) !! Gets the box width. By default the x-axis is incremented in units of 1; !! therefore, a box width of 1 will fully fill the space. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: rst !! The box width. rst = this % m_boxWidth end function ! -------------------- subroutine pdbw_set_box_width ( this , x ) !! Sets the box width. By default the x-axis is incremented in units of 1; !! therefore, a box width of 1 will fully fill the space. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The box width. this % m_boxWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_fill_boxes ( this ) result ( rst ) !! Gets a value determining if the boxes should be filled. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. logical :: rst !! True if the boxes are to be filled; else, false. rst = this % m_fillBoxes end function ! -------------------- subroutine pdbw_set_fill_boxes ( this , x ) !! Sets a value determining if the boxes should be filled. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. logical , intent ( in ) :: x !! Set to true if the boxes are to be filled; else, false. this % m_fillBoxes = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_opacity ( this ) result ( rst ) !! Gets the opacity of the box fill color. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: rst !! The opacity on a scale from 0 to 1. rst = this % m_boxOpacity end function ! -------------------- subroutine pdbw_set_opacity ( this , x ) !! Sets the opacity of the box fill color. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The opacity on a scale from 0 to 1. this % m_boxOpacity = x end subroutine ! ------------------------------------------------------------------------------ subroutine pdbw_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_boxMin )) deallocate ( this % m_boxMin ) if ( allocated ( this % m_boxMax )) deallocate ( this % m_boxMax ) if ( allocated ( this % m_whiskerMin )) deallocate ( this % m_whiskerMin ) if ( allocated ( this % m_whiskerMin )) deallocate ( this % m_whiskerMin ) if ( allocated ( this % m_mid )) deallocate ( this % m_mid ) end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_midline_width ( this ) result ( rst ) !! Gets the width of the midline. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: rst !! The line width. rst = this % m_midLineWidth end function ! -------------------- subroutine pdbw_set_midline_width ( this , x ) !! Sets the width of the midline. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_midLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_midline_color ( this ) result ( rst ) !! Gets the color of the midline. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. type ( color ) :: rst !! The line color. rst = this % m_midLineColor end function ! -------------------- subroutine pdbw_set_midline_color ( this , x ) !! Sets the color of the midline. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. type ( color ) , intent ( in ) :: x !! The line color. this % m_midLineColor = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_box_whisker.f90.html"},{"title":"fplot_simplify.f90 – FPLOT","text":"Source Code ! fplot_simplify.f90 ! References: ! - https://www.codeproject.com/Articles/114797/Polyline-Simplification ! - https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm module fplot_simplify use iso_fortran_env use fplot_errors implicit none private public :: simplify_polyline interface simplify_polyline module procedure :: simplify_polyline_2d1 module procedure :: simplify_polyline_3d1 module procedure :: simplify_polyline_mtx end interface contains function simplify_polyline_2d1 ( x , y , tol , err ) result ( ln ) !! Simplifies a 2D polyline by removing points too close to !! discern given a specified tolerance. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ) :: tol !! The distance tolerance to use when simplifying the polyline. !! This value must be positive, and larger than machine epsilon. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. real ( real64 ), allocatable , dimension (:,:) :: ln !! A matrix containing the simplified polyline vertices. The first !! column of the matrix contains the x-coordinates, and the second !! column contains the y-coordinates. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n real ( real64 ) :: eps ! Initialization n = size ( x ) eps = epsilon ( eps ) if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Input Check if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"simplify_polyline_2d1\" , \"y\" , n , size ( y )) return end if if ( tol < eps ) then call errmgr % report_error ( \"simplify_polyline_2d1\" , & \"The tolerance value is either negative or less \" // & \"than machine precision.\" , PLOT_INVALID_INPUT_ERROR ) return end if ! Process ln = radial_distance_2d ( x , y , tol , err ) end function function simplify_polyline_3d1 ( x , y , z , tol , err ) result ( ln ) !! Simplifies a 3D polyline by removing points too close to !! discern given a specified tolerance. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ), dimension (:) :: z !! An N-element array containing the z-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ) :: tol !! The distance tolerance to use when simplifying the polyline. !! This value must be positive, and larger than machine epsilon. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. real ( real64 ), allocatable , dimension (:,:) :: ln !! A matrix containing the simplified polyline vertices. The first !! column of the matrix contains the x-coordinates, the second !! column contains the y-coordinates, and the third column contains !! the z-coordinates. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n real ( real64 ) :: eps ! Initialization n = size ( x ) eps = epsilon ( eps ) if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Input Check if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"simplify_polyline_3d1\" , \"y\" , n , size ( y )) return end if if ( size ( z ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"simplify_polyline_3d1\" , \"z\" , n , size ( z )) return end if if ( tol < eps ) then call errmgr % report_error ( \"simplify_polyline_3d1\" , & \"The tolerance value is either negative or less \" // & \"than machine precision.\" , PLOT_INVALID_INPUT_ERROR ) return end if ! Process ln = radial_distance_3d ( x , y , z , tol , errmgr ) end function function simplify_polyline_mtx ( xy , tol , err ) result ( ln ) !! Simplifies a 2D or 3D polyline by removing points too close to !! discern given a specified tolerance. real ( real64 ), intent ( in ), dimension (:,:) :: xy !! An N-by-2 or N-by-3 matrix containing the polyline vertex data. real ( real64 ), intent ( in ) :: tol !! The distance tolerance to use when simplifying the polyline. !! This value must be positive, and larger than machine epsilon. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. real ( real64 ), allocatable , dimension (:,:) :: ln !! A matrix containing the simplified polyline vertices. The first !! column of the matrix contains the x-coordinates, the second !! column contains the y-coordinates, and if necessary, the third !! column contains the z-coordinates. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Ensure there are at least 2 columns of data in XY if ( size ( xy , 2 ) < 2 ) then call report_matrix_size_mismatch_error ( errmgr , & \"simplify_polyline_mtx\" , \"xy\" , size ( xy , 1 ), 2 , size ( xy , 1 ), & size ( xy , 2 )) return end if ! Process if ( size ( xy , 2 ) == 2 ) then ln = simplify_polyline_2d1 ( xy (:, 1 ), xy (:, 2 ), tol , errmgr ) else ln = simplify_polyline_3d1 ( xy (:, 1 ), xy (:, 2 ), xy (:, 3 ), tol , errmgr ) end if end function function radial_distance_2d ( x , y , tol , err ) result ( pts ) ! Arguments real ( real64 ), intent ( in ), dimension (:) :: x , y real ( real64 ), intent ( in ) :: tol class ( errors ), intent ( inout ) :: err real ( real64 ), allocatable , dimension (:,:) :: pts ! Local Variables integer ( int32 ) :: i , j , n , nvalid , flag logical , allocatable , dimension (:) :: valid real ( real64 ) :: r , xref , yref ! Initialization n = size ( x ) if ( n == 0 ) return i = 2 xref = x ( 1 ) yref = y ( 1 ) nvalid = 1 ! Local Memory Allocation allocate ( valid ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( err , \"radial_distance_2d\" , flag ) return end if valid ( 1 ) = . true . ! Cycle through and determine which points to keep do if ( i > n ) exit r = pythag2 ( x ( i ), y ( i ), xref , yref ) if ( r < tol ) then ! The point is too close, reject it valid ( i ) = . false . else ! The point is outside the tolerance, and is OK valid ( i ) = . true . nvalid = nvalid + 1 ! Move the reference point xref = x ( i ) yref = y ( i ) end if i = i + 1 end do ! Allocate space, and collect all valid points allocate ( pts ( nvalid , 2 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( err , \"radial_distance_2d\" , flag ) return end if j = 1 do i = 1 , n if ( valid ( i )) then pts ( j , 1 ) = x ( i ) pts ( j , 2 ) = y ( i ) j = j + 1 end if end do end function function radial_distance_3d ( x , y , z , tol , err ) result ( pts ) ! Arguments real ( real64 ), intent ( in ), dimension (:) :: x , y , z real ( real64 ), intent ( in ) :: tol class ( errors ), intent ( inout ) :: err real ( real64 ), allocatable , dimension (:,:) :: pts ! Local Variables integer ( int32 ) :: i , j , n , nvalid , flag logical , allocatable , dimension (:) :: valid real ( real64 ) :: r , xref , yref , zref ! Initialization n = size ( x ) if ( n == 0 ) return i = 2 xref = x ( 1 ) yref = y ( 1 ) zref = z ( 1 ) nvalid = 1 ! Local Memory Allocation allocate ( valid ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( err , \"radial_distance_3d\" , flag ) return end if valid ( 1 ) = . true . ! Cycle through and determine which points to keep do if ( i > n ) exit r = pythag3 ( x ( i ), y ( i ), z ( i ), xref , yref , zref ) if ( r < tol ) then ! The point is too close, reject it valid ( i ) = . false . else ! The point is outside the tolerance, and is OK valid ( i ) = . true . nvalid = nvalid + 1 ! Move the reference point xref = x ( i ) yref = y ( i ) zref = z ( i ) end if i = i + 1 end do ! Allocate space, and collect all valid points allocate ( pts ( nvalid , 3 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( err , \"radial_distance_3d\" , flag ) return end if j = 1 do i = 1 , n if ( valid ( i )) then pts ( j , 1 ) = x ( i ) pts ( j , 2 ) = y ( i ) pts ( j , 3 ) = z ( i ) j = j + 1 end if end do end function pure function pythag2 ( x , y , xo , yo ) result ( r ) ! Arguments real ( real64 ), intent ( in ) :: x , y , xo , yo real ( real64 ) :: r ! Local Variables real ( real64 ) :: w , xabs , yabs ! Process xabs = abs ( x - xo ) yabs = abs ( y - yo ) w = max ( xabs , yabs ) if ( w < epsilon ( w )) then r = xabs + yabs else r = w * sqrt (( xabs / w ) ** 2 + ( yabs / w ) ** 2 ) end if end function pure function pythag3 ( x , y , z , xo , yo , zo ) result ( r ) ! Arguments real ( real64 ), intent ( in ) :: x , y , z , xo , yo , zo real ( real64 ) :: r ! Local Variables real ( real64 ) :: w , xabs , yabs , zabs ! Process xabs = abs ( x - xo ) yabs = abs ( y - yo ) zabs = abs ( z - zo ) w = max ( xabs , yabs , zabs ) if ( w < epsilon ( w )) then r = xabs + yabs + zabs else r = w * sqrt (( xabs / w ) ** 2 + ( yabs / w ) ** 2 + ( zabs / w ) ** 2 ) end if end function end module","tags":"","loc":"sourcefile\\fplot_simplify.f90.html"},{"title":"fplot_plot_data_tri_2d.f90 – FPLOT","text":"Source Code ! fplot_plot_data_tri_2d.f90 module fplot_plot_data_tri_2d use iso_fortran_env use fplot_plot_data use fplot_constants use fplot_triangulations_delaunay_2d use fplot_colors use strings implicit none private public :: plot_data_tri_2d type , extends ( plot_data_colored ) :: plot_data_tri_2d !! Defines a 2D triangulated data set. real ( real64 ), private , allocatable , dimension (:) :: m_x !! An array of the x-coordinates of each point. real ( real64 ), private , allocatable , dimension (:) :: m_y !! An array of the y-coordinates of each point. integer ( int32 ), private , allocatable , dimension (:,:) :: m_indices !! A 3-column matrix containing the indices of each triangle's !! vertex. real ( real32 ), private :: m_lineWidth = 1.0 !! The line width. integer ( int32 ), private :: m_lineStyle = LINE_SOLID !! The line style contains procedure , public :: get_data_string => pdt2d_get_data_cmd procedure , public :: get_command_string => pdt2d_get_cmd procedure , public :: define_data => pdt2d_define_data procedure , public :: get_line_width => pdt2d_get_line_width procedure , public :: set_line_width => pdt2d_set_line_width procedure , public :: get_line_style => pdt2d_get_line_style procedure , public :: set_line_style => pdt2d_set_line_style procedure , public :: clear_data => pdt2d_clear_data end type contains ! ------------------------------------------------------------------------------ function pdt2d_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string describing the data to plot. class ( plot_data_tri_2d ), intent ( in ) :: this !! The plot_data_tri_2d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , n character :: delimiter , nl ! Initialization call str % initialize () n = size ( this % m_indices , 1 ) delimiter = achar ( 9 ) nl = new_line ( nl ) ! Process ! https://stackoverflow.com/questions/42784369/drawing-triangular-mesh-using-gnuplot ! http://www.gnuplot.info/faq/faq.html#x1-530005.10 ! https://codeyarns.com/2011/01/25/gnuplot-plotting-a-3d-triangulation/ do i = 1 , n ! Line 1-2 ! Vertex 1 j = this % m_indices ( i , 1 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Vertex 2 j = this % m_indices ( i , 2 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Line 2-3 ! Vertex 2 call str % append ( nl ) j = this % m_indices ( i , 2 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Vertex 3 j = this % m_indices ( i , 3 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Line 3-1 ! Vertex 3 call str % append ( nl ) j = this % m_indices ( i , 3 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Vertex 1 j = this % m_indices ( i , 1 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Add in the two blank lines if ( i /= n ) then call str % append ( nl ) call str % append ( nl ) end if end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdt2d_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for the object. class ( plot_data_tri_2d ), intent ( in ) :: this !! The plot_data_tri_2d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Lines call str % append ( \" with lines\" ) ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Line Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Line Style call str % append ( \" lt \" ) call str % append ( to_string ( this % get_line_style ())) if ( this % get_line_style () /= LINE_SOLID ) then call str % append ( \" dashtype \" ) call str % append ( to_string ( this % get_line_style ())) end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine pdt2d_define_data ( this , tri ) !! Defines the data to plot. class ( plot_data_tri_2d ), intent ( inout ) :: this !! The plot_data_tri_2d object. class ( delaunay_tri_2d ), intent ( in ) :: tri !! The triangulation data to plot. ! Process if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if this % m_x = tri % get_points_x () this % m_y = tri % get_points_y () this % m_indices = tri % get_indices () end subroutine ! ------------------------------------------------------------------------------ pure function pdt2d_get_line_width ( this ) result ( rst ) !! Gets the width of the lines used to draw the triangulation. class ( plot_data_tri_2d ), intent ( in ) :: this !! The plot_data_tri_2d object. real ( real32 ) :: rst !! The line width. rst = this % m_lineWidth end function ! -------------------- subroutine pdt2d_set_line_width ( this , x ) !! Sets the width of the lines used to draw the triangulation. class ( plot_data_tri_2d ), intent ( inout ) :: this !! The plot_data_tri_2d object. real ( real32 ), intent ( in ) :: x !! The line width. if ( x <= 0.0d0 ) then this % m_lineWidth = 1.0d0 else this % m_lineWidth = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pdt2d_get_line_style ( this ) result ( rst ) !! Gets the line style. class ( plot_data_tri_2d ), intent ( in ) :: this !! The plot_data_tri_2d object. integer ( int32 ) :: rst !! The line style. The line style must be one of the following !! constants. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID rst = this % m_lineStyle end function ! -------------------- subroutine pdt2d_set_line_style ( this , x ) !! Sets the line style. class ( plot_data_tri_2d ), intent ( inout ) :: this !! The plot_data_tri_2d object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following !! constants. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_lineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine pdt2d_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_tri_2d ), intent ( inout ) :: this !! The plot_data_tri_2d object. if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_tri_2d.f90.html"},{"title":"fplot_vector_field_plot_data.f90 – FPLOT","text":"Source Code ! fplot_vector_field_plot_data.f90 ! REF: ! http://www.gnuplotting.org/vector-field-from-data-file/ ! http://gnuplot.sourceforge.net/demo_5.4/vector.html ! http://www.gnuplot.info/docs_5.4/Gnuplot_5_4.pdf (pg 79) module fplot_vector_field_plot_data use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: vector_field_plot_data type , extends ( plot_data_colored ) :: vector_field_plot_data !! Defines a two-dimensional vector-field plot data set. real ( real64 ), private , allocatable , dimension (:,:,:) :: m_data !! An M-by-N-by-4 array containing the x, y, dx, and dy plot !! data points. Optionally, a 5th page can be added to define the !! color for each arrow. real ( real64 ), private :: m_arrowSize = 1.0d0 !! The vector size (scaling factor). logical , private :: m_filledHeads = . false . !! Fill the arrow heads? contains procedure , public :: get_data_string => vfpd_get_data_cmd procedure , public :: get_command_string => vfpd_get_cmd procedure , public :: define_data => vfpd_define_data procedure , public :: get_arrow_size => vfpd_get_arrow_size procedure , public :: set_arrow_size => vfpd_set_arrow_size procedure , public :: get_fill_arrow => vfpd_get_fill_arrow procedure , public :: set_fill_arrow => vfpd_set_fill_arrow procedure , public :: get_use_data_dependent_colors => & vfpd_get_use_data_dependent_colors procedure , public :: clear_data => vfpd_clear_data end type contains ! ------------------------------------------------------------------------------ function vfpd_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data to plot. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , m , n character :: delimiter , nl real ( real64 ) :: scaling ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) scaling = this % get_arrow_size () ! Fix later if (. not . allocated ( this % m_data )) then x = \"\" return end if m = size ( this % m_data , 1 ) n = size ( this % m_data , 2 ) ! Need a quick return in the event no data exists ! Process if ( this % get_use_data_dependent_colors ()) then do j = 1 , n do i = 1 , m ! ORDER: X, Y, DX, DY call str % append ( to_string ( this % m_data ( i , j , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , j , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( scaling * this % m_data ( i , j , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( scaling * this % m_data ( i , j , 4 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , j , 5 ))) call str % append ( nl ) end do end do else do j = 1 , n do i = 1 , m ! ORDER: X, Y, DX, DY call str % append ( to_string ( this % m_data ( i , j , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , j , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( scaling * this % m_data ( i , j , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( scaling * this % m_data ( i , j , 4 ))) call str % append ( nl ) end do end do end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function vfpd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this !! vector_field_plot_data object. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Property Definition call str % append ( \" with vectors\" ) if ( this % get_fill_arrow ()) then call str % append ( \" filled head\" ) end if if ( this % get_use_data_dependent_colors ()) then call str % append ( \" lc palette\" ) else clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine vfpd_define_data ( this , x , y , dx , dy , c , err ) !! Defines the data set. class ( vector_field_plot_data ), intent ( inout ) :: this !! The vector_field_plot_data object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! An M-by-N matrix containing the x-locations of each arrow's !! origin. real ( real64 ), intent ( in ), dimension (:,:) :: y !! An M-by-N matrix containing the y-locations of each arrow's !! origin. real ( real64 ), intent ( in ), dimension (:,:) :: dx !! An M-by-N matrix containing the x-direction of each arrow. real ( real64 ), intent ( in ), dimension (:,:) :: dy !! An M-by-N matrix containing the y-direction of each arrow. real ( real64 ), intent ( in ), dimension (:,:), optional :: c !! An optional M-by-N matrix containing information on how to color !! the arrows. The colors are determined by the active colormap. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , j , m , n , flag type ( errors ), target :: deferr class ( errors ), pointer :: errmgr character ( len = 256 ) :: errmsg ! Set up error handling if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Input Checking m = size ( x , 1 ) n = size ( x , 2 ) if ( size ( y , 1 ) /= m . or . size ( y , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"vfpd_define_data\" , & \"y\" , m , n , size ( y , 1 ), size ( y , 2 )) return end if if ( size ( dx , 1 ) /= m . or . size ( dx , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"vfpd_define_data\" , & \"dx\" , m , n , size ( dx , 1 ), size ( dx , 2 )) return end if if ( size ( dy , 1 ) /= m . or . size ( dy , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"vfpd_define_data\" , & \"dy\" , m , n , size ( dy , 1 ), size ( dy , 2 )) return end if if ( present ( c )) then if ( size ( c , 1 ) /= m . or . size ( c , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , & \"vfpd_define_data\" , \"c\" , m , n , size ( c , 1 ), size ( c , 2 )) return end if end if ! Create a name if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Allocate space for the data if ( allocated ( this % m_data )) deallocate ( this % m_data ) if ( present ( c )) then allocate ( this % m_data ( m , n , 5 ), stat = flag ) else allocate ( this % m_data ( m , n , 4 ), stat = flag ) end if if ( flag /= 0 ) then call report_memory_error ( errmgr , \"vfpd_define_data\" , flag ) return end if ! Store the data if ( present ( c )) then do concurrent ( j = 1 : n ) do i = 1 , m this % m_data ( i , j , 1 ) = x ( i , j ) this % m_data ( i , j , 2 ) = y ( i , j ) this % m_data ( i , j , 3 ) = dx ( i , j ) this % m_data ( i , j , 4 ) = dy ( i , j ) this % m_data ( i , j , 5 ) = c ( i , j ) end do end do else do concurrent ( j = 1 : n ) do i = 1 , m this % m_data ( i , j , 1 ) = x ( i , j ) this % m_data ( i , j , 2 ) = y ( i , j ) this % m_data ( i , j , 3 ) = dx ( i , j ) this % m_data ( i , j , 4 ) = dy ( i , j ) end do end do end if ! End return end subroutine ! ------------------------------------------------------------------------------ pure function vfpd_get_arrow_size ( this ) result ( rst ) !! Gets the scaling factor used to determine the arrow size. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. real ( real64 ) :: rst !! The scaling factor. rst = this % m_arrowSize end function ! -------------------- subroutine vfpd_set_arrow_size ( this , x ) !! Sets the scaling factor used to determine the arrow size. class ( vector_field_plot_data ), intent ( inout ) :: this !! The vector_field_plot_data object. real ( real64 ), intent ( in ) :: x !! The scaling factor. this % m_arrowSize = x end subroutine ! ------------------------------------------------------------------------------ pure function vfpd_get_fill_arrow ( this ) result ( rst ) !! Gets a value determining if the arrow heads should be filled. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. logical :: rst !! True if the arrow heads should be filled; else, false. rst = this % m_filledHeads end function ! -------------------- subroutine vfpd_set_fill_arrow ( this , x ) !! Sets a value determining if the arrow heads should be filled. class ( vector_field_plot_data ), intent ( inout ) :: this !! The vector_field_plot_data object. logical , intent ( in ) :: x !! True if the arrow heads should be filled; else, false. this % m_filledHeads = x end subroutine ! ------------------------------------------------------------------------------ pure function vfpd_get_use_data_dependent_colors ( this ) result ( rst ) !! Gets a value indicating if data-dependent coloring should be !! used. This is defined by supplying information on how to scale the !! coloring when calling define_data. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. logical :: rst !! Returns true if data-dependent coloring is being used; else, !! false. rst = . false . if (. not . allocated ( this % m_data )) return rst = size ( this % m_data , 3 ) >= 5 end function ! ------------------------------------------------------------------------------ subroutine vfpd_clear_data ( this ) !! Clears the data from the data set. class ( vector_field_plot_data ), intent ( inout ) :: this !! The vector_field_plot_data object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_vector_field_plot_data.f90.html"},{"title":"fplot_plot_3d.f90 – FPLOT","text":"Source Code ! fplot_plot_3d.f90 module fplot_plot_3d use iso_fortran_env use fplot_plot use fplot_errors use fplot_plot_axis use fplot_constants use fplot_plot_data use fplot_legend use fplot_plot_data_3d use fplot_colors use strings implicit none private public :: plot_3d type , extends ( plot ) :: plot_3d !! A plot object defining a 3D plot. type ( x_axis ), private , pointer :: m_xAxis => null () !! The x-axis. type ( y_axis ), private , pointer :: m_yAxis => null () !! The y-axis. type ( z_axis ), private , pointer :: m_zAxis => null () !! The z-axis. real ( real64 ), private :: m_elevation = 6 0.0d0 !! The elevation angle. real ( real64 ), private :: m_azimuth = 3 0.0d0 !! The azimuth. logical , private :: m_zIntersect = . true . !! Z-axis intersect X-Y plane? logical , private :: m_setMap = . false . !! Set map projection. integer ( int32 ), private :: m_csys = COORDINATES_CARTESIAN !! Plot coordinate system. logical , private :: m_showZMajorGrid = . false . logical , private :: m_showZMinorGrid = . false . type ( color ), private :: m_zMajorGridColor = color ( 204 , 204 , 204 , 0 ) type ( color ), private :: m_zMinorGridColor = color ( 230 , 230 , 230 , 0 ) integer ( int32 ), private :: m_zMajorGridLineStyle = LINE_SOLID integer ( int32 ), private :: m_zMinorGridLineStyle = LINE_DASHED real ( real32 ), private :: m_zMajorGridLineWidth = 1.2 real ( real32 ), private :: m_zMinorGridLineWidth = 0.7 contains final :: p3d_clean_up procedure , public :: initialize => p3d_init procedure , public :: get_command_string => p3d_get_cmd procedure , public :: get_x_axis => p3d_get_x_axis procedure , public :: get_y_axis => p3d_get_y_axis procedure , public :: get_z_axis => p3d_get_z_axis procedure , public :: get_elevation => p3d_get_elevation procedure , public :: set_elevation => p3d_set_elevation procedure , public :: get_azimuth => p3d_get_azimuth procedure , public :: set_azimuth => p3d_set_azimuth procedure , public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure , public :: set_z_intersect_xy => p3d_set_z_axis_intersect procedure , public :: get_use_map_view => p3d_get_use_map_view procedure , public :: set_use_map_view => p3d_set_use_map_view procedure , public :: get_coordinate_system => p3d_get_csys procedure , public :: set_coordinate_system => p3d_set_csys procedure , public :: set_x_axis_title => p3d_set_x_axis_title procedure , public :: set_y_axis_title => p3d_set_y_axis_title procedure , public :: set_z_axis_title => p3d_set_z_axis_title procedure , public :: get_show_z_major_grid => p3d_get_show_z_major_grid procedure , public :: set_show_z_major_grid => p3d_set_show_z_major_grid procedure , public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid procedure , public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid procedure , public :: get_z_major_grid_color => p3d_get_z_major_grid_color procedure , public :: set_z_major_grid_color => p3d_set_z_major_grid_color procedure , public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color procedure , public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color procedure , public :: get_z_major_grid_line_style => & p3d_get_z_major_grid_line_style procedure , public :: set_z_major_grid_line_style => & p3d_set_z_major_grid_line_style procedure , public :: get_z_minor_grid_line_style => & p3d_get_z_minor_grid_line_style procedure , public :: set_z_minor_grid_line_style => & p3d_set_z_minor_grid_line_style procedure , public :: get_z_major_grid_line_width => & p3d_get_z_major_grid_line_width procedure , public :: set_z_major_grid_line_width => & p3d_set_z_major_grid_line_width procedure , public :: get_z_minor_grid_line_width => & p3d_get_z_minor_grid_line_width procedure , public :: set_z_minor_grid_line_width => & p3d_set_z_minor_grid_line_width procedure , public :: p3d_push_data generic , public :: push => p3d_push_data end type contains ! ------------------------------------------------------------------------------ subroutine p3d_clean_up ( this ) !! Cleans up resources held by the plot_3d object. type ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. call this % free_resources () if ( associated ( this % m_xAxis )) then deallocate ( this % m_xAxis ) nullify ( this % m_xAxis ) end if if ( associated ( this % m_yAxis )) then deallocate ( this % m_yAxis ) nullify ( this % m_yAxis ) end if if ( associated ( this % m_zAxis )) then deallocate ( this % m_zAxis ) nullify ( this % m_zAxis ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_init ( this , term , fname , err ) !! Initializes the plot_3d object. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Initialize the base class ! call plt_init(this, term, fname, errmgr) call this % plot % initialize ( term , fname , errmgr ) ! Process flag = 0 if (. not . associated ( this % m_xAxis )) then allocate ( this % m_xAxis , stat = flag ) end if if ( flag == 0 . and . . not . associated ( this % m_yAxis )) then allocate ( this % m_yAxis , stat = flag ) end if if ( flag == 0 . and . . not . associated ( this % m_zAxis )) then allocate ( this % m_zAxis , stat = flag ) end if ! Error Checking if ( flag /= 0 ) then call report_memory_error ( errmgr , \"p3d_init\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function p3d_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot_3d object. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , n real ( real64 ) :: lmargin , rmargin , tmargin , bmargin class ( plot_data ), pointer :: ptr class ( plot_axis ), pointer :: xAxis , yAxis , zAxis type ( legend ), pointer :: leg type ( color ) :: clr ! class(plot_label), pointer :: lbl ! Initialization call str % initialize () ! Call the base routine call str % append ( this % plot % get_command_string ()) ! Grid if ( this % get_show_x_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid xtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_x_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mxtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_y_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid ytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_y_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_z_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid ztics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_z_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_z_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_z_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_z_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mztics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_z_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_z_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_z_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_gridlines ()) then ! X call str % append ( new_line ( 'a' )) call str % append ( 'set grid xtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) ! Y call str % append ( new_line ( 'a' )) call str % append ( 'set grid ytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) ! Z call str % append ( new_line ( 'a' )) call str % append ( 'set grid ztics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_z_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_z_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_z_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if ! Title n = len_trim ( this % get_title ()) if ( n > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( 'set title \"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if ! Margin lmargin = this % get_left_margin () rmargin = this % get_right_margin () tmargin = this % get_top_margin () bmargin = this % get_bottom_margin () if ( lmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set lmargin at screen \" ) call str % append ( to_string ( lmargin )) end if if ( rmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set rmargin at screen \" ) call str % append ( to_string ( rmargin )) end if if ( tmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set tmargin at screen \" ) call str % append ( to_string ( tmargin )) end if if ( bmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set bmargin at screen \" ) call str % append ( to_string ( bmargin )) end if ! Axes call str % append ( new_line ( 'a' )) xAxis => this % get_x_axis () if ( associated ( xAxis )) call str % append ( xAxis % get_command_string ()) call str % append ( new_line ( 'a' )) yAxis => this % get_y_axis () if ( associated ( yAxis )) call str % append ( yAxis % get_command_string ()) call str % append ( new_line ( 'a' )) zAxis => this % get_z_axis () if ( associated ( zAxis )) call str % append ( zAxis % get_command_string ()) ! Tic Marks if (. not . this % get_tics_inward ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set tics out\" ) end if if ( xAxis % get_zero_axis () . or . yAxis % get_zero_axis () . or . & zAxis % get_zero_axis ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set tics axis\" ) end if ! Border if ( this % get_draw_border ()) then n = 31 else n = 0 if (. not . xAxis % get_zero_axis ()) n = n + 1 if (. not . yAxis % get_zero_axis ()) n = n + 4 if (. not . zAxis % get_zero_axis ()) n = n + 16 call str % append ( new_line ( 'a' )) call str % append ( \"set xtics nomirror\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set ytics nomirror\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set ztics nomirror\" ) end if call str % append ( new_line ( 'a' )) if ( n > 0 ) then call str % append ( \"set border \" ) call str % append ( to_string ( n )) else call str % append ( \"unset border\" ) end if call str % append ( new_line ( 'a' )) call str % append ( \"set border linewidth \" ) call str % append ( to_string ( this % get_border_line_width ())) ! Force the z-axis to move to the x-y plane if ( this % get_z_intersect_xy ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set ticslevel 0\" ) end if ! Scaling if ( this % get_axis_equal ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set view equal xyz\" ) end if ! Legend call str % append ( new_line ( 'a' )) leg => this % get_legend () if ( associated ( leg )) call str % append ( leg % get_command_string ()) ! ! Labels ! do i = 1, this%get_label_count() ! lbl => this%get_label(i) ! if (.not.associated(lbl)) cycle ! call str%append(new_line('a')) ! call str%append(lbl%get_command_string()) ! end do ! Orientation call str % append ( new_line ( 'a' )) call str % append ( \"set view \" ) if ( this % get_use_map_view ()) then call str % append ( \"map\" ) else call str % append ( to_string ( this % get_elevation ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_azimuth ())) end if ! Coordinate system if ( this % get_coordinate_system () == COORDINATES_CYLINDRICAL ) then call str % append ( new_line ( 'a' )) call str % append ( \"set mapping cylindrical\" ) else if ( this % get_coordinate_system () == COORDINATES_SPHERICAL ) then call str % append ( new_line ( 'a' )) call str % append ( \"set mapping spherical\" ) end if ! Define the datablock n = this % get_count () do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) call str % append ( \"$\" ) call str % append ( ptr % get_datablock_name ()) call str % append ( \" << EOD\" ) call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"EOD\" ) end do ! Define the plot function and data formatting commands call str % append ( new_line ( 'a' )) call str % append ( \"splot \" ) do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( ptr % get_command_string ()) if ( i /= n ) call str % append ( \", \" ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function p3d_get_x_axis ( this ) result ( ptr ) !! Gets the x-axis object. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. class ( plot_axis ), pointer :: ptr !! A pointer to the x-axis object. ptr => this % m_xAxis end function ! ------------------------------------------------------------------------------ function p3d_get_y_axis ( this ) result ( ptr ) !! Gets the y-axis object. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. class ( plot_axis ), pointer :: ptr !! A pointer to the y-axis object. ptr => this % m_yAxis end function ! ------------------------------------------------------------------------------ function p3d_get_z_axis ( this ) result ( ptr ) !! Gets the z-axis object. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. class ( plot_axis ), pointer :: ptr !! A pointer to the z-axis object. ptr => this % m_zAxis end function ! ------------------------------------------------------------------------------ pure function p3d_get_elevation ( this ) result ( x ) !! Gets the plot elevation angle. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. real ( real64 ) :: x !! The elevation angle, in degrees. x = this % m_elevation end function ! -------------------- subroutine p3d_set_elevation ( this , x ) !! Sets the plot elevation angle. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. real ( real64 ), intent ( in ) :: x !! The elevation angle, in degrees. this % m_elevation = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_azimuth ( this ) result ( x ) !! Gets the plot azimuth angle. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. real ( real64 ) :: x !! The azimuth angle, in degrees. x = this % m_azimuth end function ! -------------------- subroutine p3d_set_azimuth ( this , x ) !! Sets the plot azimuth angle. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. real ( real64 ), intent ( in ) :: x !! The azimuth angle, in degrees. this % m_azimuth = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_axis_intersect ( this ) result ( x ) !! Gets a value determining if the z-axis should intersect the !! x-y plane. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. logical :: x !! Returns true if the z-axis should intersect the x-y plane; else, !! false to allow the z-axis to float. x = this % m_zIntersect end function ! -------------------- subroutine p3d_set_z_axis_intersect ( this , x ) !! Sets a value determining if the z-axis should intersect the !! x-y plane. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. logical , intent ( in ) :: x !! Set to true if the z-axis should intersect the x-y plane; else, !! false to allow the z-axis to float. this % m_zIntersect = x end subroutine ! ADDED March 29, 2023 - JAC ! ------------------------------------------------------------------------------ pure function p3d_get_use_map_view ( this ) result ( rst ) !! Gets a value determining if the view should be set to a 2D !! map view. If true, the azimuth and elevation terms are ignored. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. logical :: rst !! Returns true if the map view will be used; else, false. rst = this % m_setMap end function ! -------------------- subroutine p3d_set_use_map_view ( this , x ) !! Sets a value determining if the view should be set to a 2D !! map view. If true, the azimuth and elevation terms are ignored. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. logical , intent ( in ) :: x !! Seturns true if the map view will be used; else, false. this % m_setMap = x end subroutine ! ADDED Sept. 15, 2023 - JAC ! ------------------------------------------------------------------------------ pure function p3d_get_csys ( this ) result ( rst ) !! Gets a value determining the coordinate system. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. integer ( int32 ) :: rst !! The coordinate system ID, which must be one of the following. !! !! - COORDINATES_CARTESIAN !! !! - COORDINATES_CYLINDRICAL !! !! - COORDINATES_SPHERICAL rst = this % m_csys end function ! -------------------- subroutine p3d_set_csys ( this , x ) !! Sets a value determining the coordinate system. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. integer ( int32 ), intent ( in ) :: x !! The coordinate system ID, which must be one of the following. !! !! - COORDINATES_CARTESIAN !! !! - COORDINATES_CYLINDRICAL !! !! - COORDINATES_SPHERICAL if ( x /= COORDINATES_CARTESIAN . and . & x /= COORDINATES_CYLINDRICAL . and . & x /= COORDINATES_SPHERICAL ) & then ! Set to default as the input is nonsensical this % m_csys = COORDINATES_CARTESIAN else this % m_csys = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_set_x_axis_title ( this , x ) !! Sets the title associated with the plot's x-axis. class ( plot_3d ), intent ( inout ) :: this !! The [[plot_3d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_xAxis )) then call this % m_xAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_set_y_axis_title ( this , x ) !! Sets the title associated with the plot's y-axis. class ( plot_3d ), intent ( inout ) :: this !! The [[plot_3d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_yAxis )) then call this % m_yAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_set_z_axis_title ( this , x ) !! Sets the title associated with the plot's z-axis. class ( plot_3d ), intent ( inout ) :: this !! The [[plot_3d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_zAxis )) then call this % m_zAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_show_z_major_grid ( this ) result ( x ) !! Gets a value determining if the z-axis major grid should be shown. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showZMajorGrid end function ! -------------------- subroutine p3d_set_show_z_major_grid ( this , x ) !! Sets a value determining if the z-axis major grid should be shown. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showZMajorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_show_z_minor_grid ( this ) result ( x ) !! Gets a value determining if the z-axis minor grid should be shown. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showZMinorGrid end function ! -------------------- subroutine p3d_set_show_z_minor_grid ( this , x ) !! Sets a value determining if the z-axis minor grid should be shown. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showZMinorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_major_grid_color ( this ) result ( x ) !! Gets the color of the z-axis major grid lines. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. type ( color ) :: x !! The color. x = this % m_zMajorGridColor end function ! -------------------- subroutine p3d_set_z_major_grid_color ( this , x ) !! Sets the color of the z-axis major grid lines. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. type ( color ), intent ( in ) :: x !! The color. this % m_zMajorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_minor_grid_color ( this ) result ( x ) !! Gets the color of the z-axis minor grid lines. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. type ( color ) :: x !! The color. x = this % m_zMinorGridColor end function ! -------------------- subroutine p3d_set_z_minor_grid_color ( this , x ) !! Sets the color of the z-axis minor grid lines. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. type ( color ), intent ( in ) :: x !! The color. this % m_zMinorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_major_grid_line_style ( this ) result ( x ) !! Gets the line style used for the z-axis major grid lines. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_zMajorGridLineStyle end function ! -------------------- subroutine p3d_set_z_major_grid_line_style ( this , x ) !! Sets the line style used for the z-axis major grid lines. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_zMajorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_minor_grid_line_style ( this ) result ( x ) !! Gets the line style used for the z-axis minor grid lines. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_zMinorGridLineStyle end function ! -------------------- subroutine p3d_set_z_minor_grid_line_style ( this , x ) !! Sets the line style used for the z-axis minor grid lines. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_zMinorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_major_grid_line_width ( this ) result ( x ) !! Gets the width of the z-axis major grid lines, in pixels. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. real ( real32 ) :: x !! The line width. x = this % m_zMajorGridLineWidth end function ! -------------------- subroutine p3d_set_z_major_grid_line_width ( this , x ) !! Sets the width of the z-axis major grid lines, in pixels. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_zMajorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_minor_grid_line_width ( this ) result ( x ) !! Gets the width of the z-axis minor grid lines, in pixels. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. real ( real32 ) :: x !! The line width. x = this % m_zMinorGridLineWidth end function ! -------------------- subroutine p3d_set_z_minor_grid_line_width ( this , x ) !! Sets the width of the z-axis minor grid lines, in pixels. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_zMinorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_push_data ( this , x , y , z , lw , name , ls , lc ) !! Adds a data set to the plot. class ( plot_3d ), intent ( inout ) :: this !! The [[plot_3d]] object. real ( real64 ), intent ( in ), dimension (:) :: x !! The x-values. real ( real64 ), intent ( in ), dimension ( size ( x )) :: y !! The y-values. real ( real64 ), intent ( in ), dimension ( size ( x )) :: z !! The z-values. real ( real32 ), intent ( in ), optional :: lw !! The line width. character ( len = * ), intent ( in ), optional :: name !! A name to associate with the data set. integer ( int32 ), intent ( in ), optional :: ls !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID type ( color ), intent ( in ), optional :: lc !! The line color. type ( plot_data_3d ) :: pd call pd % define_data ( x , y , z ) if ( present ( lw )) call pd % set_line_width ( lw ) if ( present ( name )) call pd % set_name ( name ) if ( present ( ls )) call pd % set_line_style ( ls ) if ( present ( lc )) call pd % set_line_color ( lc ) call this % push ( pd ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_3d.f90.html"},{"title":"fplot_terminal.f90 – FPLOT","text":"Source Code ! fplot_terminal.f90 module fplot_terminal use iso_fortran_env use fplot_plot_object use fplot_constants use strings implicit none private public :: terminal public :: file_terminal public :: term_get_string_result type , abstract , extends ( plot_object ) :: terminal !! A GNUPLOT terminal object. private integer ( int32 ) :: m_windowHeight = GNUPLOT_DEFAULT_WINDOW_HEIGHT !! The window height, in pixels. integer ( int32 ) :: m_windowWidth = GNUPLOT_DEFAULT_WINDOW_WIDTH !! The window width, in pixels. integer ( int32 ) :: m_termID = 0 !! The terminal ID number. character ( len = GNUPLOT_MAX_LABEL_LENGTH ) :: m_title = \"\" !! The plot window title. logical :: m_hasTitle = . false . !! Determines if the plot title is defined. character ( len = GNUPLOT_MAX_LABEL_LENGTH ) :: m_fontName = & GNUPLOT_DEFAULT_FONTNAME !! The font used by the graph. integer ( int32 ) :: m_fontSize = GNUPLOT_DEFAULT_FONT_SIZE !! The size of the font used by the graph. contains procedure , public :: get_window_width => term_get_window_width procedure , public :: set_window_width => term_set_window_width procedure , public :: get_window_height => term_get_window_height procedure , public :: set_window_height => term_set_window_height procedure , public :: get_command_string => term_get_command_string procedure , public :: get_plot_window_number => & term_get_plot_window_number procedure , public :: set_plot_window_number => & term_set_plot_window_number procedure , public :: get_title => term_get_title procedure , public :: set_title => term_set_title procedure , public :: get_font_name => term_get_font_name procedure , public :: set_font_name => term_set_font_name procedure , public :: get_font_size => term_get_font_size procedure , public :: set_font_size => term_set_font_size procedure ( term_get_string_result ), deferred , public :: get_id_string end type interface function term_get_string_result ( this ) result ( x ) !! Retrieves a string from a terminal. import terminal class ( terminal ), intent ( in ) :: this !! The terminal object. character ( len = :), allocatable :: x !! The string. end function end interface type , abstract , extends ( terminal ) :: file_terminal !! Defines a terminal meant to save results directly to file !! (e.g. PNG, SVG, etc.). character ( len = GNUPLOT_MAX_PATH_LENGTH ), private :: m_fname = \"default.plt\" !! The filename. contains procedure , public :: get_filename => fterm_get_filename procedure , public :: set_filename => fterm_set_filename procedure , public :: get_command_string => fterm_get_command_string end type contains ! ------------------------------------------------------------------------------ pure function term_get_window_width ( this ) result ( x ) !! Gets the width of the plot window. class ( terminal ), intent ( in ) :: this !! The terminal object. integer :: x !! The width of the plot window. x = this % m_windowWidth end function ! -------------------- subroutine term_set_window_width ( this , x ) !! Sets the width of the plot window. class ( terminal ), intent ( inout ) :: this !! The terminal object. integer , intent ( in ) :: x !! The width of the plot window. if ( x == 0 ) then this % m_windowWidth = GNUPLOT_DEFAULT_WINDOW_WIDTH else this % m_windowWidth = abs ( x ) end if end subroutine ! ------------------------------------------------------------------------------ pure function term_get_window_height ( this ) result ( x ) !! Gets the height of the plot window. class ( terminal ), intent ( in ) :: this !! The terminal object. integer :: x !! The height of the plot window. x = this % m_windowHeight end function ! -------------------- subroutine term_set_window_height ( this , x ) !! Sets the height of the plot window. class ( terminal ), intent ( inout ) :: this !! The terminal object. integer , intent ( in ) :: x !! The height of the plot window. if ( x == 0 ) then this % m_windowHeight = GNUPLOT_DEFAULT_WINDOW_HEIGHT else this % m_windowHeight = abs ( x ) end if end subroutine ! ------------------------------------------------------------------------------ pure function term_get_plot_window_number ( this ) result ( x ) !! Gets the targeted plot window number. class ( terminal ), intent ( in ) :: this !! The terminal object. integer ( int32 ) :: x !! The plot window number. x = this % m_termID end function ! -------------------- subroutine term_set_plot_window_number ( this , x ) !! Sets the targeted plot window number. class ( terminal ), intent ( inout ) :: this !! The terminal object. integer ( int32 ), intent ( in ) :: x !! The plot window number. this % m_termID = x end subroutine ! ------------------------------------------------------------------------------ function term_get_title ( this ) result ( str ) !! Gets the plot window's title. class ( terminal ), intent ( in ) :: this !! The terminal object. character ( len = :), allocatable :: str !! The title. integer ( int32 ) :: n n = len_trim ( str ) allocate ( character ( len = n ) :: str ) str = trim ( this % m_title ) end function ! -------------------- subroutine term_set_title ( this , txt ) !! Sets the plot window's title. class ( terminal ), intent ( inout ) :: this !! The terminal object. character ( len = * ), intent ( in ) :: txt !! The title. integer ( int32 ) :: n n = min ( len_trim ( txt ), GNUPLOT_MAX_LABEL_LENGTH ) this % m_title = \"\" if ( n /= 0 ) then this % m_title ( 1 : n ) = txt ( 1 : n ) this % m_hasTitle = . true . else this % m_hasTitle = . false . end if end subroutine ! ------------------------------------------------------------------------------ function term_get_font_name ( this ) result ( name ) !! Gets the name of the font used for text displayed by the graph. class ( terminal ), intent ( in ) :: this !! The terminal object. character ( len = :), allocatable :: name !! The font name. integer ( int32 ) :: n n = len_trim ( this % m_fontName ) allocate ( character ( len = n ) :: name ) name = trim ( this % m_fontName ) end function ! -------------------- subroutine term_set_font_name ( this , name ) !! Sets the name of the font used for text displayed by the graph. class ( terminal ), intent ( inout ) :: this !! The terminal object. character ( len = * ), intent ( in ) :: name !! The font name. integer ( int32 ) :: n n = min ( len_trim ( name ), GNUPLOT_MAX_LABEL_LENGTH ) this % m_fontName = \"\" if ( n == 0 ) then this % m_fontName = GNUPLOT_DEFAULT_FONTNAME else this % m_fontName ( 1 : n ) = name ( 1 : n ) end if end subroutine ! ------------------------------------------------------------------------------ pure function term_get_font_size ( this ) result ( sz ) !! Gets the size of the font used by the graph. class ( terminal ), intent ( in ) :: this !! The terminal object. integer ( int32 ) :: sz !! The font size, in points. sz = this % m_fontSize end function ! -------------------- subroutine term_set_font_size ( this , sz ) !! Sets the size of the font used by the graph. class ( terminal ), intent ( inout ) :: this !! The terminal object. integer ( int32 ), intent ( in ) :: sz !! The font size, in points. if ( sz == 0 ) then this % m_fontSize = GNUPLOT_DEFAULT_FONT_SIZE else this % m_fontSize = abs ( sz ) end if end subroutine ! ------------------------------------------------------------------------------ function term_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( terminal ), intent ( in ) :: this !! The terminal object. character ( len = :), allocatable :: x !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str ! Process call str % initialize () call str % append ( \"set term \" ) call str % append ( this % get_id_string ()) call str % append ( \" enhanced \" ) call str % append ( to_string ( this % get_plot_window_number ())) call str % append ( \" font \" ) call str % append ( '\"' ) call str % append ( this % get_font_name ()) call str % append ( ',' ) call str % append ( to_string ( this % get_font_size ())) call str % append ( '\"' ) call str % append ( \" size \" ) call str % append ( to_string ( this % get_window_width ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_window_height ())) if ( this % m_hasTitle ) then call str % append ( ' title \"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if x = char ( str % to_string ()) end function ! ****************************************************************************** ! FILE_TERMINAL ! ------------------------------------------------------------------------------ pure function fterm_get_filename ( this ) result ( txt ) !! Gets the filename for the output file. class ( file_terminal ), intent ( in ) :: this !! The file_terminal object. character ( len = :), allocatable :: txt !! The filename. integer ( int32 ) :: n n = len_trim ( this % m_fname ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_fname ) end function ! -------------------- subroutine fterm_set_filename ( this , txt ) !! Sets the filename for the output file. class ( file_terminal ), intent ( inout ) :: this !! The file_terminal object. character ( len = * ), intent ( in ) :: txt !! The filename. integer ( int32 ) :: n n = min ( len_trim ( txt ), GNUPLOT_MAX_PATH_LENGTH ) this % m_fname = \"\" if ( n /= 0 ) then this % m_fname ( 1 : n ) = txt ( 1 : n ) else this % m_fname = \"default.plt\" end if end subroutine ! ------------------------------------------------------------------------------ function fterm_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( file_terminal ), intent ( in ) :: this !! The file_terminal object. character ( len = :), allocatable :: x !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str ! Process call str % initialize () call str % append ( \"set term \" ) call str % append ( this % get_id_string ()) call str % append ( \" font \" ) call str % append ( '\"' ) call str % append ( this % get_font_name ()) call str % append ( ',' ) call str % append ( to_string ( this % get_font_size ())) call str % append ( '\"' ) call str % append ( \" size \" ) call str % append ( to_string ( this % get_window_width ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_window_height ())) call str % append ( new_line ( 'a' )) call str % append ( \"set output \" ) call str % append ( '\"' ) call str % append ( this % get_filename ()) call str % append ( '\"' ) x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_terminal.f90.html"},{"title":"fplot_plot_data.f90 – FPLOT","text":"Source Code ! fplot_plot_data.f90 module fplot_plot_data use iso_fortran_env use fplot_plot_object use fplot_constants use fplot_colors use strings use fplot_errors implicit none private public :: plot_data public :: pd_get_string_result public :: pd_clear_action public :: plot_data_colored public :: scatter_plot_data public :: line_plot_data public :: spd_get_int_value public :: spd_get_string_result public :: spd_get_value public :: spd_set_value public :: lpd_get_cmd public :: spd_get_cmd type , abstract , extends ( plot_object ) :: plot_data !! A container for plot data. private character ( len = PLOTDATA_MAX_NAME_LENGTH ) :: m_name = \"\" !! The name to associate with the data set. character ( len = PLOTDATA_MAX_NAME_LENGTH ) :: m_datablockName = \"\" !! The name to associate with the datablock used to store the data !! in the actual plot file. contains procedure , public :: get_name => pd_get_name procedure , public :: set_name => pd_set_name procedure , public :: get_datablock_name => pd_get_datablock_name procedure , public :: set_datablock_name => pd_set_datablock_name procedure , public :: create_unique_datablock_name => & pd_create_unique_datablock_name procedure , public :: clear_all => pd_clear procedure ( pd_get_string_result ), deferred , public :: get_data_string procedure ( pd_clear_action ), deferred , public :: clear_data end type interface function pd_get_string_result ( this ) result ( x ) !! Retrieves a string from a plot_data object. import plot_data class ( plot_data ), intent ( in ) :: this !! The plot_data object. character ( len = :), allocatable :: x !! The string. end function subroutine pd_clear_action ( this ) !! Performs a clearing operation. import plot_data class ( plot_data ), intent ( inout ) :: this !! The plot_data object. end subroutine end interface type , abstract , extends ( plot_data ) :: plot_data_colored !! Defines a colored plot data set. private type ( color ) :: m_color = CLR_BLUE !! The line color. logical :: m_useAutoColor = . true . !! Let the object choose colors automatically? integer ( int32 ) :: m_colorIndex = 1 !! The color index to use, assuming we're using auto color contains procedure , public :: get_line_color => pdc_get_line_color procedure , public :: set_line_color => pdc_set_line_color procedure , public :: get_color_index => pdc_get_color_index procedure , public :: set_color_index => pdc_set_color_index end type type , abstract , extends ( plot_data_colored ) :: line_plot_data !! A plot_data object for describing line series data. logical , private :: m_drawLine = . true . !! Draw a line connecting the dots? logical , private :: m_drawMarkers = . false . !! Draw the markers? real ( real32 ), private :: m_lineWidth = 2.0 !! Line width. integer ( int32 ), private :: m_lineStyle = LINE_SOLID !! Line style. integer ( int32 ), private :: m_markerType = MARKER_FILLED_CIRCLE !! Marker type. real ( real32 ), private :: m_markerSize = 1.5 !! Marker size multiplier. integer ( int32 ), private :: m_markerFrequency = 1 !! Marker frequency. logical , private :: m_impulses = . false . !! Draw the impulse lines? contains procedure , public :: get_command_string => lpd_get_cmd procedure , public :: get_line_width => lpd_get_line_width procedure , public :: set_line_width => lpd_set_line_width procedure , public :: get_line_style => lpd_get_line_style procedure , public :: set_line_style => lpd_set_line_style procedure , public :: get_draw_line => lpd_get_draw_line procedure , public :: set_draw_line => lpd_set_draw_line procedure , public :: get_draw_markers => lpd_get_draw_markers procedure , public :: set_draw_markers => lpd_set_draw_markers procedure , public :: get_marker_style => lpd_get_marker_style procedure , public :: set_marker_style => lpd_set_marker_style procedure , public :: get_marker_scaling => lpd_get_marker_scaling procedure , public :: set_marker_scaling => lpd_set_marker_scaling procedure , public :: get_marker_frequency => lpd_get_marker_frequency procedure , public :: set_marker_frequency => lpd_set_marker_frequency procedure , public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure , public :: set_draw_impulses => lpd_set_draw_impulse_lines end type type , abstract , extends ( line_plot_data ) :: scatter_plot_data !! A plot_data object for describing scatter plot data sets. logical , private :: m_simplifyData = . true . !! True if large data sets should be simplified before sending to !! GNUPLOT. real ( real64 ), private :: m_simplifyFactor = 1.0d-3 !! A scaling factor used to establish the simplification tolerance. !! The simplification tolerance is established by multiplying this !! factor by the range in the dependent variable data. logical , private :: m_dataDependentColors = . false . !! Determines if the data should utilize data-dependent colors. logical , private :: m_filledCurve = . false . !! Fill the curve? logical , private :: m_useVariableSizePoints = . false . !! Use variable size data points? contains procedure , public :: get_command_string => spd_get_cmd procedure ( spd_get_int_value ), deferred , public :: get_count procedure ( spd_get_value ), deferred , public :: get_x procedure ( spd_set_value ), deferred , public :: set_x procedure ( spd_get_value ), deferred , public :: get_y procedure ( spd_set_value ), deferred , public :: set_y procedure ( spd_get_string_result ), deferred , public :: get_axes_string procedure , public :: get_simplify_data => spd_get_simplify_data procedure , public :: set_simplify_data => spd_set_simplify_data procedure , public :: get_simplification_factor => spd_get_simplify_factor procedure , public :: set_simplification_factor => spd_set_simplify_factor procedure , public :: get_use_data_dependent_colors => & spd_get_data_dependent_colors procedure , public :: set_use_data_dependent_colors => & spd_set_data_dependent_colors procedure , public :: get_fill_curve => spd_get_filled procedure , public :: set_fill_curve => spd_set_filled procedure , public :: get_use_variable_size_points => spd_get_use_var_point_size procedure , public :: set_use_variable_size_points => spd_set_use_var_point_size end type interface pure function spd_get_value ( this , index ) result ( x ) !! Gets an indexed value from the scatter_plot_data object. use , intrinsic :: iso_fortran_env , only : int32 , real64 import scatter_plot_data class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. integer ( int32 ), intent ( in ) :: index !! The index. real ( real64 ) :: x !! The value. end function subroutine spd_set_value ( this , index , x ) !! Sets an indexed value from the scatter_plot_data object. use , intrinsic :: iso_fortran_env , only : int32 , real64 import scatter_plot_data class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. integer ( int32 ), intent ( in ) :: index !! The index. real ( real64 ), intent ( in ) :: x !! The value. end subroutine pure function spd_get_int_value ( this ) result ( x ) !! Gets an integer value from the scatter_plot_data object. use , intrinsic :: iso_fortran_env , only : int32 import scatter_plot_data class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. integer ( int32 ) :: x !! The value. end function function spd_get_string_result ( this ) result ( x ) !! Gets a string value from the scatter_plot_data object. import scatter_plot_data class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. character ( len = :), allocatable :: x !! The string. end function end interface contains ! ------------------------------------------------------------------------------ pure function pd_get_name ( this ) result ( txt ) !! Gets the name to associate with this data set. class ( plot_data ), intent ( in ) :: this !! The plot_data object. character ( len = :), allocatable :: txt !! The name. txt = trim ( this % m_name ) end function ! -------------------- subroutine pd_set_name ( this , txt ) !! Sets the name to associate with this data set. class ( plot_data ), intent ( inout ) :: this !! The plot_data object. character ( len = * ), intent ( in ) :: txt !! The name. integer ( int32 ) :: n n = min ( len ( txt ), PLOTDATA_MAX_NAME_LENGTH ) this % m_name = \"\" if ( n /= 0 ) then this % m_name ( 1 : n ) = txt ( 1 : n ) end if end subroutine ! ------------------------------------------------------------------------------ pure function pd_get_datablock_name ( this ) result ( rst ) !! Gets the name to associate with the datablock in the actual GNUPLOT !! plot file. class ( plot_data ), intent ( in ) :: this !! The plot_data object. character ( len = :), allocatable :: rst !! The name. rst = trim ( this % m_datablockName ) end function ! -------------------- subroutine pd_set_datablock_name ( this , x ) !! Sets the name to associate with the datablock in the actual GNUPLOT !! plot file. class ( plot_data ), intent ( inout ) :: this !! The plot_data object. character ( len = * ), intent ( in ) :: x !! The name. integer ( int32 ) :: n n = min ( len ( x ), PLOTDATA_MAX_NAME_LENGTH ) this % m_datablockName = \"\" if ( n /= 0 ) then this % m_datablockName ( 1 : n ) = x ( 1 : n ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine pd_create_unique_datablock_name ( this ) !! Creates a unique name for the GNUPLOT datablock representing this !! data set. class ( plot_data ), intent ( inout ) :: this !! The plot_data object. type ( string ) :: str real ( real64 ) :: r , rng integer ( int32 ) :: count call random_seed () call random_number ( r ) r = r * huge ( count ) count = floor ( r ) str = \"PlotData\" // to_string ( count ) call this % set_datablock_name ( char ( str )) end subroutine ! ------------------------------------------------------------------------------ subroutine pd_clear ( this ) !! Clears the data set by removing stored data and clearing the !! GNUPLOT datablock name. This routine also calls clear_data to !! ensure the data is cleared from the data set as well as the datablock !! name. class ( plot_data ), intent ( inout ) :: this !! The plot_data object. call this % set_datablock_name ( \"\" ) call this % clear_data () end subroutine ! ****************************************************************************** ! PLOT_DATA_COLORED ! ------------------------------------------------------------------------------ pure function pdc_get_line_color ( this ) result ( x ) !! Gets the object color. class ( plot_data_colored ), intent ( in ) :: this !! The plot_data_colored object. type ( color ) :: x !! The color. if ( this % m_useAutoColor ) then x = color_list ( this % get_color_index ()) else x = this % m_color end if end function ! -------------------- subroutine pdc_set_line_color ( this , x ) !! Sets the object color. class ( plot_data_colored ), intent ( inout ) :: this !! The plot_data_colored object. type ( color ), intent ( in ) :: x !! The color. this % m_color = x this % m_useAutoColor = . false . end subroutine ! ------------------------------------------------------------------------------ pure function pdc_get_color_index ( this ) result ( x ) !! Gets the color index. class ( plot_data_colored ), intent ( in ) :: this !! The plot_data_colored object. integer ( int32 ) :: x !! The index value. x = this % m_colorIndex end function ! -------------------- subroutine pdc_set_color_index ( this , x ) !! Sets the color index. class ( plot_data_colored ), intent ( inout ) :: this !! The plot_data_colored object. integer ( int32 ), intent ( in ) :: x !! The index value. this % m_colorIndex = x end subroutine ! ****************************************************************************** ! LINE_PLOT_DATA ! ------------------------------------------------------------------------------ pure function lpd_get_line_width ( this ) result ( x ) !! Gets the width of the line, in pixels. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. real ( real32 ) :: x !! The line width. x = this % m_lineWidth end function ! -------------------- subroutine lpd_set_line_width ( this , x ) !! Sets the width of the line, in pixels. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_lineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_line_style ( this ) result ( x ) !! Gets the line style. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_lineStyle end function ! -------------------- subroutine lpd_set_line_style ( this , x ) !! Sets the line style. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_lineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_draw_line ( this ) result ( x ) !! Gets a value determining if a line should be drawn. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. logical :: x !! Returns true if the line should be drawn; else, false. x = this % m_drawLine end function ! -------------------- subroutine lpd_set_draw_line ( this , x ) !! Sets a value determining if a line should be drawn. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. logical , intent ( in ) :: x !! Set to true if the line should be drawn; else, false. this % m_drawLine = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_draw_markers ( this ) result ( x ) !! Gets a value determining if data point markers should be drawn. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. logical :: x !! Returns true if the markers should be drawn; else, false. x = this % m_drawMarkers end function ! -------------------- subroutine lpd_set_draw_markers ( this , x ) !! Sets a value determining if data point markers should be drawn. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. logical , intent ( in ) :: x !! Set to true if the markers should be drawn; else, false. this % m_drawMarkers = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_marker_style ( this ) result ( x ) !! Gets the marker style. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. integer ( int32 ) :: x !! The marker type. The marker type must be one of the following: !! !! - MARKER_ASTERISK !! !! - MARKER_EMPTY_CIRCLE !! !! - MARKER_EMPTY_NABLA !! !! - MARKER_EMPTY_RHOMBUS !! !! - MARKER_EMPTY_SQUARE !! !! - MARKER_EMPTY_TRIANGLE !! !! - MARKER_FILLED_CIRCLE !! !! - MARKER_FILLED_NABLA !! !! - MARKER_FILLED_RHOMBUS !! !! - MARKER_FILLED_SQUARE !! !! - MARKER_FILLED_TRIANGLE !! !! - MARKER_PLUS !! !! - MARKER_X x = this % m_markerType end function ! -------------------- subroutine lpd_set_marker_style ( this , x ) !! Sets the marker style. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. integer ( int32 ), intent ( in ) :: x !! The marker type. The marker type must be one of the following: !! !! - MARKER_ASTERISK !! !! - MARKER_EMPTY_CIRCLE !! !! - MARKER_EMPTY_NABLA !! !! - MARKER_EMPTY_RHOMBUS !! !! - MARKER_EMPTY_SQUARE !! !! - MARKER_EMPTY_TRIANGLE !! !! - MARKER_FILLED_CIRCLE !! !! - MARKER_FILLED_NABLA !! !! - MARKER_FILLED_RHOMBUS !! !! - MARKER_FILLED_SQUARE !! !! - MARKER_FILLED_TRIANGLE !! !! - MARKER_PLUS !! !! - MARKER_X if ( x == MARKER_ASTERISK . or . & x == MARKER_EMPTY_CIRCLE . or . & x == MARKER_EMPTY_NABLA . or . & x == MARKER_EMPTY_RHOMBUS . or . & x == MARKER_EMPTY_SQUARE . or . & x == MARKER_EMPTY_TRIANGLE . or . & x == MARKER_FILLED_CIRCLE . or . & x == MARKER_FILLED_NABLA . or . & x == MARKER_FILLED_RHOMBUS . or . & x == MARKER_FILLED_SQUARE . or . & x == MARKER_FILLED_TRIANGLE . or . & x == MARKER_PLUS . or . & x == MARKER_X ) then ! Only alter the value if the marker is a known type this % m_markerType = x end if end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_marker_scaling ( this ) result ( x ) !! Gets the marker scaling. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. real ( real32 ) :: x !! The scaling factor. x = this % m_markerSize end function ! -------------------- subroutine lpd_set_marker_scaling ( this , x ) !! Sets the marker scaling. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. real ( real32 ), intent ( in ) :: x !! The scaling factor. this % m_markerSize = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_marker_frequency ( this ) result ( x ) !! Gets the marker frequency. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. integer ( int32 ) :: x !! The marker frequency. x = this % m_markerFrequency end function ! -------------------- subroutine lpd_set_marker_frequency ( this , x ) !! Sets the marker frequency. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. integer ( int32 ), intent ( in ) :: x !! The marker frequency. this % m_markerFrequency = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_draw_impulse_lines ( this ) result ( x ) !! Gets a value determining if impulse lines should be drawn. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. logical :: x !! True if impulse lines should be drawn; else, false. x = this % m_impulses end function ! -------------------- subroutine lpd_set_draw_impulse_lines ( this , x ) !! Sets a value determining if impulse lines should be drawn. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. logical , intent ( in ) :: x !! True if impulse lines should be drawn; else, false. this % m_impulses = x end subroutine ! ------------------------------------------------------------------------------ function lpd_get_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string to represent this line_plot_data !! object. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Lines or points if ( this % get_draw_impulses ()) then call str % append ( \" with impulses\" ) else if ( this % get_draw_line () . and . this % get_draw_markers ()) then call str % append ( \" with linespoints\" ) else if (. not . this % get_draw_line () . and . this % get_draw_markers ()) then call str % append ( \" with points\" ) else call str % append ( \" with lines\" ) end if end if ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Line Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Define other properties specific to the lines and points if ( this % get_draw_line ()) then call str % append ( \" lt \" ) call str % append ( to_string ( this % get_line_style ())) if ( this % get_line_style () /= LINE_SOLID ) then call str % append ( \" dashtype \" ) call str % append ( to_string ( this % get_line_style ())) end if end if if ( this % get_draw_markers ()) then call str % append ( \" pi \" ) call str % append ( to_string ( this % get_marker_frequency ())) call str % append ( \" pt \" ) call str % append ( to_string ( this % get_marker_style ())) call str % append ( \" ps \" ) call str % append ( to_string ( this % get_marker_scaling ())) end if ! End rst = char ( str % to_string ()) end function ! ****************************************************************************** ! SCATTER_PLOT_DATA ! ------------------------------------------------------------------------------ function spd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this !! scatter_plot_data object. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Lines, points, or filled if ( this % get_fill_curve ()) then call str % append ( \" with filledcurves\" ) else if ( this % get_draw_impulses ()) then call str % append ( \" with impulses\" ) else if ( this % get_draw_line () . and . this % get_draw_markers ()) then call str % append ( \" with linespoints\" ) else if (. not . this % get_draw_line () . and . this % get_draw_markers ()) then call str % append ( \" with points\" ) else call str % append ( \" with lines\" ) end if end if ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Line Color if ( this % get_use_data_dependent_colors ()) then ! http://www.gnuplotting.org/using-a-palette-as-line-color/ call str % append ( \" lc palette\" ) else clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) end if ! Define other properties specific to the lines and points if ( this % get_draw_line ()) then call str % append ( \" lt \" ) call str % append ( to_string ( this % get_line_style ())) if ( this % get_line_style () /= LINE_SOLID ) then call str % append ( \" dashtype \" ) call str % append ( to_string ( this % get_line_style ())) end if end if if ( this % get_draw_markers ()) then call str % append ( \" pi \" ) call str % append ( to_string ( this % get_marker_frequency ())) call str % append ( \" pt \" ) call str % append ( to_string ( this % get_marker_style ())) call str % append ( \" ps \" ) if ( this % get_use_variable_size_points ()) then call str % append ( \"variable\" ) else call str % append ( to_string ( this % get_marker_scaling ())) end if end if ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function spd_get_simplify_data ( this ) result ( x ) !! Gets a value determining if the stored data should be !! simplified (reduced) before passing to GNUPLOT. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: x !! True if the data should be simplified prior to sending !! to GNUPLOT; else, false to leave the data alone. x = this % m_simplifyData end function ! -------------------- subroutine spd_set_simplify_data ( this , x ) !! Sets a value determining if the stored data should be !! simplified (reduced) before passing to GNUPLOT. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. logical , intent ( in ) :: x !! True if the data should be simplified prior to sending !! to GNUPLOT; else, false to leave the data alone. this % m_simplifyData = x end subroutine ! ------------------------------------------------------------------------------ pure function spd_get_simplify_factor ( this ) result ( x ) !! Gets a factor used to establish the simplification tolerance. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. real ( real64 ) :: x !! The scaling factor. x = this % m_simplifyFactor end function ! -------------------- subroutine spd_set_simplify_factor ( this , x ) !! Sets a factor used to establish the simplification tolerance. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. real ( real64 ), intent ( in ) :: x !! The scaling factor. this % m_simplifyFactor = x end subroutine ! ------------------------------------------------------------------------------ pure function spd_get_data_dependent_colors ( this ) result ( rst ) !! Gets a value determing if data-dependent colors should be used. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: rst !! True if data-dependent colors should be used; else, false. rst = this % m_dataDependentColors end function ! -------------------- subroutine spd_set_data_dependent_colors ( this , x ) !! Sets a value determing if data-dependent colors should be used. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. logical , intent ( in ) :: x !! True if data-dependent colors should be used; else, false. this % m_dataDependentColors = x end subroutine ! ****************************************************************************** ! ADDED: JUNE 28, 2021 - JAC ! ------------------------------------------------------------------------------ pure function spd_get_filled ( this ) result ( rst ) !! Gets a logical value determining if a filled curve should be drawn. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: rst !! True if the curve should be filled; else, false. rst = this % m_filledCurve end function ! -------------------- subroutine spd_set_filled ( this , x ) !! Sets a logical value determining if a filled curve should be drawn. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. logical , intent ( in ) :: x !! True if the curve should be filled; else, false. this % m_filledCurve = x end subroutine ! ****************************************************************************** ! ADDED: JAN 12, 2024 - JAC ! ------------------------------------------------------------------------------ pure function spd_get_use_var_point_size ( this ) result ( rst ) !! Gets a logical value determining if variable sized data points !! should be used. The default is false, such that points will be of !! a constant size. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: rst !! True if variable size points should be used; else, false. rst = this % m_useVariableSizePoints end function ! -------------------- subroutine spd_set_use_var_point_size ( this , x ) !! Sets a logical value determining if variable sized data points !! should be used. The default is false, such that points will be of !! a constant size. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. logical , intent ( in ) :: x !! True if variable size points should be used; else, false. this % m_useVariableSizePoints = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data.f90.html"},{"title":"fplot_plot_data_bar.f90 – FPLOT","text":"Source Code ! fplot_plot_data_bar.f90 ! TO DO: ! - Allow naming of each data set at the define_data level as well module fplot_plot_data_bar use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: plot_data_bar type , extends ( plot_data_colored ) :: plot_data_bar !! Defines a data set tailored to bar charts. type ( string ), private , allocatable , dimension (:) :: m_axisLabels !! An array containing axis labels to associate with each bar. real ( real64 ), private , allocatable , dimension (:,:) :: m_barData !! An array of data defining each bar - the matrix contains !! multiple columns to allow multiple bars per label. logical , private :: m_useAxisLabels = . true . !! Determines if the axis labels should be used - only applicable !! if there is existing data stored in m_axisLabels & m_axisLabels !! is the same size as m_barData. logical , private :: m_useY2 = . false . !! Draw against the secondary y axis? logical , private :: m_filled = . true . !! Determines if each bar is filled. real ( real32 ), private :: m_alpha = 1.0 !! The alpha value (transparency) for each bar. type ( color ), private , allocatable , dimension (:) :: m_barColors !! The color to use for each data series (column). If not !! set, a default color cycle is used for multi-series data, !! or the base line color is used for single-series data. type ( string ), private , allocatable , dimension (:) :: m_seriesNames !! The legend title to associate with each data series (column). contains procedure , public :: get_count => pdb_get_count procedure , public :: get => pdb_get_data procedure , public :: set => pdb_set_data procedure , public :: get_data => pdb_get_data_set procedure , public :: get_label => pdb_get_label procedure , public :: set_label => pdb_set_label procedure , public :: get_use_labels => pdb_get_use_labels procedure , public :: set_use_labels => pdb_set_use_labels procedure , public :: get_command_string => pdb_get_cmd procedure , public :: get_data_string => pdb_get_data_cmd procedure , public :: get_axes_string => pdb_get_axes_cmd procedure , public :: get_bar_per_label_count => pdb_get_col_count procedure , public :: get_draw_against_y2 => pdb_get_use_y2 procedure , public :: set_draw_against_y2 => pdb_set_use_y2 procedure , public :: get_is_filled => pdb_get_is_filled procedure , public :: set_is_filled => pdb_set_is_filled procedure , public :: get_transparency => pdb_get_alpha procedure , public :: set_transparency => pdb_set_alpha procedure , public :: get_bar_color => pdb_get_bar_color procedure , public :: set_bar_color => pdb_set_bar_color procedure , public :: get_series_name => pdb_get_series_name procedure , public :: set_series_name => pdb_set_series_name generic , public :: define_data => pdb_set_data_1 , pdb_set_data_2 , & pdb_set_data_3 , pdb_set_data_4 , pdb_set_data_5 , pdb_set_data_6 procedure , private :: pdb_set_data_1 procedure , private :: pdb_set_data_2 procedure , private :: pdb_set_data_3 procedure , private :: pdb_set_data_4 procedure , private :: pdb_set_data_5 procedure , private :: pdb_set_data_6 procedure , public :: set_data_1 => pdb_set_data_1_core procedure , public :: set_data_2 => pdb_set_data_2_core procedure , public :: set_data_3 => pdb_set_data_3_core procedure , public :: set_data_4 => pdb_set_data_4_core procedure , public :: set_data_5 => pdb_set_data_5_core procedure , public :: set_data_6 => pdb_set_data_6_core procedure , public :: clear_data => pdb_clear_data end type contains ! ------------------------------------------------------------------------------ pure function pdb_get_count ( this ) result ( x ) !! Gets the number of stored data points. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ) :: x !! The number of stored data points. if ( allocated ( this % m_barData )) then x = size ( this % m_barData , 1 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pdb_get_data ( this , index , col ) result ( x ) !! Gets the requested data point. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The data point index. integer ( int32 ), intent ( in ) :: col !! The column index. real ( real64 ) :: x !! The value. if ( allocated ( this % m_barData )) then x = this % m_barData ( index , col ) else x = 0.0d0 end if end function ! ------------------------------------------------------------------------------ subroutine pdb_set_data ( this , index , col , x ) !! Replaces the requested data point. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The data point index. integer ( int32 ), intent ( in ) :: col !! The column index. real ( real64 ), intent ( in ) :: x !! The new value. if ( allocated ( this % m_barData )) then this % m_barData ( index , col ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_data_set ( this , col ) result ( x ) !! Gets the requested data set. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: col !! The column index. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the data set. if ( allocated ( this % m_barData )) then x = this % m_barData (:, col ) else allocate ( x ( 0 )) end if end function ! ------------------------------------------------------------------------------ pure function pdb_get_label ( this , index ) result ( x ) !! Gets the axis label associated with a specific data set. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data set. character ( len = :), allocatable :: x !! The label. if ( allocated ( this % m_axisLabels )) then x = char ( this % m_axisLabels ( index )) else x = \"\" end if end function ! ------------------------------------------------------------------------------ subroutine pdb_set_label ( this , index , txt ) !! Sets the axis label for a specific data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. integer ( int32 ) :: index !! The index of the data set. character ( len = * ), intent ( in ) :: txt !! The label. if ( allocated ( this % m_axisLabels )) then this % m_axisLabels ( index ) = txt end if end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_use_labels ( this ) result ( x ) !! Gets a value determining if labels are used to identify the data. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. logical :: x !! Returns true if labels are used; else, false. x = this % m_useAxisLabels end function ! ------------------------------------------------------------------------------ subroutine pdb_set_use_labels ( this , x ) !! Sets a value determining if labels are used to identify the data. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. logical , intent ( in ) :: x !! Set to true if labels are used; else, false. this % m_useAxisLabels = x end subroutine ! ------------------------------------------------------------------------------ function pdb_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for this object. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: j , ncols , offset logical :: uselabels character ( len = :), allocatable :: title type ( color ) :: clr ! Initialization call str % initialize () ncols = max ( this % get_bar_per_label_count (), 1 ) uselabels = this % get_use_labels () . and . allocated ( this % m_barData ) . and . & allocated ( this % m_axisLabels ) if ( uselabels ) then offset = 1 else offset = 0 end if ! Each data series (column) is drawn with its own \"using\" clause so ! that multiple bar series stored in a single datablock all appear do j = 1 , ncols if ( j > 1 ) call str % append ( \", \" ) ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) call str % append ( \" using \" ) call str % append ( to_string ( j + offset )) if ( j == 1 . and . uselabels ) call str % append ( \":xtic(1)\" ) ! Filled? if ( this % get_is_filled ()) then call str % append ( \" fill solid \" ) else call str % append ( \" fill empty \" ) end if ! Transparency call str % append ( to_string ( this % get_transparency ())) ! Title title = this % get_series_name ( j ) if ( len_trim ( title ) == 0 . and . ncols == 1 ) title = this % get_name () if ( len_trim ( title ) > 0 ) then call str % append ( ' title \"' ) call str % append ( title ) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Color clr = this % get_bar_color ( j ) call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdb_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string defining the data for this object. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , nbars , ncols character :: delimiter , nl ! Initialization call str % initialize () delimiter = achar ( 9 ) nl = new_line ( nl ) nbars = this % get_count () ncols = this % get_bar_per_label_count () ! Process if ( this % get_use_labels () . and . allocated ( this % m_axisLabels ) . and . & allocated ( this % m_barData )) then do i = 1 , nbars call str % append ( char ( this % m_axisLabels ( i ))) call str % append ( delimiter ) do j = 1 , ncols call str % append ( to_string ( this % get ( i , j ))) if ( j /= ncols ) call str % append ( delimiter ) end do call str % append ( nl ) end do else do i = 1 , nbars do j = 1 , ncols call str % append ( to_string ( this % get ( i , j ))) if ( j /= ncols ) call str % append ( delimiter ) end do call str % append ( nl ) end do end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdb_get_axes_cmd ( this ) result ( x ) !! Gets the GNUPLOT command defining which axes to plot against. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. character ( len = :), allocatable :: x !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then x = \"axes x1y2\" else x = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ pure function pdb_get_col_count ( this ) result ( x ) !! Gets the number of data sets (columns). class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ) :: x !! The count. if ( allocated ( this % m_barData )) then x = size ( this % m_barData , 2 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pdb_get_use_y2 ( this ) result ( x ) !! Gets a value determining if the data should be plotted against a !! secondary y-axis. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. logical :: x !! Returns true to plot against a secondary y-axis; else, false. x = this % m_useY2 end function ! ------------------------------------------------------------------------------ subroutine pdb_set_use_y2 ( this , x ) !! Sets a value determining if the data should be plotted against a !! secondary y-axis. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. logical , intent ( in ) :: x !! Set to true to plot against a secondary y-axis; else, false. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_bar_color ( this , index ) result ( x ) !! Gets the color to use for the requested data series (column). If !! no color has been explicitly set, a default color cycle is used !! for multi-series data, or the base line color for single-series !! data. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data series (column). type ( color ) :: x !! The color. if ( allocated ( this % m_barColors )) then if ( index >= 1 . and . index <= size ( this % m_barColors )) then x = this % m_barColors ( index ) return end if end if if ( this % get_bar_per_label_count () <= 1 ) then x = this % get_line_color () else x = color_list ( mod ( index - 1 , size ( color_list )) + 1 ) end if end function ! ------------------------------------------------------------------------------ subroutine pdb_set_bar_color ( this , index , x ) !! Sets the color to use for the requested data series (column). class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data series (column). type ( color ), intent ( in ) :: x !! The color. ! Local Variables type ( color ), allocatable , dimension (:) :: temp integer ( int32 ) :: i , n n = max ( index , this % get_bar_per_label_count ()) if (. not . allocated ( this % m_barColors )) then allocate ( this % m_barColors ( n )) do i = 1 , n this % m_barColors ( i ) = this % get_bar_color ( i ) end do else if ( size ( this % m_barColors ) < n ) then allocate ( temp ( n )) do i = 1 , n if ( i <= size ( this % m_barColors )) then temp ( i ) = this % m_barColors ( i ) else temp ( i ) = this % get_bar_color ( i ) end if end do call move_alloc ( temp , this % m_barColors ) end if this % m_barColors ( index ) = x end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_series_name ( this , index ) result ( x ) !! Gets the legend title associated with the requested data series !! (column). class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data series (column). character ( len = :), allocatable :: x !! The title. if ( allocated ( this % m_seriesNames )) then if ( index >= 1 . and . index <= size ( this % m_seriesNames )) then x = char ( this % m_seriesNames ( index )) return end if end if x = \"\" end function ! ------------------------------------------------------------------------------ subroutine pdb_set_series_name ( this , index , txt ) !! Sets the legend title to associate with the requested data series !! (column). class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data series (column). character ( len = * ), intent ( in ) :: txt !! The title. ! Local Variables type ( string ), allocatable , dimension (:) :: temp integer ( int32 ) :: i , n n = max ( index , this % get_bar_per_label_count ()) if (. not . allocated ( this % m_seriesNames )) then allocate ( this % m_seriesNames ( n )) else if ( size ( this % m_seriesNames ) < n ) then allocate ( temp ( n )) do i = 1 , size ( this % m_seriesNames ) temp ( i ) = this % m_seriesNames ( i ) end do call move_alloc ( temp , this % m_seriesNames ) end if this % m_seriesNames ( index ) = txt end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_1 ( this , x , err ) !! Defines a single data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: x !! The data to plot. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_1 ( x , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_2 ( this , labels , x , err ) !! Defines data along with associated axis labels. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. class ( string ), intent ( in ), dimension (:) :: labels !! The axis labels to associate with the data. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_2 ( labels , x , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_3 ( this , labels , x , fmt , err ) !! Defines data along with labels and formatting information. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: labels !! The axis labels to associate with the data. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. character ( len = * ), intent ( in ), optional :: fmt !! The format string for the labels (e.g. '(I0)', etc.). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_3 ( labels , x , fmt , err ) end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_is_filled ( this ) result ( x ) !! Gets a value determining if each bar is filled. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. logical :: x !! Returns true if the bars are to be filled; else, false. x = this % m_filled end function ! ------------------------------------------------------------------------------ subroutine pdb_set_is_filled ( this , x ) !! Sets a value determining if each bar is filled. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. logical , intent ( in ) :: x !! Set to true if the bars are to be filled; else, false. this % m_filled = x end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_alpha ( this ) result ( x ) !! Gets the alpha (transparency) for the bar color. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. real ( real32 ) :: x !! The alpha value ([0, 1]). x = this % m_alpha end function ! ------------------------------------------------------------------------------ subroutine pdb_set_alpha ( this , x ) !! Gets the alpha (transparency) for the bar color. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real32 ), intent ( in ) :: x !! The alpha value ([0, 1]). if ( x > 1.0 ) then this % m_alpha = 1.0 else if ( x < 0.0 ) then this % m_alpha = 0.0 else this % m_alpha = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_1_core ( this , x , err ) !! Defines the data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n , flag ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Process if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( n , 1 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_1_core\" , flag ) return end if this % m_barData (:, 1 ) = x end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_2_core ( this , labels , x , err ) ! Arguments class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. class ( string ), intent ( in ), dimension (:) :: labels !! The axis labels. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n , flag ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pdb_set_data_2_core\" , & \"labels\" , n , size ( labels )) return end if ! Process if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( n , 1 ), stat = flag ) if ( flag == 0 ) allocate ( this % m_axisLabels ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_2_core\" , flag ) return end if this % m_barData (:, 1 ) = x this % m_axisLabels = labels end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_3_core ( this , labels , x , fmt , err ) ! Arguments class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: labels !! The axis labels. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. character ( len = * ), intent ( in ), optional :: fmt !! The format string for the labels (e.g. '(I0)', etc.). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: i , n , flag type ( string ), allocatable , dimension (:) :: lbls ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pdb_set_data_3_core\" , & \"labels\" , n , size ( labels )) return end if ! Convert the numeric labels to strings allocate ( lbls ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_3_core\" , flag ) return end if do i = 1 , n lbls ( i ) = to_string ( labels ( i ), fmt ) end do ! Store the data if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( n , 1 ), stat = flag ) if ( flag == 0 ) allocate ( this % m_axisLabels ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_3_core\" , flag ) return end if this % m_barData (:, 1 ) = x this % m_axisLabels = lbls end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_4_core ( this , x , err ) !! Defines the data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: flag ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Process if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( size ( x , 1 ), size ( x , 2 )), stat = flag , source = x ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_4_core\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_5_core ( this , labels , x , err ) ! Arguments class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. class ( string ), intent ( in ), dimension (:) :: labels !! The axis labels. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n , flag ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x , 1 ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pdb_set_data_5_core\" , & \"labels\" , n , size ( labels )) return end if ! Process if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( size ( x , 1 ), size ( x , 2 )), stat = flag , source = x ) if ( flag == 0 ) allocate ( this % m_axisLabels ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_5_core\" , flag ) return end if this % m_axisLabels = labels end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_6_core ( this , labels , x , fmt , err ) ! Arguments class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: labels !! The axis labels. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. character ( len = * ), intent ( in ), optional :: fmt !! The format string for the labels (e.g. '(I0)', etc.). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: i , n , flag type ( string ), allocatable , dimension (:) :: lbls ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x , 1 ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pdb_set_data_6_core\" , & \"labels\" , n , size ( labels )) return end if ! Convert the numeric labels to strings allocate ( lbls ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_6_core\" , flag ) return end if do i = 1 , n lbls ( i ) = to_string ( labels ( i ), fmt ) end do ! Store the data if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( size ( x , 1 ), size ( x , 2 )), stat = flag , source = x ) if ( flag == 0 ) allocate ( this % m_axisLabels ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_6_core\" , flag ) return end if this % m_axisLabels = lbls end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_4 ( this , x , err ) !! Defines a single data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data to plot. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_4 ( x , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_5 ( this , labels , x , err ) !! Defines data along with associated axis labels. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. class ( string ), intent ( in ), dimension (:) :: labels !! The axis labels to associate with the data. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_5 ( labels , x , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_6 ( this , labels , x , fmt , err ) !! Defines data along with labels and formatting information. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: labels !! The axis labels to associate with the data. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. character ( len = * ), intent ( in ), optional :: fmt !! The format string for the labels (e.g. '(I0)', etc.). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_6 ( labels , x , fmt , err ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_bar.f90.html"},{"title":"fplot_pdf_terminal.f90 – FPLOT","text":"Source Code module fplot_pdf_terminal use iso_fortran_env use fplot_terminal use strings implicit none private public :: pdf_terminal type , extends ( file_terminal ) :: pdf_terminal !! Defines a terminal used for producing PDF outputs. character ( len = 17 ), private :: m_id = \"pdfcairo enhanced\" !! The terminal ID string. integer ( int32 ), private :: m_resolution = 100 !! The device resolution in DPI. contains procedure , public :: get_id_string => pdf_get_term_string procedure , public :: get_command_string => pdf_get_command_string procedure , public :: get_resolution => pdf_get_resolution procedure , public :: set_resolution => pdf_set_resolution end type contains ! ------------------------------------------------------------------------------ function pdf_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( pdf_terminal ), intent ( in ) :: this !! The pdf_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ function pdf_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( pdf_terminal ), intent ( in ) :: this !! The pdf_terminal object. character ( len = :), allocatable :: x !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str real ( real32 ) :: xsize , ysize ! Compute the size xsize = real ( this % get_window_width (), real32 ) / real ( this % get_resolution (), real32 ) ysize = real ( this % get_window_height (), real32 ) / real ( this % get_resolution (), real32 ) ! Process call str % initialize () call str % append ( \"set term \" ) call str % append ( this % get_id_string ()) call str % append ( \" font \" ) call str % append ( '\"' ) call str % append ( this % get_font_name ()) call str % append ( ',' ) call str % append ( to_string ( this % get_font_size ())) call str % append ( '\"' ) call str % append ( \" size \" ) call str % append ( to_string ( xsize )) call str % append ( \"in,\" ) call str % append ( to_string ( ysize )) call str % append ( \"in\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set output \" ) call str % append ( '\"' ) call str % append ( this % get_filename ()) call str % append ( '\"' ) x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function pdf_get_resolution ( this ) result ( x ) !! Gets the target device resolution. class ( pdf_terminal ), intent ( in ) :: this !! The pdf_terminal object. integer ( int32 ) :: x !! The resolution, in DPI. x = this % m_resolution end function ! -------------------- subroutine pdf_set_resolution ( this , x ) !! Sets the target device resolution. class ( pdf_terminal ), intent ( inout ) :: this !! The pdf_terminal object. integer ( int32 ), intent ( in ) :: x !! The resolution, in DPI. this % m_resolution = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_pdf_terminal.f90.html"},{"title":"fplot_tri_surface_plot_data.f90 – FPLOT","text":"Source Code ! fplot_tri_surface_plot_data.f90 module fplot_tri_surface_plot_data use iso_fortran_env use fplot_plot_data use fplot_delaunay_tri_surface use strings implicit none private public :: tri_surface_plot_data type , extends ( plot_data ) :: tri_surface_plot_data !! Provides a three-dimensional surface plot data set constructed of !! triangulated points. real ( real64 ), private , allocatable , dimension (:) :: m_x !! An array of the x-coordinates of each point. real ( real64 ), private , allocatable , dimension (:) :: m_y !! An array of the y-coordinates of each point. real ( real64 ), private , allocatable , dimension (:) :: m_z !! An array of the z-coordinates of each point. integer ( int32 ), private , allocatable , dimension (:,:) :: m_indices !! A 3-column matrix containing the indices of each triangle's !! vertex. logical , private :: m_wireframe = . true . !! Determines if the surface should be drawn as a wireframe. contains procedure , public :: get_data_string => tspd_get_data_cmd procedure , public :: get_command_string => tspd_get_cmd procedure , public :: get_use_wireframe => tspd_get_wireframe procedure , public :: set_use_wireframe => tspd_set_wireframe procedure , public :: define_data => tspd_define_data procedure , public :: clear_data => tspd_clear_data end type contains ! ------------------------------------------------------------------------------ function tspd_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for representing the data. class ( tri_surface_plot_data ), intent ( in ) :: this !! The tri_surface_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , n character :: delimiter , nl ! Initialization call str % initialize () n = size ( this % m_indices , 1 ) delimiter = achar ( 9 ) nl = new_line ( nl ) if (. not . allocated ( this % m_x ) . or . & . not . allocated ( this % m_y ) . or . & . not . allocated ( this % m_z ) . or . & . not . allocated ( this % m_indices ) & ) & then x = \"\" return end if ! Process ! https://stackoverflow.com/questions/42784369/drawing-triangular-mesh-using-gnuplot ! http://www.gnuplot.info/faq/faq.html#x1-530005.10 do i = 1 , n ! Line 1-2 ! Vertex 1 j = this % m_indices ( i , 1 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Vertex 2 j = this % m_indices ( i , 2 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Line 2-3 ! Vertex 2 call str % append ( nl ) j = this % m_indices ( i , 2 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Vertex 3 j = this % m_indices ( i , 3 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Line 3-1 ! Vertex 3 call str % append ( nl ) j = this % m_indices ( i , 3 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Vertex 1 j = this % m_indices ( i , 1 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Add in the two blank lines if ( i /= n ) then call str % append ( nl ) call str % append ( nl ) end if end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function tspd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for the object. class ( tri_surface_plot_data ), intent ( in ) :: this !! The tri_surface_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! PM3D or wireframe? if ( this % get_use_wireframe ()) then call str % append ( \" with lines\" ) else call str % append ( \" with pm3d\" ) end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function tspd_get_wireframe ( this ) result ( rst ) !! Gets a value determining if a wireframe mesh should be displayed. class ( tri_surface_plot_data ), intent ( in ) :: this !! The tri_surface_plot_data object. logical :: rst !! Returns true if the plot is to be drawn as a wireframe; else, !! false to draw as a surface. rst = this % m_wireframe end function ! ------------------------------------------------------------------------------ subroutine tspd_set_wireframe ( this , x ) !! Sets a value determining if a wireframe mesh should be displayed. class ( tri_surface_plot_data ), intent ( inout ) :: this !! The tri_surface_plot_data object. logical , intent ( in ) :: x !! Set to true if the plot is to be drawn as a wireframe; else, !! false to draw as a surface. this % m_wireframe = x end subroutine ! ------------------------------------------------------------------------------ subroutine tspd_define_data ( this , tri ) !! Defines the data to plot. class ( tri_surface_plot_data ), intent ( inout ) :: this !! The tri_surface_plot_data object. class ( delaunay_tri_surface ), intent ( in ) :: tri !! The triangulation to plot. ! Process if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_z )) deallocate ( this % m_z ) if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if this % m_x = tri % get_points_x () this % m_y = tri % get_points_y () this % m_z = tri % get_points_z () this % m_indices = tri % get_indices () end subroutine ! ------------------------------------------------------------------------------ subroutine tspd_clear_data ( this ) !! Clears the data from the data set. class ( tri_surface_plot_data ), intent ( inout ) :: this !! The tri_surface_plot_data object. if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_z )) deallocate ( this % m_z ) if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_tri_surface_plot_data.f90.html"}]} \ No newline at end of file +var tipuesearch = {"pages":[{"title":" FPLOT ","text":"FPLOT Developer Info Jason Christopherson","tags":"home","loc":"index.html"},{"title":"tri_surface_plot_data – FPLOT ","text":"type, public, extends( plot_data ) :: tri_surface_plot_data Provides a three-dimensional surface plot data set constructed of\ntriangulated points. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => tspd_clear_data private subroutine tspd_clear_data(this) Clears the data from the data set. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(inout) :: this The tri_surface_plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => tspd_define_data private subroutine tspd_define_data(this, tri) Defines the data to plot. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(inout) :: this The tri_surface_plot_data object. class( delaunay_tri_surface ), intent(in) :: tri The triangulation to plot. procedure, public :: get_command_string => tspd_get_cmd private function tspd_get_cmd(this) result(x) Gets the GNUPLOT command string for the object. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(in) :: this The tri_surface_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => tspd_get_data_cmd private function tspd_get_data_cmd(this) result(x) Gets the GNUPLOT command string for representing the data. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(in) :: this The tri_surface_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_use_wireframe => tspd_get_wireframe private pure function tspd_get_wireframe(this) result(rst) Gets a value determining if a wireframe mesh should be displayed. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(in) :: this The tri_surface_plot_data object. Return Value logical Returns true if the plot is to be drawn as a wireframe; else,\nfalse to draw as a surface. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_use_wireframe => tspd_set_wireframe private subroutine tspd_set_wireframe(this, x) Sets a value determining if a wireframe mesh should be displayed. Arguments Type Intent Optional Attributes Name class( tri_surface_plot_data ), intent(inout) :: this The tri_surface_plot_data object. logical, intent(in) :: x Set to true if the plot is to be drawn as a wireframe; else,\nfalse to draw as a surface.","tags":"","loc":"type\\tri_surface_plot_data.html"},{"title":"legend – FPLOT ","text":"type, public, extends( plot_object ) :: legend Defines a legend object. Type-Bound Procedures procedure, public :: get_command_string => leg_get_command_txt private function leg_get_command_txt(this) result(txt) Gets the command string defining the legend properties. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_draw_border => leg_get_box private pure function leg_get_box(this) result(x) Gets a value determining if the legend should have a border. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value logical True if the legend should have a border; else, false. procedure, public :: get_draw_inside_axes => leg_get_inside private pure function leg_get_inside(this) result(x) Gets a value determining if the legend should be drawn inside\nor outside the axes border. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value logical True to draw inside the axes border; else, false for outside. procedure, public :: get_horizontal_position => leg_get_horz_pos private pure function leg_get_horz_pos(this) result(x) Gets the horizontal position of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value character(len=:), allocatable The horizontal position of the legend (LEGEND_LEFT,\nLEGEND_CENTER, or LEGEND_RIGHT). procedure, public :: get_is_opaque => leg_get_opaque private pure function leg_get_opaque(this) result(rst) Gets a value determining if the legend is to be opaque. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value logical True if the legend is to be opaque; else, false. procedure, public :: get_is_visible => leg_get_visible private pure function leg_get_visible(this) result(x) Gets a value determining if the legend is visible. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value logical True if the legend is visible; else, false. procedure, public :: get_layout => leg_get_layout private pure function leg_get_layout(this) result(rst) Gets the layout of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value character(len=:), allocatable The layout type, either LEGEND_ARRANGE_VERTICALLY or \nLEGEND_ARRANGE_HORIZONTALLY. procedure, public :: get_vertical_position => leg_get_vert_pos private pure function leg_get_vert_pos(this) result(x) Gets the vertical position of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(in) :: this The legend object. Return Value character(len=:), allocatable The vertical position of the legend (LEGEND_TOP,\nLEGEND_CENTER, or LEGEND_BOTTOM). procedure, public :: set_draw_border => leg_set_box private subroutine leg_set_box(this, x) Sets a value determining if the legend should have a border. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. logical, intent(in) :: x True if the legend should have a border; else, false. procedure, public :: set_draw_inside_axes => leg_set_inside private subroutine leg_set_inside(this, x) Sets a value determining if the legend should be drawn inside\nor outside the axes border. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. logical, intent(in) :: x True to draw inside the axes border; else, false for outside. procedure, public :: set_horizontal_position => leg_set_horz_pos private subroutine leg_set_horz_pos(this, x) Sets the horizontal position of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. character(len=*), intent(in) :: x The horizontal position of the legend. The parameter must be\nset to one of the following: LEGEND_LEFT, LEGEND_CENTER, or\nLEGEND_RIGHT. If not, the default LEGEND_RIGHT will be used. procedure, public :: set_is_opaque => leg_set_opaque private subroutine leg_set_opaque(this, x) Sets a value determining if the legend is to be opaque. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. logical :: x True if the legend is to be opaque; else, false. procedure, public :: set_is_visible => leg_set_visible private subroutine leg_set_visible(this, x) Sets a value determining if the legend is visible. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. logical, intent(in) :: x True if the legend is visible; else, false. procedure, public :: set_layout => leg_set_layout private subroutine leg_set_layout(this, x) Sets the layout of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. character(len=*), intent(in) :: x The layout type, either LEGEND_ARRANGE_VERTICALLY or \nLEGEND_ARRANGE_HORIZONTALLY. procedure, public :: set_vertical_position => leg_set_vert_pos private subroutine leg_set_vert_pos(this, x) Sets the vertical position of the legend. Arguments Type Intent Optional Attributes Name class( legend ), intent(inout) :: this The legend object. character(len=*), intent(in) :: x The vertical position of the legend. The parameter must be\nset to one of the following: LEGEND_TOP, LEGEND_CENTER, or\nLEGEND_BOTTOM. If not, the default LEGEND_TOP will be used.","tags":"","loc":"type\\legend.html"},{"title":"plot_data_function – FPLOT ","text":"type, public, extends( line_plot_data ) :: plot_data_function Defines a function to plot. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdf_clear_data private subroutine pdf_clear_data(this) Clears the function from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pdf_define_data private subroutine pdf_define_data(this, f, fname, minX, maxX, name) Defines the function to plot. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. character(len=*), intent(in) :: f The function to plot (e.g. sin(x)). character(len=*), intent(in) :: fname The name of the function to plot (e.g. f(x)). real(kind=real64), intent(in), optional :: minX The minimum value to plot. If not supplied, this will default\nto a value of -1. real(kind=real64), intent(in), optional :: maxX The maximum x value to plot. If not supplied, this will default\nto a value of 1. character(len=*), intent(in), optional :: name An optional input that specifies the name that will be displayed\nin the legend. If nothing is supplied, the input string for \nparameter f will be utilized. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdf_get_cmd private function pdf_get_cmd(this) result(rst) Gets the GNUPLOT command string for this object. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => pdf_get_data_cmd private function pdf_get_data_cmd(this) result(rst) Gets the GNUPLOT command string defining the data for this object. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_function => pdf_get_function private pure function pdf_get_function(this) result(rst) Gets the function to plot. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value character(len=:), allocatable The function. procedure, public :: get_function_name => pdf_get_function_name private pure function pdf_get_function_name(this) result(rst) Gets the name of the function to plot (e.g. f(x), g(x), etc.). Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value character(len=:), allocatable The function name. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_maximum_x => pdf_get_max_x private pure function pdf_get_max_x(this) result(rst) Gets the maximum X plot range value. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value real(kind=real64) The value. procedure, public :: get_minimum_x => pdf_get_min_x private pure function pdf_get_min_x(this) result(rst) Gets the minimum X plot range value. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value real(kind=real64) The value. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_sample_count => pfd_get_sample_count private pure function pfd_get_sample_count(this) result(rst) Gets the number of times to sample the function. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(in) :: this The plot_data_function object. Return Value integer(kind=int32) The sample count. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_maximum_x => pdf_set_max_x private subroutine pdf_set_max_x(this, x) Sets the maximum X plot range value. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. real(kind=real64), intent(in) :: x The value. procedure, public :: set_minimum_x => pdf_set_min_x private subroutine pdf_set_min_x(this, x) Sets the minimum X plot range value. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. real(kind=real64), intent(in) :: x The value. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_sample_count => pfd_set_sample_count private subroutine pfd_set_sample_count(this, x) Sets the number of times to sample the function. This variable is \nglobal for all function plots as GNUPLOT does not allow inline\nsample modification currently. Hopefully this will change somewhere\ndown the road. Arguments Type Intent Optional Attributes Name class( plot_data_function ), intent(inout) :: this The plot_data_function object. integer(kind=int32), intent(in) :: x The sample count. Must be greater than 1.","tags":"","loc":"type\\plot_data_function.html"},{"title":"plot_data_tri_2d – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_tri_2d Defines a 2D triangulated data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdt2d_clear_data private subroutine pdt2d_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(inout) :: this The plot_data_tri_2d object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pdt2d_define_data private subroutine pdt2d_define_data(this, tri) Defines the data to plot. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(inout) :: this The plot_data_tri_2d object. class( delaunay_tri_2d ), intent(in) :: tri The triangulation data to plot. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdt2d_get_cmd private function pdt2d_get_cmd(this) result(x) Gets the GNUPLOT command string for the object. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(in) :: this The plot_data_tri_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => pdt2d_get_data_cmd private function pdt2d_get_data_cmd(this) result(x) Gets the GNUPLOT command string describing the data to plot. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(in) :: this The plot_data_tri_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => pdt2d_get_line_style private pure function pdt2d_get_line_style(this) result(rst) Gets the line style. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(in) :: this The plot_data_tri_2d object. Return Value integer(kind=int32) The line style. The line style must be one of the following\nconstants. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => pdt2d_get_line_width private pure function pdt2d_get_line_width(this) result(rst) Gets the width of the lines used to draw the triangulation. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(in) :: this The plot_data_tri_2d object. Return Value real(kind=real32) The line width. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => pdt2d_set_line_style private subroutine pdt2d_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(inout) :: this The plot_data_tri_2d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following\nconstants. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => pdt2d_set_line_width private subroutine pdt2d_set_line_width(this, x) Sets the width of the lines used to draw the triangulation. Arguments Type Intent Optional Attributes Name class( plot_data_tri_2d ), intent(inout) :: this The plot_data_tri_2d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\plot_data_tri_2d.html"},{"title":"plot_3d – FPLOT ","text":"type, public, extends( plot ) :: plot_3d A plot object defining a 3D plot. Finalization Procedures final :: p3d_clean_up private subroutine p3d_clean_up(this) Cleans up resources held by the plot_3d object. Arguments Type Intent Optional Attributes Name type( plot_3d ), intent(inout) :: this The plot_3d object. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_azimuth => p3d_get_azimuth private pure function p3d_get_azimuth(this) result(x) Gets the plot azimuth angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real64) The azimuth angle, in degrees. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => p3d_get_cmd private function p3d_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot_3d object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_coordinate_system => p3d_get_csys private pure function p3d_get_csys(this) result(rst) Gets a value determining the coordinate system. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The coordinate system ID, which must be one of the following. COORDINATES_CARTESIAN COORDINATES_CYLINDRICAL COORDINATES_SPHERICAL procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_elevation => p3d_get_elevation private pure function p3d_get_elevation(this) result(x) Gets the plot elevation angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real64) The elevation angle, in degrees. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_z_major_grid => p3d_get_show_z_major_grid private pure function p3d_get_show_z_major_grid(this) result(x) Gets a value determining if the z-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid private pure function p3d_get_show_z_minor_grid(this) result(x) Gets a value determining if the z-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_use_map_view => p3d_get_use_map_view private pure function p3d_get_use_map_view(this) result(rst) Gets a value determining if the view should be set to a 2D\nmap view. If true, the azimuth and elevation terms are ignored. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical Returns true if the map view will be used; else, false. procedure, public :: get_x_axis => p3d_get_x_axis private function p3d_get_x_axis(this) result(ptr) Gets the x-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the x-axis object. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_axis => p3d_get_y_axis private function p3d_get_y_axis(this) result(ptr) Gets the y-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the y-axis object. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_z_axis => p3d_get_z_axis private function p3d_get_z_axis(this) result(ptr) Gets the z-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the z-axis object. procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect private pure function p3d_get_z_axis_intersect(this) result(x) Gets a value determining if the z-axis should intersect the\nx-y plane. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical Returns true if the z-axis should intersect the x-y plane; else,\nfalse to allow the z-axis to float. procedure, public :: get_z_major_grid_color => p3d_get_z_major_grid_color private pure function p3d_get_z_major_grid_color(this) result(x) Gets the color of the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value type( color ) The color. procedure, public :: get_z_major_grid_line_style => p3d_get_z_major_grid_line_style private pure function p3d_get_z_major_grid_line_style(this) result(x) Gets the line style used for the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_z_major_grid_line_width => p3d_get_z_major_grid_line_width private pure function p3d_get_z_major_grid_line_width(this) result(x) Gets the width of the z-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real32) The line width. procedure, public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color private pure function p3d_get_z_minor_grid_color(this) result(x) Gets the color of the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value type( color ) The color. procedure, public :: get_z_minor_grid_line_style => p3d_get_z_minor_grid_line_style private pure function p3d_get_z_minor_grid_line_style(this) result(x) Gets the line style used for the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_z_minor_grid_line_width => p3d_get_z_minor_grid_line_width private pure function p3d_get_z_minor_grid_line_width(this) result(x) Gets the width of the z-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real32) The line width. procedure, public :: initialize => p3d_init private subroutine p3d_init(this, term, fname, err) Initializes the plot_3d object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: p3d_push_data private subroutine p3d_push_data(this, x, y, z, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real64), intent(in), dimension(size(x)) :: z The z-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , p3d_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine p3d_push_data(this, x, y, z, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real64), intent(in), dimension(size(x)) :: z The z-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_azimuth => p3d_set_azimuth private subroutine p3d_set_azimuth(this, x) Sets the plot azimuth angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in) :: x The azimuth angle, in degrees. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_coordinate_system => p3d_set_csys private subroutine p3d_set_csys(this, x) Sets a value determining the coordinate system. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The coordinate system ID, which must be one of the following. COORDINATES_CARTESIAN COORDINATES_CYLINDRICAL COORDINATES_SPHERICAL procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_elevation => p3d_set_elevation private subroutine p3d_set_elevation(this, x) Sets the plot elevation angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in) :: x The elevation angle, in degrees. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_z_major_grid => p3d_set_show_z_major_grid private subroutine p3d_set_show_z_major_grid(this, x) Sets a value determining if the z-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid private subroutine p3d_set_show_z_minor_grid(this, x) Sets a value determining if the z-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_use_map_view => p3d_set_use_map_view private subroutine p3d_set_use_map_view(this, x) Sets a value determining if the view should be set to a 2D\nmap view. If true, the azimuth and elevation terms are ignored. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x Seturns true if the map view will be used; else, false. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_axis_title => p3d_set_x_axis_title private subroutine p3d_set_x_axis_title(this, x) Sets the title associated with the plot's x-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_axis_title => p3d_set_y_axis_title private subroutine p3d_set_y_axis_title(this, x) Sets the title associated with the plot's y-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_z_axis_title => p3d_set_z_axis_title private subroutine p3d_set_z_axis_title(this, x) Sets the title associated with the plot's z-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_z_intersect_xy => p3d_set_z_axis_intersect private subroutine p3d_set_z_axis_intersect(this, x) Sets a value determining if the z-axis should intersect the\nx-y plane. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x Set to true if the z-axis should intersect the x-y plane; else,\nfalse to allow the z-axis to float. procedure, public :: set_z_major_grid_color => p3d_set_z_major_grid_color private subroutine p3d_set_z_major_grid_color(this, x) Sets the color of the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. type( color ), intent(in) :: x The color. procedure, public :: set_z_major_grid_line_style => p3d_set_z_major_grid_line_style private subroutine p3d_set_z_major_grid_line_style(this, x) Sets the line style used for the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_z_major_grid_line_width => p3d_set_z_major_grid_line_width private subroutine p3d_set_z_major_grid_line_width(this, x) Sets the width of the z-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color private subroutine p3d_set_z_minor_grid_color(this, x) Sets the color of the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. type( color ), intent(in) :: x The color. procedure, public :: set_z_minor_grid_line_style => p3d_set_z_minor_grid_line_style private subroutine p3d_set_z_minor_grid_line_style(this, x) Sets the line style used for the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_z_minor_grid_line_width => p3d_set_z_minor_grid_line_width private subroutine p3d_set_z_minor_grid_line_width(this, x) Sets the width of the z-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot_3d.html"},{"title":"windows_terminal – FPLOT ","text":"type, public, extends( terminal ) :: windows_terminal A Windows-specific terminal. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string private function term_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => wt_get_term_string private function wt_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( windows_terminal ), intent(in) :: this The windows_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\windows_terminal.html"},{"title":"plot_data_box_whisker – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_box_whisker A container for box-whisker plot data. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdbw_clear_data private subroutine pdbw_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pdbw_define_data_xstring private subroutine pdbw_define_data_xstring(this, x, boxmin, boxmax, whiskermin, whiskermax, mid, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. type(string), intent(in), dimension(:) :: x The x-coordinate data. real(kind=real64), intent(in), dimension(size(x)) :: boxmin The minimum y-values for each box. real(kind=real64), intent(in), dimension(size(x)) :: boxmax The maximum y-values for each box. real(kind=real64), intent(in), dimension(size(x)) :: whiskermin The minimum y-values for each whisker. real(kind=real64), intent(in), dimension(size(x)) :: whiskermax The maximum y-values for each whisker. real(kind=real64), intent(in), optional, dimension(size(x)) :: mid The mid-range values for each whisker. Typically the mean or\nmedian of the data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_box_fill_opacity => pdbw_get_opacity private pure function pdbw_get_opacity(this) result(rst) Gets the opacity of the box fill color. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The opacity on a scale from 0 to 1. procedure, public :: get_box_width => pdbw_get_box_width private pure function pdbw_get_box_width(this) result(rst) Gets the box width. By default the x-axis is incremented in units of 1;\ntherefore, a box width of 1 will fully fill the space. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The box width. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdbw_get_cmd private function pdbw_get_cmd(this) result(rst) Gets the GNUPLOT command string for this object. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => pdbw_get_data_cmd private function pdbw_get_data_cmd(this) result(rst) Gets the GNUPLOT command string defining the data for this object. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => pdbw_get_use_y2 private pure function pdbw_get_use_y2(this) result(rst) Gets a value determining if the data is to be plotted against the\nsecondary y axis. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value logical Returns true if the data is to be plotted against the secondary y \naxis; else, false for the primary y axis. procedure, public :: get_fill_boxes => pdbw_get_fill_boxes private pure function pdbw_get_fill_boxes(this) result(rst) Gets a value determining if the boxes should be filled. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value logical True if the boxes are to be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_width => pdbw_get_line_width private pure function pdbw_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The line width. procedure, public :: get_midline_color => pdbw_get_midline_color private pure function pdbw_get_midline_color(this) result(rst) Gets the color of the midline. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value type( color ) The line color. procedure, public :: get_midline_width => pdbw_get_midline_width private pure function pdbw_get_midline_width(this) result(rst) Gets the width of the midline. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The line width. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_use_whiskerbars => pdbw_get_use_whiskerbars private pure function pdbw_get_use_whiskerbars(this) result(rst) Gets a value determining if whiskerbars should be used. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value logical True if whiskerbars should be used; else, false. procedure, public :: get_whiskerbar_width => pdbw_get_whiskerbar_width private pure function pdbw_get_whiskerbar_width(this) result(rst) Gets the width of whiskerbar. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(in) :: this The plot_data_box_whisker object. Return Value real(kind=real32) The width of the whiskerbar on a scale of 0:1 with 1 being the full\nwidth. procedure, public :: set_box_fill_opacity => pdbw_set_opacity private subroutine pdbw_set_opacity(this, x) Sets the opacity of the box fill color. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The opacity on a scale from 0 to 1. procedure, public :: set_box_width => pdbw_set_box_width private subroutine pdbw_set_box_width(this, x) Sets the box width. By default the x-axis is incremented in units of 1;\ntherefore, a box width of 1 will fully fill the space. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The box width. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => pdbw_set_use_y2 private subroutine pdbw_set_use_y2(this, x) Sets a value determining if the data is to be plotted against the\nsecondary y axis. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. logical, intent(in) :: x Set to true if the data is to be plotted against the secondary y \naxis; else, false for the primary y axis. procedure, public :: set_fill_boxes => pdbw_set_fill_boxes private subroutine pdbw_set_fill_boxes(this, x) Sets a value determining if the boxes should be filled. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. logical, intent(in) :: x Set to true if the boxes are to be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_width => pdbw_set_line_width private subroutine pdbw_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_midline_color => pdbw_set_midline_color private subroutine pdbw_set_midline_color(this, x) Sets the color of the midline. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. type( color ), intent(in) :: x The line color. procedure, public :: set_midline_width => pdbw_set_midline_width private subroutine pdbw_set_midline_width(this, x) Sets the width of the midline. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_use_whiskerbars => pdbw_set_use_whiskerbars private subroutine pdbw_set_use_whiskerbars(this, x) Sets a value determining if whiskerbars should be used. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. logical, intent(in) :: x Set to true if whiskerbars should be used; else, false. procedure, public :: set_whiskerbar_width => pdbw_set_whiskerbar_width private subroutine pdbw_set_whiskerbar_width(this, x) Sets the width of the whiskerbar. Arguments Type Intent Optional Attributes Name class( plot_data_box_whisker ), intent(inout) :: this The plot_data_box_whisker object. real(kind=real32), intent(in) :: x The width of the whiskerbar. This value is clamped to [0, 1] with\n1 representing full width.","tags":"","loc":"type\\plot_data_box_whisker.html"},{"title":"svg_terminal – FPLOT ","text":"type, public, extends( file_terminal ) :: svg_terminal An SVG terminal. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string private function fterm_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => svg_get_term_string private function svg_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( svg_terminal ), intent(in) :: this The svg_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\svg_terminal.html"},{"title":"plot_object – FPLOT ","text":"type, public :: plot_object The base type for all plot objects. Type-Bound Procedures procedure( get_string_result ), public, deferred :: get_command_string function get_string_result(this) result(x) Prototype Returns a string from a plot_object. Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:), allocatable The result string.","tags":"","loc":"type\\plot_object.html"},{"title":"delaunay_tri_surface – FPLOT ","text":"type, public, extends( delaunay_tri_2d ) :: delaunay_tri_surface Provides a type describing a triangulated surface. Type-Bound Procedures procedure, public :: create => d2d_init private subroutine d2d_init(this, x, y, err) Creates an unconstrained 2D Delaunay triangulation given a \nset of x-y points. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(inout) :: this The delaunay_tri_2d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of each\ndata point. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of each\ndata point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: define_function_values => dts_define_fcn private subroutine dts_define_fcn(this, z, err) Defines the function values that correspond to the x and y\ndata points. Arguments Type Intent Optional Attributes Name class( delaunay_tri_surface ), intent(inout) :: this The delaunay_tri_surface object. real(kind=real64), intent(in), dimension(:) :: z An N-element array containing the function values for\neach x and y coordinate. Notice, the x and y coordinates must \nalready be defined prior to calling this routine. class( errors ), intent(inout), optional, target :: err An error handling object. generic, public :: evaluate => dts_interp_1, dts_interp_2 private pure function dts_interp_1(this, x, y) result(z) Evaluates the function at the requested point by means of \nlinear interpolation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_surface ), intent(in) :: this The delaunay_tri_surface object. real(kind=real64), intent(in) :: x The x-coordinate at which to evaluate the function. real(kind=real64), intent(in) :: y The y-coordinate at which to evaluate the function. Return Value real(kind=real64) The function value. If the point (x, y) does not lie within the \nrange of defined values, then a value of NaN is returned. private pure function dts_interp_2(this, x, y) result(z) Evaluates the function at the requested point by means of \nlinear interpolation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_surface ), intent(in) :: this The delaunay_tri_surface object. real(kind=real64), intent(in), dimension(:) :: x The x data coordinates. real(kind=real64), intent(in), dimension(:) :: y The x data coordinates. Return Value real(kind=real64), allocatable, dimension(:) The interpolated z coordinate points. If the point (x, y) does \nnot lie within the range of defined values, then a value of NaN \nis returned. procedure, public :: find_triangle => d2d_get_tri_with_pt private pure function d2d_get_tri_with_pt(this, x, y) result(rst) Finds the triangle that contains the specified point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. real(kind=real64), intent(in) :: x The x-coordinate of the point. real(kind=real64), intent(in) :: y The y-coordinate of the point. Return Value integer(kind=int32) Returns the index of the triangle containing the specified\npoint. If no triangle contains the specified point, a value of\n-1 is returned. procedure, public :: get_indices => d2d_get_tris private pure function d2d_get_tris(this) result(rst) Gets a list of the indices of each triangle vertex. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32), allocatable, dimension(:,:) An N-by-3 matrix with each column containing the index of the\nvertex of each triangle where N is the number of triangles. procedure, public :: get_point_count => d2d_get_pt_count private pure function d2d_get_pt_count(this) result(rst) Gets the number of points in the triangulation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32) The number of points in the triangulation. procedure, public :: get_points_x => d2d_get_x_pts private pure function d2d_get_x_pts(this) result(rst) Gets the x-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value real(kind=real64), allocatable, dimension(:) An array of the x-coordinates of each point. procedure, public :: get_points_y => d2d_get_y_pts private pure function d2d_get_y_pts(this) result(rst) Gets the y-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value real(kind=real64), allocatable, dimension(:) An array of the y-coordinates of each point. procedure, public :: get_points_z => dts_get_z private pure function dts_get_z(this) result(rst) Gets the z-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_surface ), intent(in) :: this The delaunay_tri_surface object. Return Value real(kind=real64), allocatable, dimension(:) An array of the z-coordinates of each point. procedure, public :: get_triangle_count => d2d_get_tri_count private pure function d2d_get_tri_count(this) result(rst) Gets the number of triangles in the triangulation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32) The number of triangles in the triangulation.","tags":"","loc":"type\\delaunay_tri_surface.html"},{"title":"errors – FPLOT ","text":"type, public :: errors Type-Bound Procedures procedure, public :: report_error public subroutine report_error (this, fcn, msg, code) Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: this character(len=*), intent(in) :: fcn character(len=*), intent(in) :: msg integer(kind=int32), intent(in) :: code","tags":"","loc":"type\\errors.html"},{"title":"qt_terminal – FPLOT ","text":"type, public, extends( terminal ) :: qt_terminal Defines a terminal that utilizes QT. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string private function term_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => qt_get_term_string private function qt_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( qt_terminal ), intent(in) :: this The qt_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\qt_terminal.html"},{"title":"multiplot – FPLOT ","text":"type, public, extends( plot_object ) :: multiplot Defines a multi-plot layout. Components Type Visibility Attributes Name Initial class( terminal ), public, pointer :: m_terminal => null() The GNUPLOT terminal object to target. Finalization Procedures final :: mp_clean private subroutine mp_clean(this) Cleans up resources held by the multiplot object. Arguments Type Intent Optional Attributes Name type( multiplot ), intent(inout) :: this The multiplot object. Type-Bound Procedures procedure, public :: draw => mp_draw private subroutine mp_draw(this, persist, err) Launches GNUPLOT and draws the multiplot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false\nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get => mp_get private function mp_get(this, i, j) result(x) Gets the requested plot object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. integer(kind=int32), intent(in) :: i The row index of the plot to retrieve. integer(kind=int32), intent(in) :: j The column index of the plot to retrieve. Return Value class( plot ), pointer A pointer to the plot object. procedure, public :: get_bottom_margin => mp_get_bottom_margin private pure function mp_get_bottom_margin(this) result(rst) Gets the bottom margin. The value exists in the range [0, 1]. This\nmargin is a global margin for the multiplot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value real(kind=real32) The margin value. procedure, public :: get_column_count => mp_get_cols private pure function mp_get_cols(this) result(x) Gets the number of columns of plots. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value integer(kind=int32) The column count. procedure, public :: get_command_string => mp_get_command private function mp_get_command(this) result(x) Gets the GNUPLOT commands for this object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value character(len=:), allocatable The command string. procedure, public :: get_font_name => mp_get_font private function mp_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => mp_get_font_size private function mp_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value integer(kind=int32) The font size. procedure, public :: get_horizontal_spacing => mp_get_horizontal_spacing private pure function mp_get_horizontal_spacing(this) result(rst) Gets the horizontal spacing between plots. The value must be\nzero or positive. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value real(kind=real32) The spacing value. procedure, public :: get_left_margin => mp_get_left_margin private pure function mp_get_left_margin(this) result(rst) Gets the left margin. The value exists in the range [0, 1]. This\nmargin is a global margin for the multiplot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value real(kind=real32) The margin value. procedure, public :: get_plot_count => mp_get_count private pure function mp_get_count(this) result(x) Gets the total number of plots. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value integer(kind=int32) The plot count. procedure, public :: get_right_margin => mp_get_right_margin private pure function mp_get_right_margin(this) result(rst) Gets the right margin. The value exists in the range [0, 1]. This\nmargin is a global margin for the multiplot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value real(kind=real32) The margin value. procedure, public :: get_row_count => mp_get_rows private pure function mp_get_rows(this) result(x) Gets the number of rows of plots. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value integer(kind=int32) The row count. procedure, public :: get_terminal => mp_get_term private function mp_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value class( terminal ), pointer A pointer to the terminal object. procedure, public :: get_title => mp_get_title private function mp_get_title(this) result(x) Gets the multiplot's title. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => mp_get_top_margin private pure function mp_get_top_margin(this) result(rst) Gets the top margin. The value exists in the range [0, 1]. This\nmargin is a global margin for the multiplot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value real(kind=real32) The margin value. procedure, public :: get_use_auto_generated_margins => mp_get_use_auto_generated_margins private pure function mp_get_use_auto_generated_margins(this) result(rst) Gets a value determining if the global margins should be \nautomatically calculated. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value logical True if the margins should be automatically calculated; else,\nfalse to use manually defined margins. procedure, public :: get_vertical_spacing => mp_get_vertical_spacing private pure function mp_get_vertical_spacing(this) result(rst) Gets the vertical spacing between plots. The value must be\nzero or positive. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value real(kind=real32) The spacing value. procedure, public :: initialize => mp_init private subroutine mp_init(this, m, n, term, width, height, fname, err) Initializes the multiplot object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. integer(kind=int32), intent(in) :: m The number of rows of plots. integer(kind=int32), intent(in) :: n The number of columns of plots. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal. The \ndefault terminal is a WXT terminal. The acceptable inputs are: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF integer(kind=int32), intent(in), optional :: width Optionally, the width of the plot window. integer(kind=int32), intent(in), optional :: height Optionally, the height of the plot window. character(len=*), intent(in), optional :: fname A filename to associate with terminals that print to file. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => mp_has_title private pure function mp_has_title(this) result(x) Gets a value determining if a title has been defined for the\nmultiplot object. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. Return Value logical Returns true if a title has been defined for this multiplot; \nelse, returns false. procedure, public :: save_file => mp_save private subroutine mp_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(in) :: this The multiplot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => mp_set private subroutine mp_set(this, i, j, x) Replaces the specified plot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. integer(kind=int32), intent(in) :: i The row index of the plot to replace. integer(kind=int32), intent(in) :: j The column index of the plot to replace. class( plot ), intent(in) :: x The new plot. procedure, public :: set_bottom_margin => mp_set_bottom_margin private subroutine mp_set_bottom_margin(this, x) Sets the bottom margin. The value exists in the range [0, 1]. This\nmargin is a global margin for the multiplot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. real(kind=real32), intent(in) :: x The margin value. This value will be clamped to the range\n[0, 1]. procedure, public :: set_font_name => mp_set_font private subroutine mp_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => mp_set_font_size private subroutine mp_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. integer(kind=int32), intent(in) :: x The font size. procedure, public :: set_horizontal_spacing => mp_set_horizontal_spacing private subroutine mp_set_horizontal_spacing(this, x) Sets the horizontal spacing between plots. The value must be\nzero or positive. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. real(kind=real32), intent(in) :: x The spacing value. This value will be clamped to zero if\na negative value is supplied. procedure, public :: set_left_margin => mp_set_left_margin private subroutine mp_set_left_margin(this, x) Sets the left margin. The value exists in the range [0, 1]. This\nmargin is a global margin for the multiplot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. real(kind=real32), intent(in) :: x The margin value. This value will be clamped to the range\n[0, 1]. procedure, public :: set_right_margin => mp_set_right_margin private subroutine mp_set_right_margin(this, x) Sets the right margin. The value exists in the range [0, 1]. This\nmargin is a global margin for the multiplot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. real(kind=real32), intent(in) :: x The margin value. This value will be clamped to the range\n[0, 1]. procedure, public :: set_title => mp_set_title private subroutine mp_set_title(this, x) Sets the multiplot's title. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. character(len=*), intent(in) :: x The title. procedure, public :: set_top_margin => mp_set_top_margin private subroutine mp_set_top_margin(this, x) Sets the top margin. The value exists in the range [0, 1]. This\nmargin is a global margin for the multiplot. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. real(kind=real32), intent(in) :: x The margin value. This value will be clamped to the range\n[0, 1]. procedure, public :: set_use_auto_generated_margins => mp_set_use_auto_generated_margins private subroutine mp_set_use_auto_generated_margins(this, x) Sets a value determining if the global margins should be \nautomatically calculated. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. logical, intent(in) :: x True if the margins should be automatically calculated; else,\nfalse to use manually defined margins. procedure, public :: set_vertical_spacing => mp_set_vertical_spacing private subroutine mp_set_vertical_spacing(this, x) Sets the vertical spacing between plots. The value must be\nzero or positive. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. real(kind=real32), intent(in) :: x The spacing value. This value will be clamped to zero if\na negative value is supplied. procedure, public :: set_window_size => mp_set_window_size private subroutine mp_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( multiplot ), intent(inout) :: this The multiplot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height.","tags":"","loc":"type\\multiplot.html"},{"title":"vector_field_plot_data – FPLOT ","text":"type, public, extends( plot_data_colored ) :: vector_field_plot_data Defines a two-dimensional vector-field plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => vfpd_clear_data private subroutine vfpd_clear_data(this) Clears the data from the data set. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(inout) :: this The vector_field_plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => vfpd_define_data private subroutine vfpd_define_data(this, x, y, dx, dy, c, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(inout) :: this The vector_field_plot_data object. real(kind=real64), intent(in), dimension(:,:) :: x An M-by-N matrix containing the x-locations of each arrow's \norigin. real(kind=real64), intent(in), dimension(:,:) :: y An M-by-N matrix containing the y-locations of each arrow's \norigin. real(kind=real64), intent(in), dimension(:,:) :: dx An M-by-N matrix containing the x-direction of each arrow. real(kind=real64), intent(in), dimension(:,:) :: dy An M-by-N matrix containing the y-direction of each arrow. real(kind=real64), intent(in), optional, dimension(:,:) :: c An optional M-by-N matrix containing information on how to color \nthe arrows. The colors are determined by the active colormap. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_arrow_size => vfpd_get_arrow_size private pure function vfpd_get_arrow_size(this) result(rst) Gets the scaling factor used to determine the arrow size. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value real(kind=real64) The scaling factor. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => vfpd_get_cmd private function vfpd_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this\nvector_field_plot_data object. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => vfpd_get_data_cmd private function vfpd_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data to plot. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_fill_arrow => vfpd_get_fill_arrow private pure function vfpd_get_fill_arrow(this) result(rst) Gets a value determining if the arrow heads should be filled. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value logical True if the arrow heads should be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_use_data_dependent_colors => vfpd_get_use_data_dependent_colors private pure function vfpd_get_use_data_dependent_colors(this) result(rst) Gets a value indicating if data-dependent coloring should be\nused. This is defined by supplying information on how to scale the\ncoloring when calling define_data. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(in) :: this The vector_field_plot_data object. Return Value logical Returns true if data-dependent coloring is being used; else,\nfalse. procedure, public :: set_arrow_size => vfpd_set_arrow_size private subroutine vfpd_set_arrow_size(this, x) Sets the scaling factor used to determine the arrow size. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(inout) :: this The vector_field_plot_data object. real(kind=real64), intent(in) :: x The scaling factor. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_fill_arrow => vfpd_set_fill_arrow private subroutine vfpd_set_fill_arrow(this, x) Sets a value determining if the arrow heads should be filled. Arguments Type Intent Optional Attributes Name class( vector_field_plot_data ), intent(inout) :: this The vector_field_plot_data object. logical, intent(in) :: x True if the arrow heads should be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\vector_field_plot_data.html"},{"title":"surface_plot – FPLOT ","text":"type, public, extends( plot_3d ) :: surface_plot Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_allow_smoothing => surf_get_smooth private pure function surf_get_smooth(this) result(x) Gets a value determining if the plotted surfaces should be\nsmoothed. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value logical Returns true if the surface should be smoothed; else, false. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_azimuth => p3d_get_azimuth private pure function p3d_get_azimuth(this) result(x) Gets the plot azimuth angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real64) The azimuth angle, in degrees. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => surf_get_cmd private function surf_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot_3d\nobject. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value character(len=:), allocatable The command string. procedure, public :: get_coordinate_system => p3d_get_csys private pure function p3d_get_csys(this) result(rst) Gets a value determining the coordinate system. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The coordinate system ID, which must be one of the following. COORDINATES_CARTESIAN COORDINATES_CYLINDRICAL COORDINATES_SPHERICAL procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_elevation => p3d_get_elevation private pure function p3d_get_elevation(this) result(x) Gets the plot elevation angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real64) The elevation angle, in degrees. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_light_intensity => surf_get_light_intensity private pure function surf_get_light_intensity(this) result(x) Gets the ratio of the strength of the light source relative\nto the ambient light. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value real(kind=real32) The light intensity ratio. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_contours => surf_get_show_contours private pure function surf_get_show_contours(this) result(x) Gets a value determining if a contour plot should be drawn in\nconjunction with the surface plot. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value logical Returns true if the contour plot should be drawn; else, false to\nonly draw the surface. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_hidden => surf_get_show_hidden private pure function surf_get_show_hidden(this) result(x) Gets a value indicating if hidden lines should be shown. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value logical Returns true if hidden lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_z_major_grid => p3d_get_show_z_major_grid private pure function p3d_get_show_z_major_grid(this) result(x) Gets a value determining if the z-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid private pure function p3d_get_show_z_minor_grid(this) result(x) Gets a value determining if the z-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_specular_intensity => surf_get_specular_intensity private pure function surf_get_specular_intensity(this) result(x) Gets the ratio of the strength of the specular light source\nrelative to the ambient light. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value real(kind=real32) The specular light intensity ratio. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_transparency => surf_get_transparency private pure function surf_get_transparency(this) result(x) Gets a factor defining the transparency of plotted surfaces. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value real(kind=real32) A value existing on the set (0 1] defining the level of\ntransparency. A value of 1 indicates a fully opaque surface. procedure, public :: get_use_lighting => surf_get_use_lighting private pure function surf_get_use_lighting(this) result(x) Gets a value indicating if lighting, beyond the ambient\nlight source, is to be used. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(in) :: this The surface_plot object. Return Value logical True if lighting should be used; else, false. procedure, public :: get_use_map_view => p3d_get_use_map_view private pure function p3d_get_use_map_view(this) result(rst) Gets a value determining if the view should be set to a 2D\nmap view. If true, the azimuth and elevation terms are ignored. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical Returns true if the map view will be used; else, false. procedure, public :: get_x_axis => p3d_get_x_axis private function p3d_get_x_axis(this) result(ptr) Gets the x-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the x-axis object. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_axis => p3d_get_y_axis private function p3d_get_y_axis(this) result(ptr) Gets the y-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the y-axis object. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_z_axis => p3d_get_z_axis private function p3d_get_z_axis(this) result(ptr) Gets the z-axis object. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value class( plot_axis ), pointer A pointer to the z-axis object. procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect private pure function p3d_get_z_axis_intersect(this) result(x) Gets a value determining if the z-axis should intersect the\nx-y plane. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value logical Returns true if the z-axis should intersect the x-y plane; else,\nfalse to allow the z-axis to float. procedure, public :: get_z_major_grid_color => p3d_get_z_major_grid_color private pure function p3d_get_z_major_grid_color(this) result(x) Gets the color of the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value type( color ) The color. procedure, public :: get_z_major_grid_line_style => p3d_get_z_major_grid_line_style private pure function p3d_get_z_major_grid_line_style(this) result(x) Gets the line style used for the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_z_major_grid_line_width => p3d_get_z_major_grid_line_width private pure function p3d_get_z_major_grid_line_width(this) result(x) Gets the width of the z-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real32) The line width. procedure, public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color private pure function p3d_get_z_minor_grid_color(this) result(x) Gets the color of the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value type( color ) The color. procedure, public :: get_z_minor_grid_line_style => p3d_get_z_minor_grid_line_style private pure function p3d_get_z_minor_grid_line_style(this) result(x) Gets the line style used for the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_z_minor_grid_line_width => p3d_get_z_minor_grid_line_width private pure function p3d_get_z_minor_grid_line_width(this) result(x) Gets the width of the z-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(in) :: this The plot_3d object. Return Value real(kind=real32) The line width. procedure, public :: initialize => surf_init private subroutine surf_init(this, term, fname, err) Initializes the surface_plot object. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: p3d_push_data private subroutine p3d_push_data(this, x, y, z, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real64), intent(in), dimension(size(x)) :: z The z-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , p3d_push_data , surf_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine p3d_push_data(this, x, y, z, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real64), intent(in), dimension(size(x)) :: z The z-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. private subroutine surf_push_data(this, x, y, z) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real64), intent(in), dimension(:,:) :: x An M-by-N matrix containing the x-coordinate data. real(kind=real64), intent(in), dimension(size(x,1), size(x,2)) :: y An M-by-N matrix containing the y-coordinate data. real(kind=real64), intent(in), dimension(size(x,1), size(x,2)) :: z An M-by-N matrix containing the z-coordinate data. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_allow_smoothing => surf_set_smooth private subroutine surf_set_smooth(this, x) Sets a value determining if the plotted surfaces should be\nsmoothed. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. logical, intent(in) :: x Set to true if the surface should be smoothed; else, false. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_azimuth => p3d_set_azimuth private subroutine p3d_set_azimuth(this, x) Sets the plot azimuth angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in) :: x The azimuth angle, in degrees. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_coordinate_system => p3d_set_csys private subroutine p3d_set_csys(this, x) Sets a value determining the coordinate system. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The coordinate system ID, which must be one of the following. COORDINATES_CARTESIAN COORDINATES_CYLINDRICAL COORDINATES_SPHERICAL procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_elevation => p3d_set_elevation private subroutine p3d_set_elevation(this, x) Sets the plot elevation angle. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real64), intent(in) :: x The elevation angle, in degrees. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_light_intensity => surf_set_light_intensity private subroutine surf_set_light_intensity(this, x) Sets the ratio of the strength of the light source relative\nto the ambient light. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real32), intent(in) :: x The light intensity ratio. The value must exist in the\nset [0, 1]; else, it will be clipped to lie within the range. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_contours => surf_set_show_contours private subroutine surf_set_show_contours(this, x) Sets a value determining if a contour plot should be drawn in\nconjunction with the surface plot. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. logical, intent(in) :: x Set to true if the contour plot should be drawn; else, false to\nonly draw the surface. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_hidden => surf_set_show_hidden private subroutine surf_set_show_hidden(this, x) Sets a value indicating if hidden lines should be shown. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. logical, intent(in) :: x Set to true if hidden lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_z_major_grid => p3d_set_show_z_major_grid private subroutine p3d_set_show_z_major_grid(this, x) Sets a value determining if the z-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid private subroutine p3d_set_show_z_minor_grid(this, x) Sets a value determining if the z-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_specular_intensity => surf_set_specular_intensity private subroutine surf_set_specular_intensity(this, x) Sets the ratio of the strength of the specular light source\nrelative to the ambient light. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real32), intent(in) :: x The specular light intensity ratio. The value must exist in the \nset [0, 1]; else, it will be clipped to lie within the range. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_transparency => surf_set_transparency private subroutine surf_set_transparency(this, x) Sets a factor defining the transparency of plotted surfaces. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real32), intent(in) :: x A value existing on the set (0 1] defining the level of\ntransparency. A value of 1 indicates a fully opaque surface. Any values supplied outside of the set are clipped to fit within\n(0 1]. procedure, public :: set_use_lighting => surf_set_use_lighting private subroutine surf_set_use_lighting(this, x) Sets a value indicating if lighting, beyond the ambient\nlight source, is to be used. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. logical, intent(in) :: x True if lighting should be used; else, false. procedure, public :: set_use_map_view => p3d_set_use_map_view private subroutine p3d_set_use_map_view(this, x) Sets a value determining if the view should be set to a 2D\nmap view. If true, the azimuth and elevation terms are ignored. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x Seturns true if the map view will be used; else, false. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_axis_title => p3d_set_x_axis_title private subroutine p3d_set_x_axis_title(this, x) Sets the title associated with the plot's x-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_axis_title => p3d_set_y_axis_title private subroutine p3d_set_y_axis_title(this, x) Sets the title associated with the plot's y-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_z_axis_title => p3d_set_z_axis_title private subroutine p3d_set_z_axis_title(this, x) Sets the title associated with the plot's z-axis. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. character(len=*), intent(in) :: x The title. procedure, public :: set_z_intersect_xy => p3d_set_z_axis_intersect private subroutine p3d_set_z_axis_intersect(this, x) Sets a value determining if the z-axis should intersect the\nx-y plane. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. logical, intent(in) :: x Set to true if the z-axis should intersect the x-y plane; else,\nfalse to allow the z-axis to float. procedure, public :: set_z_major_grid_color => p3d_set_z_major_grid_color private subroutine p3d_set_z_major_grid_color(this, x) Sets the color of the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. type( color ), intent(in) :: x The color. procedure, public :: set_z_major_grid_line_style => p3d_set_z_major_grid_line_style private subroutine p3d_set_z_major_grid_line_style(this, x) Sets the line style used for the z-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_z_major_grid_line_width => p3d_set_z_major_grid_line_width private subroutine p3d_set_z_major_grid_line_width(this, x) Sets the width of the z-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color private subroutine p3d_set_z_minor_grid_color(this, x) Sets the color of the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. type( color ), intent(in) :: x The color. procedure, public :: set_z_minor_grid_line_style => p3d_set_z_minor_grid_line_style private subroutine p3d_set_z_minor_grid_line_style(this, x) Sets the line style used for the z-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_z_minor_grid_line_width => p3d_set_z_minor_grid_line_width private subroutine p3d_set_z_minor_grid_line_width(this, x) Sets the width of the z-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot_3d ), intent(inout) :: this The plot_3d object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false. procedure, public :: surf_push_data private subroutine surf_push_data(this, x, y, z) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( surface_plot ), intent(inout) :: this The surface_plot object. real(kind=real64), intent(in), dimension(:,:) :: x An M-by-N matrix containing the x-coordinate data. real(kind=real64), intent(in), dimension(size(x,1), size(x,2)) :: y An M-by-N matrix containing the y-coordinate data. real(kind=real64), intent(in), dimension(size(x,1), size(x,2)) :: z An M-by-N matrix containing the z-coordinate data.","tags":"","loc":"type\\surface_plot.html"},{"title":"line_plot_data – FPLOT ","text":"type, public, extends( plot_data_colored ) :: line_plot_data A plot_data object for describing line series data. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( pd_clear_action ), public, deferred :: clear_data subroutine pd_clear_action(this) Prototype Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => lpd_get_cmd public function lpd_get_cmd (this) result(rst) Gets the GNUPLOT command string to represent this line_plot_data\nobject. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value character(len=:), allocatable The command string. procedure( pd_get_string_result ), public, deferred :: get_data_string function pd_get_string_result(this) result(x) Prototype Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\line_plot_data.html"},{"title":"plot_data – FPLOT ","text":"type, public, extends( plot_object ) :: plot_data A container for plot data. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( pd_clear_action ), public, deferred :: clear_data subroutine pd_clear_action(this) Prototype Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( get_string_result ), public, deferred :: get_command_string function get_string_result(this) result(x) Prototype Returns a string from a plot_object. Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:), allocatable The result string. procedure( pd_get_string_result ), public, deferred :: get_data_string function pd_get_string_result(this) result(x) Prototype Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\plot_data.html"},{"title":"plot_data_colored – FPLOT ","text":"type, public, extends( plot_data ) :: plot_data_colored Defines a colored plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( pd_clear_action ), public, deferred :: clear_data subroutine pd_clear_action(this) Prototype Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure( get_string_result ), public, deferred :: get_command_string function get_string_result(this) result(x) Prototype Returns a string from a plot_object. Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:), allocatable The result string. procedure( pd_get_string_result ), public, deferred :: get_data_string function pd_get_string_result(this) result(x) Prototype Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\plot_data_colored.html"},{"title":"scatter_plot_data – FPLOT ","text":"type, public, extends( line_plot_data ) :: scatter_plot_data A plot_data object for describing scatter plot data sets. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( pd_clear_action ), public, deferred :: clear_data subroutine pd_clear_action(this) Prototype Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure( spd_get_string_result ), public, deferred :: get_axes_string function spd_get_string_result(this) result(x) Prototype Gets a string value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => spd_get_cmd public function spd_get_cmd (this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string. procedure( spd_get_int_value ), public, deferred :: get_count pure function spd_get_int_value(this) result(x) Prototype Gets an integer value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The value. procedure( pd_get_string_result ), public, deferred :: get_data_string function pd_get_string_result(this) result(x) Prototype Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_fill_curve => spd_get_filled private pure function spd_get_filled(this) result(rst) Gets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the curve should be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_simplification_factor => spd_get_simplify_factor private pure function spd_get_simplify_factor(this) result(x) Gets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real64) The scaling factor. procedure, public :: get_simplify_data => spd_get_simplify_data private pure function spd_get_simplify_data(this) result(x) Gets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors private pure function spd_get_data_dependent_colors(this) result(rst) Gets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if data-dependent colors should be used; else, false. procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size private pure function spd_get_use_var_point_size(this) result(rst) Gets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if variable size points should be used; else, false. procedure( spd_get_value ), public, deferred :: get_x pure function spd_get_value(this, index) result(x) Prototype Gets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. Return Value real(kind=real64) The value. procedure( spd_get_value ), public, deferred :: get_y pure function spd_get_value(this, index) result(x) Prototype Gets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. Return Value real(kind=real64) The value. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_fill_curve => spd_set_filled private subroutine spd_set_filled(this, x) Sets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the curve should be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_simplification_factor => spd_set_simplify_factor private subroutine spd_set_simplify_factor(this, x) Sets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real64), intent(in) :: x The scaling factor. procedure, public :: set_simplify_data => spd_set_simplify_data private subroutine spd_set_simplify_data(this, x) Sets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors private subroutine spd_set_data_dependent_colors(this, x) Sets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if data-dependent colors should be used; else, false. procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size private subroutine spd_set_use_var_point_size(this, x) Sets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if variable size points should be used; else, false. procedure( spd_set_value ), public, deferred :: set_x subroutine spd_set_value(this, index, x) Prototype Sets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. real(kind=real64), intent(in) :: x The value. procedure( spd_set_value ), public, deferred :: set_y subroutine spd_set_value(this, index, x) Prototype Sets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. real(kind=real64), intent(in) :: x The value.","tags":"","loc":"type\\scatter_plot_data.html"},{"title":"name_value_pair – FPLOT ","text":"type, public :: name_value_pair Defines a name-value pair. Components Type Visibility Attributes Name Initial character(len=:), public, allocatable :: name The name. real(kind=real64), public :: value The associated value.","tags":"","loc":"type\\name_value_pair.html"},{"title":"plot_axis – FPLOT ","text":"type, public, extends( plot_object ) :: plot_axis Defines a plot axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle private pure function pa_get_auto_calc_title_angle(this) result(x) Gets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if GNUPLOT should automatically calculate the title\nangle; else, false. procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure( pa_get_string_result ), public, deferred :: get_id_string function pa_get_string_result(this) result(x) Prototype Retrieves a string from a plot_axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_angle => pa_get_title_angle private pure function pa_get_title_angle(this) result(x) Gets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The axis title angle, in degrees. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle private subroutine pa_set_auto_calc_title_angle(this, x) Sets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to automatically calculate the title angle;\nelse, set to false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_angle => pa_set_title_angle private subroutine pa_set_title_angle(this, x) Sets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The axis title angle, in degrees. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\plot_axis.html"},{"title":"x_axis – FPLOT ","text":"type, public, extends( plot_axis ) :: x_axis Defines an x-axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle private pure function pa_get_auto_calc_title_angle(this) result(x) Gets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if GNUPLOT should automatically calculate the title\nangle; else, false. procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_id_string => xa_get_id private function xa_get_id(this) result(x) Gets the axis identification string. Arguments Type Intent Optional Attributes Name class( x_axis ), intent(in) :: this The x_axis object. Return Value character(len=:), allocatable The identification string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_angle => pa_get_title_angle private pure function pa_get_title_angle(this) result(x) Gets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The axis title angle, in degrees. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle private subroutine pa_set_auto_calc_title_angle(this, x) Sets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to automatically calculate the title angle;\nelse, set to false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_angle => pa_set_title_angle private subroutine pa_set_title_angle(this, x) Sets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The axis title angle, in degrees. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\x_axis.html"},{"title":"y2_axis – FPLOT ","text":"type, public, extends( plot_axis ) :: y2_axis Defines a secondary y-axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle private pure function pa_get_auto_calc_title_angle(this) result(x) Gets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if GNUPLOT should automatically calculate the title\nangle; else, false. procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_id_string => y2a_get_id private function y2a_get_id(this) result(x) Gets the axis identification string. Arguments Type Intent Optional Attributes Name class( y2_axis ), intent(in) :: this The y2_axis object. Return Value character(len=:), allocatable The identification string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_angle => pa_get_title_angle private pure function pa_get_title_angle(this) result(x) Gets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The axis title angle, in degrees. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle private subroutine pa_set_auto_calc_title_angle(this, x) Sets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to automatically calculate the title angle;\nelse, set to false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_angle => pa_set_title_angle private subroutine pa_set_title_angle(this, x) Sets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The axis title angle, in degrees. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\y2_axis.html"},{"title":"y_axis – FPLOT ","text":"type, public, extends( plot_axis ) :: y_axis Defines a y-axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle private pure function pa_get_auto_calc_title_angle(this) result(x) Gets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if GNUPLOT should automatically calculate the title\nangle; else, false. procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_id_string => ya_get_id private function ya_get_id(this) result(x) Gets the axis identification string. Arguments Type Intent Optional Attributes Name class( y_axis ), intent(in) :: this The y_axis object. Return Value character(len=:), allocatable The identification string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_angle => pa_get_title_angle private pure function pa_get_title_angle(this) result(x) Gets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The axis title angle, in degrees. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle private subroutine pa_set_auto_calc_title_angle(this, x) Sets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to automatically calculate the title angle;\nelse, set to false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_angle => pa_set_title_angle private subroutine pa_set_title_angle(this, x) Sets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The axis title angle, in degrees. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\y_axis.html"},{"title":"z_axis – FPLOT ","text":"type, public, extends( plot_axis ) :: z_axis Defines a z-axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle private pure function pa_get_auto_calc_title_angle(this) result(x) Gets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if GNUPLOT should automatically calculate the title\nangle; else, false. procedure, public :: get_autoscale => pa_get_autoscale private pure function pa_get_autoscale(this) result(x) Gets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the axis should be automatically scaled; else, \nfalse. procedure, public :: get_command_string => pa_get_cmd_string private function pa_get_cmd_string(this) result(txt) Returns the appropriate GNUPLOT command string to define the\nplot_axis properties. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_id_string => za_get_id private function za_get_id(this) result(x) Gets the axis identification string. Arguments Type Intent Optional Attributes Name class( z_axis ), intent(in) :: this The z_axis object. Return Value character(len=:), allocatable The identification string. procedure, public :: get_is_log_scaled => pa_get_log_scale private pure function pa_get_log_scale(this) result(x) Gets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if log scaling is applied to the axis; else, false. procedure, public :: get_limits => pa_get_axis_limits private pure function pa_get_axis_limits(this) result(x) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real64), dimension(2) A two-element array containing the limits as follows:\n[lower, upper]. procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels private pure function pa_get_manual_tic_labels(this) result(rst) Gets a list of manual tic labels. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value type( name_value_pair ), allocatable, dimension(:) A list of name-value pairs where the name defines the label\nshown with the corresponding axis value. procedure, public :: get_offset_tics => pa_get_offset_tics private pure function pa_get_offset_tics(this) result(x) Gets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to offset the tics; else, set to false. procedure, public :: get_show_tic_labels => pa_get_show_tic_labels private pure function pa_get_show_tic_labels(this) result(x) Gets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to show tic labels; else, set to false. procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment private pure function pa_get_tic_label_alignment(this) result(x) Gets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: get_tic_label_angle => pa_get_tic_label_angle private pure function pa_get_tic_label_angle(this) result(x) Gets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The tic label angle, in degrees. procedure, public :: get_tic_label_format => pa_get_tic_label_fmt private pure function pa_get_tic_label_fmt(this) result(rst) Gets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label format string. procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin private pure function pa_get_tic_rotation_origin(this) result(x) Gets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset private pure function pa_get_tic_x_offset(this) result(x) Gets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label x-offset, in characters. procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset private pure function pa_get_tic_y_offset(this) result(x) Gets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The tic label y-offset, in characters. procedure, public :: get_title => pa_get_title private function pa_get_title(this) result(txt) Gets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The title. procedure, public :: get_title_angle => pa_get_title_angle private pure function pa_get_title_angle(this) result(x) Gets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The axis title angle, in degrees. procedure, public :: get_title_x_offset => pa_get_title_x_offset private pure function pa_get_title_x_offset(this) result(x) Gets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title x-offset, in characters. procedure, public :: get_title_y_offset => pa_get_title_y_offset private pure function pa_get_title_y_offset(this) result(x) Gets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value integer(kind=int32) The axis title y-offset, in characters. procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt private pure function pa_get_use_dft_tic_lbl_fmt(this) result(rst) Gets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if the default tic label format will be used; else, \nfalse. procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels private pure function pa_get_use_manual_tic_labels(this) result(rst) Gets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical True if manual tic labels should be used; else, false. procedure, public :: get_zero_axis => pa_get_zero_axis private pure function pa_get_zero_axis(this) result(x) Gets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true to draw as a zero axis; else, set to false. procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width private pure function pa_get_zero_axis_width(this) result(x) Gets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value real(kind=real32) The width of the line, in pixels. procedure, public :: is_title_defined => pa_has_title private pure function pa_has_title(this) result(x) Gets a value determining if a title has been defined for this axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value logical Returns true if a title has been defined; else, false. procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle private subroutine pa_set_auto_calc_title_angle(this, x) Sets whether GNUPLOT should automatically calculate the axis\ntitle angle. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to automatically calculate the title angle;\nelse, set to false. procedure, public :: set_autoscale => pa_set_autoscale private subroutine pa_set_autoscale(this, x) Sets a value determining if the axis should be automatically scaled\nto fit the data. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the axis should be automatically scaled; else, \nset to false. procedure, public :: set_is_log_scaled => pa_set_log_scale private subroutine pa_set_log_scale(this, x) Sets a logical value defining if the axis should be log scaled. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if log scaling is applied to the axis; else, false. procedure, public :: set_limits => pa_set_axis_limits private subroutine pa_set_axis_limits(this, lower, upper) Gets the axis display limits, assuming autoscaling is not\nactive for this axis. This routine also calls set_autoscale and\nsets the property value to false. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real64), intent(in) :: lower The lower display limit. real(kind=real64), intent(in) :: upper The upper display limit. procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels private subroutine pa_set_manual_tic_labels(this, x) Sets a list of manual tic labels. This routine also sets \nset_use_manual_tic_labels to true. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. type( name_value_pair ), intent(in), dimension(:) :: x The list of tic values with the name component representing the\ndisplayed label text and the value is the associated axis value. procedure, public :: set_offset_tics => pa_set_offset_tics private subroutine pa_set_offset_tics(this, x) Sets a value determining if the tics should be offset. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to offset the tics; else, set to false. procedure, public :: set_show_tic_labels => pa_set_show_tic_labels private subroutine pa_set_show_tic_labels(this, x) Sets a value determining if tic labels should be shown. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to show tic labels; else, set to false. procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment private subroutine pa_set_tic_label_alignment(this, x) Sets the tic label alignment. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label alignment. The tic label alignment must be one of \nthe following: GNUPLOT_HORIZONTAL_ALIGN_LEFT GNUPLOT_HORIZONTAL_ALIGN_CENTER GNUPLOT_HORIZONTAL_ALIGN_RIGHT procedure, public :: set_tic_label_angle => pa_set_tic_label_angle private subroutine pa_set_tic_label_angle(this, x) Sets the tic label angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The tic label angle, in degrees. procedure, public :: set_tic_label_format => pa_set_tic_label_fmt private subroutine pa_set_tic_label_fmt(this, x) Sets the tic label format. The format string can be any format \nstring accepted by the C command 'printf.' Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label format string. procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin private subroutine pa_set_tic_rotation_origin(this, x) Sets the tic label rotation origin. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: x The tic label rotation origin. The tic label rotation origin\nmust be one of the following: GNUPLOT_ROTATION_ORIGIN_RIGHT GNUPLOT_ROTATION_ORIGIN_LEFT GNUPLOT_ROTATION_ORIGIN_CENTER procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset private subroutine pa_set_tic_x_offset(this, x) Sets the tic label x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label x-offset, in characters. procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset private subroutine pa_set_tic_y_offset(this, x) Sets the tic label y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The tic label y-offset, in characters. procedure, public :: set_title => pa_set_title private subroutine pa_set_title(this, txt) Sets the axis title. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. character(len=*), intent(in) :: txt The title. procedure, public :: set_title_angle => pa_set_title_angle private subroutine pa_set_title_angle(this, x) Sets the axis title angle, in degrees. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The axis title angle, in degrees. procedure, public :: set_title_x_offset => pa_set_title_x_offset private subroutine pa_set_title_x_offset(this, x) Sets the axis title x-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title x-offset, in characters. procedure, public :: set_title_y_offset => pa_set_title_y_offset private subroutine pa_set_title_y_offset(this, x) Sets the axis title y-offset, in characters. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. integer(kind=int32), intent(in) :: x The axis title y-offset, in characters. procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt private subroutine pa_set_use_dft_tic_lbl_fmt(this, x) Sets a value determining if the default tic label format will be \nused. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if the default tic label format will be used; else, \nfalse. procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels private subroutine pa_set_use_manual_tic_labels(this, x) Sets a value determining if manual tic labels should be used. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true if manual tic labels should be used; else, false. procedure, public :: set_zero_axis => pa_set_zero_axis private subroutine pa_set_zero_axis(this, x) Sets a value determining if the axis should be drawn through\nzero of opposing axes. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. logical, intent(in) :: x Set to true to draw as a zero axis; else, set to false. procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width private subroutine pa_set_zero_axis_width(this, x) Sets the width of the line used to represent the zero axis line, if \nactive. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(inout) :: this The plot_axis object. real(kind=real32), intent(in) :: x The width of the line, in pixels.","tags":"","loc":"type\\z_axis.html"},{"title":"plot_2d – FPLOT ","text":"type, public, extends( plot ) :: plot_2d A plot object defining a 2D plot. Finalization Procedures final :: p2d_clean_up private subroutine p2d_clean_up(this) Cleans up resources held by the plot_2d object. Arguments Type Intent Optional Attributes Name type( plot_2d ), intent(inout) :: this The plot_2d object. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => p2d_get_cmd private function p2d_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot_2d object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_jitter_overlap => p2d_get_jitter_overlap private pure function p2d_get_jitter_overlap(this) result(rst) Gets the jitter overalp. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value real(kind=real32) The jitter overlap. procedure, public :: get_jitter_spread => p2d_get_jitter_spread private pure function p2d_get_jitter_spread(this) result(rst) Gets the jitter horizontal spread. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value real(kind=real32) The jitter horizontal spread. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_square_axes => p2d_get_square_axes private pure function p2d_get_square_axes(this) result(rst) Gets a logical flag determining if the axes size should be squared\noff. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical Returns true if the axes are to be sized to a square; else,\nfalse. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_use_jittering => p2d_get_use_jitter private pure function p2d_get_use_jitter(this) result(rst) Gets a logical value determining if jittering should be used. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical True if jittering should be used; else, false. procedure, public :: get_use_y2_axis => p2d_get_use_y2 private pure function p2d_get_use_y2(this) result(x) Gets a flag determining if the secondary y-axis should be\ndisplayed. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical Returns true if the axis should be displayed; else, false. procedure, public :: get_x_axis => p2d_get_x_axis private function p2d_get_x_axis(this) result(ptr) Gets the x-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the x-axis object. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y2_axis => p2d_get_y2_axis private function p2d_get_y2_axis(this) result(ptr) Gets the secondary y-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the secondary y-axis object. procedure, public :: get_y_axis => p2d_get_y_axis private function p2d_get_y_axis(this) result(ptr) Gets the y-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the y-axis object. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: initialize => p2d_init private subroutine p2d_init(this, term, fname, err) Initializes the plot_2d object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: p2d_push_data private subroutine p2d_push_data(this, x, y, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , p2d_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine p2d_push_data(this, x, y, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_jitter_overlap => p2d_set_jitter_overlap private subroutine p2d_set_jitter_overlap(this, x) Sets the jitter overlap. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real32), intent(in) :: x The jitter overlap. procedure, public :: set_jitter_spread => p2d_set_jitter_spread private subroutine p2d_set_jitter_spread(this, x) Sets the jitter horizontal spread. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real32), intent(in) :: x The jitter horizontal spread. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_square_axes => p2d_set_square_axes private subroutine p2d_set_square_axes(this, x) Sets a logical flag determining if the axes size should be\nsquared off. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if the axes are to be sized to a square; else,\nfalse. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_use_jittering => p2d_set_use_jitter private subroutine p2d_set_use_jitter(this, x) Sets a logical value determining if jittering should be used. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if jittering should be used; else, false. procedure, public :: set_use_y2_axis => p2d_set_use_y2 private subroutine p2d_set_use_y2(this, x) Sets a flag determining if the secondary y-axis should be\ndisplayed. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if the axis should be displayed; else, false. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_axis_title => p2d_set_x_axis_title private subroutine p2d_set_x_axis_title(this, x) Sets the title associated with the plot's x-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y2_axis_title => p2d_set_y2_axis_title private subroutine p2d_set_y2_axis_title(this, x) Sets the title associated with the plot's secondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_axis_title => p2d_set_y_axis_title private subroutine p2d_set_y_axis_title(this, x) Sets the title associated with the plot's y-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot_2d.html"},{"title":"delaunay_tri_2d – FPLOT ","text":"type, public :: delaunay_tri_2d Provides a container for a 2D Delaunay triangulation. Type-Bound Procedures procedure, public :: create => d2d_init private subroutine d2d_init(this, x, y, err) Creates an unconstrained 2D Delaunay triangulation given a \nset of x-y points. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(inout) :: this The delaunay_tri_2d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of each\ndata point. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of each\ndata point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: find_triangle => d2d_get_tri_with_pt private pure function d2d_get_tri_with_pt(this, x, y) result(rst) Finds the triangle that contains the specified point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. real(kind=real64), intent(in) :: x The x-coordinate of the point. real(kind=real64), intent(in) :: y The y-coordinate of the point. Return Value integer(kind=int32) Returns the index of the triangle containing the specified\npoint. If no triangle contains the specified point, a value of\n-1 is returned. procedure, public :: get_indices => d2d_get_tris private pure function d2d_get_tris(this) result(rst) Gets a list of the indices of each triangle vertex. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32), allocatable, dimension(:,:) An N-by-3 matrix with each column containing the index of the\nvertex of each triangle where N is the number of triangles. procedure, public :: get_point_count => d2d_get_pt_count private pure function d2d_get_pt_count(this) result(rst) Gets the number of points in the triangulation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32) The number of points in the triangulation. procedure, public :: get_points_x => d2d_get_x_pts private pure function d2d_get_x_pts(this) result(rst) Gets the x-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value real(kind=real64), allocatable, dimension(:) An array of the x-coordinates of each point. procedure, public :: get_points_y => d2d_get_y_pts private pure function d2d_get_y_pts(this) result(rst) Gets the y-coordinates of each point. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value real(kind=real64), allocatable, dimension(:) An array of the y-coordinates of each point. procedure, public :: get_triangle_count => d2d_get_tri_count private pure function d2d_get_tri_count(this) result(rst) Gets the number of triangles in the triangulation. Arguments Type Intent Optional Attributes Name class( delaunay_tri_2d ), intent(in) :: this The delaunay_tri_2d object. Return Value integer(kind=int32) The number of triangles in the triangulation.","tags":"","loc":"type\\delaunay_tri_2d.html"},{"title":"correlation_plot – FPLOT ","text":"type, public, extends( plot_object ) :: correlation_plot Defines a multiplot arrangement designed to illustrate correlation\nbetween data sets. Type-Bound Procedures procedure, public :: draw => cp_draw private subroutine cp_draw(this, persist, err) Launches GNUPLOT and draws the correlation_plot per the current \nstate of the command list. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false\nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get => cp_get private function cp_get(this, i, j) result(x) Gets the requested plot object. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. integer(kind=int32), intent(in) :: i The row index of the plot to retrieve. integer(kind=int32), intent(in) :: j The column index of the plot to retrieve. Return Value class( plot ), pointer A pointer to the plot object. procedure, public :: get_column_count => cp_get_cols private pure function cp_get_cols(this) result(x) Gets the number of columns of plots. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value integer(kind=int32) The column count. procedure, public :: get_command_string => cp_get_command private function cp_get_command(this) result(x) Gets the GNUPLOT commands for this object. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value character(len=:), allocatable The command string. procedure, public :: get_font_name => cp_get_font private function cp_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => cp_get_font_size private function cp_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value integer(kind=int32) The font size. procedure, public :: get_plot_count => cp_get_count private pure function cp_get_count(this) result(x) Gets the total number of plots. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value integer(kind=int32) The plot count. procedure, public :: get_row_count => cp_get_rows private pure function cp_get_rows(this) result(x) Gets the number of rows of plots. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value integer(kind=int32) The row count. procedure, public :: get_terminal => cp_get_term private function cp_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. Return Value class( terminal ), pointer A pointer to the terminal object. procedure, public :: initialize => cp_init private subroutine cp_init(this, x, labels, term, width, height, err) Initializes the correlation_plot object. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(inout) :: this The correlation_plot object. real(kind=real64), intent(in), dimension(:,:) :: x The data to plot with each column representing a data set. type(string), intent(in), optional, dimension(:) :: labels An optional array containing a label to associate with each\ndata set in x. If supplied, this array must have the same length\nas x has columns. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal. The \ndefault terminal is a WXT terminal. The acceptable inputs are: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF integer(kind=int32), intent(in), optional :: width Optionally, the width of the plot window. integer(kind=int32), intent(in), optional :: height Optionally, the height of the plot window. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => cp_save private subroutine cp_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(in) :: this The correlation_plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_font_name => cp_set_font private subroutine cp_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(inout) :: this The correlation_plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => cp_set_font_size private subroutine cp_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( correlation_plot ), intent(inout) :: this The correlation_plot object. integer(kind=int32), intent(in) :: x The font size.","tags":"","loc":"type\\correlation_plot.html"},{"title":"wxt_terminal – FPLOT ","text":"type, public, extends( terminal ) :: wxt_terminal A WXT terminal. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string private function term_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => wxt_get_term_string private function wxt_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( wxt_terminal ), intent(in) :: this The wxt_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\wxt_terminal.html"},{"title":"latex_terminal – FPLOT ","text":"type, public, extends( file_terminal ) :: latex_terminal A LATEX terminal. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string private function fterm_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => tex_get_term_string private function tex_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( latex_terminal ), intent(in) :: this The latex_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\latex_terminal.html"},{"title":"file_terminal – FPLOT ","text":"type, public, extends( terminal ) :: file_terminal Defines a terminal meant to save results directly to file \n(e.g. PNG, SVG, etc.). Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string private function fterm_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure( term_get_string_result ), public, deferred :: get_id_string function term_get_string_result(this) result(x) Prototype Retrieves a string from a terminal. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\file_terminal.html"},{"title":"terminal – FPLOT ","text":"type, public, extends( plot_object ) :: terminal A GNUPLOT terminal object. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string private function term_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure( term_get_string_result ), public, deferred :: get_id_string function term_get_string_result(this) result(x) Prototype Retrieves a string from a terminal. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\terminal.html"},{"title":"plot_data_2d – FPLOT ","text":"type, public, extends( scatter_plot_data ) :: plot_data_2d Defines a two-dimensional plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pd2d_clear_data private subroutine pd2d_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. generic, public :: define_data => pd2d_set_data_1 , pd2d_set_data_2 private subroutine pd2d_set_data_1(this, x, y, c, ps, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinate data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinate data. real(kind=real64), intent(in), optional, dimension(:) :: c An N-element array defining how color should vary with the \ncurrent colormap for each value. real(kind=real64), intent(in), optional, dimension(:) :: ps An N-element array defining the size of each data point. class( errors ), intent(inout), optional, target :: err An error-handling object. private subroutine pd2d_set_data_2(this, y, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinate data. This\ndata will be plotted against its own index. class( errors ), intent(inout), optional, target :: err An error-handling object. procedure, public :: get_axes_string => pd2d_get_axes_cmd private function pd2d_get_axes_cmd(this) result(x) Gets the GNUPLOT command string defining which axes the data\nis to be plotted against. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_color_data => pd2d_get_c_array private function pd2d_get_c_array(this) result(x) Gets the stored color scaling data array. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => spd_get_cmd public function spd_get_cmd (this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => pd2d_get_data_count private pure function pd2d_get_data_count(this) result(x) Gets the number of data points. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value integer(kind=int32) The number of data points. procedure, public :: get_data_string => pd2d_get_data_cmd private function pd2d_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data\nto plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => pd2d_get_draw_against_y2 private pure function pd2d_get_draw_against_y2(this) result(x) Gets a value determining if the data should be plotted against\nthe secondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value logical Returns true if the data should be plotted against the secondary\ny-axis; else, false to plot against the primary y-axis. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_fill_curve => spd_get_filled private pure function spd_get_filled(this) result(rst) Gets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the curve should be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_point_size_data => pd2d_get_ps_array private function pd2d_get_ps_array(this) result(x) Gets the stored point size data array. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_simplification_factor => spd_get_simplify_factor private pure function spd_get_simplify_factor(this) result(x) Gets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real64) The scaling factor. procedure, public :: get_simplify_data => spd_get_simplify_data private pure function spd_get_simplify_data(this) result(x) Gets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors private pure function spd_get_data_dependent_colors(this) result(rst) Gets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if data-dependent colors should be used; else, false. procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size private pure function spd_get_use_var_point_size(this) result(rst) Gets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if variable size points should be used; else, false. procedure, public :: get_x => pd2d_get_x_data private pure function pd2d_get_x_data(this, index) result(x) Gets the requested X data point. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_x_data => pd2d_get_x_array private function pd2d_get_x_array(this) result(x) Gets the stored X data array. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_y => pd2d_get_y_data private pure function pd2d_get_y_data(this, index) result(x) Gets the requested Y data point. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_y_data => pd2d_get_y_array private function pd2d_get_y_array(this) result(x) Gets the stored Y data array. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(in) :: this The plot_data_2d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: pd2d_set_data_1 private subroutine pd2d_set_data_1(this, x, y, c, ps, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinate data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinate data. real(kind=real64), intent(in), optional, dimension(:) :: c An N-element array defining how color should vary with the \ncurrent colormap for each value. real(kind=real64), intent(in), optional, dimension(:) :: ps An N-element array defining the size of each data point. class( errors ), intent(inout), optional, target :: err An error-handling object. procedure, public :: pd2d_set_data_2 private subroutine pd2d_set_data_2(this, y, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinate data. This\ndata will be plotted against its own index. class( errors ), intent(inout), optional, target :: err An error-handling object. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => pd2d_set_draw_against_y2 private subroutine pd2d_set_draw_against_y2(this, x) Sets a value determining if the data should be plotted against\nthe secondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. logical, intent(in) :: x Set to true if the data should be plotted against the\nsecondary y-axis; else, false to plot against the primary y-axis. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_fill_curve => spd_set_filled private subroutine spd_set_filled(this, x) Sets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the curve should be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_simplification_factor => spd_set_simplify_factor private subroutine spd_set_simplify_factor(this, x) Sets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real64), intent(in) :: x The scaling factor. procedure, public :: set_simplify_data => spd_set_simplify_data private subroutine spd_set_simplify_data(this, x) Sets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors private subroutine spd_set_data_dependent_colors(this, x) Sets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if data-dependent colors should be used; else, false. procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size private subroutine spd_set_use_var_point_size(this, x) Sets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if variable size points should be used; else, false. procedure, public :: set_x => pd2d_set_x_data private subroutine pd2d_set_x_data(this, index, x) Sets the requested X data point. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point. procedure, public :: set_y => pd2d_set_y_data private subroutine pd2d_set_y_data(this, index, x) Sets the requested Y data point. Arguments Type Intent Optional Attributes Name class( plot_data_2d ), intent(inout) :: this The plot_data_2d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point.","tags":"","loc":"type\\plot_data_2d.html"},{"title":"plot_data_3d – FPLOT ","text":"type, public, extends( scatter_plot_data ) :: plot_data_3d Defines a three-dimensional plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pd3d_clear_data private subroutine pd3d_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pd3d_set_data_1 private subroutine pd3d_set_data_1(this, x, y, z, c, ps, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinate data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinate data. real(kind=real64), intent(in), dimension(:) :: z An N-element array containing the z coordinate data. real(kind=real64), intent(in), optional, dimension(:) :: c An N-element array defining how color should vary with the \ncurrent colormap for each value. real(kind=real64), intent(in), optional, dimension(:) :: ps An N-element array defining the size of each data point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_axes_string => pd3d_get_axes_cmd private function pd3d_get_axes_cmd(this) result(x) Gets the GNUPLOT command string defining which axes the data\nis to be plotted against. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_color_data => pd3d_get_c_array private function pd3d_get_c_array(this) result(x) Gets the stored color scaling data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => spd_get_cmd public function spd_get_cmd (this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => pd3d_get_data_count private pure function pd3d_get_data_count(this) result(x) Gets the number of data points. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value integer(kind=int32) The number of data points. procedure, public :: get_data_string => pd3d_get_data_cmd private function pd3d_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data to plot. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines private pure function lpd_get_draw_impulse_lines(this) result(x) Gets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical True if impulse lines should be drawn; else, false. procedure, public :: get_draw_line => lpd_get_draw_line private pure function lpd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => lpd_get_draw_markers private pure function lpd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value logical Returns true if the markers should be drawn; else, false. procedure, public :: get_fill_curve => spd_get_filled private pure function spd_get_filled(this) result(rst) Gets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the curve should be filled; else, false. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_style => lpd_get_line_style private pure function lpd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_line_width => lpd_get_line_width private pure function lpd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => lpd_get_marker_frequency private pure function lpd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => lpd_get_marker_scaling private pure function lpd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => lpd_get_marker_style private pure function lpd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value integer(kind=int32) The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_point_size_data => pd3d_get_c_array private function pd3d_get_c_array(this) result(x) Gets the stored color scaling data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_simplification_factor => spd_get_simplify_factor private pure function spd_get_simplify_factor(this) result(x) Gets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real64) The scaling factor. procedure, public :: get_simplify_data => spd_get_simplify_data private pure function spd_get_simplify_data(this) result(x) Gets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors private pure function spd_get_data_dependent_colors(this) result(rst) Gets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if data-dependent colors should be used; else, false. procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size private pure function spd_get_use_var_point_size(this) result(rst) Gets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical True if variable size points should be used; else, false. procedure, public :: get_x => pd3d_get_x_data private pure function pd3d_get_x_data(this, index) result(x) Gets the requested X data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_x_data => pd3d_get_x_array private function pd3d_get_x_array(this) result(x) Gets the stored X data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_y => pd3d_get_y_data private pure function pd3d_get_y_data(this, index) result(x) Gets the requested Y data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_y_data => pd3d_get_y_array private function pd3d_get_y_array(this) result(x) Gets the stored Y data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: get_z => pd3d_get_z_data private pure function pd3d_get_z_data(this, index) result(x) Gets the requested Z data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to retrieve. Return Value real(kind=real64) The requested data point. procedure, public :: get_z_data => pd3d_get_z_array private function pd3d_get_z_array(this) result(x) Gets the stored Z data array. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(in) :: this The plot_data_3d object. Return Value real(kind=real64), allocatable, dimension(:) A copy of the stored data array. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines private subroutine lpd_set_draw_impulse_lines(this, x) Sets a value determining if impulse lines should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x True if impulse lines should be drawn; else, false. procedure, public :: set_draw_line => lpd_set_draw_line private subroutine lpd_set_draw_line(this, x) Sets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => lpd_set_draw_markers private subroutine lpd_set_draw_markers(this, x) Sets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. logical, intent(in) :: x Set to true if the markers should be drawn; else, false. procedure, public :: set_fill_curve => spd_set_filled private subroutine spd_set_filled(this, x) Sets a logical value determining if a filled curve should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the curve should be filled; else, false. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_style => lpd_set_line_style private subroutine lpd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_line_width => lpd_set_line_width private subroutine lpd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => lpd_set_marker_frequency private subroutine lpd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => lpd_set_marker_scaling private subroutine lpd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => lpd_set_marker_style private subroutine lpd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(inout) :: this The line_plot_data object. integer(kind=int32), intent(in) :: x The marker type. The marker type must be one of the following: MARKER_ASTERISK MARKER_EMPTY_CIRCLE MARKER_EMPTY_NABLA MARKER_EMPTY_RHOMBUS MARKER_EMPTY_SQUARE MARKER_EMPTY_TRIANGLE MARKER_FILLED_CIRCLE MARKER_FILLED_NABLA MARKER_FILLED_RHOMBUS MARKER_FILLED_SQUARE MARKER_FILLED_TRIANGLE MARKER_PLUS MARKER_X procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_simplification_factor => spd_set_simplify_factor private subroutine spd_set_simplify_factor(this, x) Sets a factor used to establish the simplification tolerance. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real64), intent(in) :: x The scaling factor. procedure, public :: set_simplify_data => spd_set_simplify_data private subroutine spd_set_simplify_data(this, x) Sets a value determining if the stored data should be\nsimplified (reduced) before passing to GNUPLOT. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if the data should be simplified prior to sending\nto GNUPLOT; else, false to leave the data alone. procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors private subroutine spd_set_data_dependent_colors(this, x) Sets a value determing if data-dependent colors should be used. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if data-dependent colors should be used; else, false. procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size private subroutine spd_set_use_var_point_size(this, x) Sets a logical value determining if variable sized data points\nshould be used. The default is false, such that points will be of\na constant size. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. logical, intent(in) :: x True if variable size points should be used; else, false. procedure, public :: set_x => pd3d_set_x_data private subroutine pd3d_set_x_data(this, index, x) Sets the requested X data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point. procedure, public :: set_y => pd3d_set_y_data private subroutine pd3d_set_y_data(this, index, x) Sets the requested Y data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point. procedure, public :: set_z => pd3d_set_z_data private subroutine pd3d_set_z_data(this, index, x) Sets the requested Z data point. Arguments Type Intent Optional Attributes Name class( plot_data_3d ), intent(inout) :: this The plot_data_3d object. integer(kind=int32), intent(in) :: index The index of the data point to replace. real(kind=real64), intent(in) :: x The data point.","tags":"","loc":"type\\plot_data_3d.html"},{"title":"color – FPLOT ","text":"type, public :: color Describes an RGB color. Components Type Visibility Attributes Name Initial integer(kind=int32), public :: alpha = 0 The alpha component of the color (must be between 0 and 255).\nNotice, 0 is fully opaque and 255 is fully transparent. integer(kind=int32), public :: blue = 255 The blue component of the color (must be between 0 and 255). integer(kind=int32), public :: green = 0 The green component of the color (must be between 0 and 255). integer(kind=int32), public :: red = 0 The red component of the color (must be between 0 and 255). Type-Bound Procedures procedure, public, pass :: copy_from => clr_copy_from private subroutine clr_copy_from(this, clr) Copies another color to this color. Arguments Type Intent Optional Attributes Name class( color ), intent(inout) :: this The color object. class( color ), intent(in) :: clr The color to copy. procedure, public, pass :: rgb_to_hex_string => clr_rgb_to_hex_string private pure function clr_rgb_to_hex_string(this) result(txt) Returns the color in hexadecimal format ignoring any alpha channel. Arguments Type Intent Optional Attributes Name class( color ), intent(in) :: this The color object. Return Value character(len=6) A string containing the hexadecimal equivalent. procedure, public, pass :: to_hex_string => clr_to_hex_string private pure function clr_to_hex_string(this) result(txt) Returns the color in hexadecimal format. Arguments Type Intent Optional Attributes Name class( color ), intent(in) :: this The color object. Return Value character(len=8) A string containing the hexadecimal equivalent.","tags":"","loc":"type\\color.html"},{"title":"plot_polar – FPLOT ","text":"type, public, extends( plot ) :: plot_polar Finalization Procedures final :: plr_clean_up private subroutine plr_clean_up(this) Cleans up resources held by the plot_polar object. Arguments Type Intent Optional Attributes Name type( plot_polar ), intent(inout) :: this The plot_polar object. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_autoscale => plr_get_autoscale private pure function plr_get_autoscale(this) result(rst) Gets a logical value determining if the axis should be \nautomatically scaled to fit the data. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value logical Returns true if the plot will autoscale; else, false. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => plr_get_cmd private function plr_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot_polar object. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_radial_limits => plr_get_limits private pure function plr_get_limits(this) result(rst) Gets the radial axis limits if autoscaling is inactive. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value real(kind=real64), (2) A 2-element array containing the minimum and maximum limit\nvalues in that order. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_theta_direction => plr_get_theta_direction private pure function plr_get_theta_direction(this) result(rst) Gets the direction. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value character(len=:), allocatable The direction. It is one of the following flags. POLAR_THETA_CCW POLAR_THETA_CW procedure, public :: get_theta_start_position => plr_get_theta_start private pure function plr_get_theta_start(this) result(rst) Gets the position for . Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(in) :: this The plot_polar object. Return Value character(len=:), allocatable The starting position. It is one of the following flags. POLAR_THETA_BOTTOM POLAR_THETA_TOP POLAR_THETA_RIGHT POLAR_THETA_LEFT procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: initialize => plr_init private subroutine plr_init(this, term, fname, err) Initializes the plot_polar object. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: plr_push_data private subroutine plr_push_data(this, angle, radial, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. real(kind=real64), intent(in), dimension(:) :: angle The angular values. real(kind=real64), intent(in), dimension(size(angle)) :: radial The radial values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , plr_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine plr_push_data(this, angle, radial, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. real(kind=real64), intent(in), dimension(:) :: angle The angular values. real(kind=real64), intent(in), dimension(size(angle)) :: radial The radial values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_autoscale => plr_set_autoscale private subroutine plr_set_autoscale(this, x) Sets a logical value determining if the axis should be \nautomatically scaled to fit the data. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. logical, intent(in) :: x Set to true if the plot will autoscale; else, false. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_radial_limits => plr_set_limits private subroutine plr_set_limits(this, x) Sets the radial axis limits if autoscaling is inactive. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. real(kind=real64), intent(in) :: x (2) A 2-element array containing the minimum and maximum limit\nvalues in that order. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_theta_direction => plr_set_theta_direction private subroutine plr_set_theta_direction(this, x) Sets the direction. Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. character(len=*), intent(in) :: x The direction. It is one of the following flags. POLAR_THETA_CCW POLAR_THETA_CW procedure, public :: set_theta_start_position => plr_set_theta_start private subroutine plr_set_theta_start(this, x) Sets the position for . Arguments Type Intent Optional Attributes Name class( plot_polar ), intent(inout) :: this The plot_polar object. character(len=*), intent(in) :: x The starting position. It is one of the following flags. POLAR_THETA_BOTTOM POLAR_THETA_TOP POLAR_THETA_RIGHT POLAR_THETA_LEFT procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot_polar.html"},{"title":"plot_bar – FPLOT ","text":"type, public, extends( plot_2d ) :: plot_bar Defines a 2D plot tailored towards bar plotting. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_bar_width => pb_get_bar_width private pure function pb_get_bar_width(this) result(x) Gets the bar width scaling factor. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(in) :: this The plot_bar object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => pb_get_cmd private function pb_get_cmd(this) result(x) Gets the GNUPLOT commands required to draw the plot. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(in) :: this The plot_bar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_jitter_overlap => p2d_get_jitter_overlap private pure function p2d_get_jitter_overlap(this) result(rst) Gets the jitter overalp. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value real(kind=real32) The jitter overlap. procedure, public :: get_jitter_spread => p2d_get_jitter_spread private pure function p2d_get_jitter_spread(this) result(rst) Gets the jitter horizontal spread. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value real(kind=real32) The jitter horizontal spread. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_spacing => pb_get_spacing private pure function pb_get_spacing(this) result(rst) Gets the spacing between clusters of data sets. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(in) :: this The [[plot+bar]] object. Return Value integer(kind=int32) The spacing. procedure, public :: get_square_axes => p2d_get_square_axes private pure function p2d_get_square_axes(this) result(rst) Gets a logical flag determining if the axes size should be squared\noff. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical Returns true if the axes are to be sized to a square; else,\nfalse. procedure, public :: get_stacked => pb_get_stacked private pure function pb_get_stacked(this) result(rst) Gets a value determining if data sets should be stacked (true) or\nleft side-by-side (false). Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(in) :: this The plot_bar object. Return Value logical True if multiple data sets should be stacked; else, false. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_use_jittering => p2d_get_use_jitter private pure function p2d_get_use_jitter(this) result(rst) Gets a logical value determining if jittering should be used. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical True if jittering should be used; else, false. procedure, public :: get_use_y2_axis => p2d_get_use_y2 private pure function p2d_get_use_y2(this) result(x) Gets a flag determining if the secondary y-axis should be\ndisplayed. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value logical Returns true if the axis should be displayed; else, false. procedure, public :: get_x_axis => p2d_get_x_axis private function p2d_get_x_axis(this) result(ptr) Gets the x-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the x-axis object. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y2_axis => p2d_get_y2_axis private function p2d_get_y2_axis(this) result(ptr) Gets the secondary y-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the secondary y-axis object. procedure, public :: get_y_axis => p2d_get_y_axis private function p2d_get_y_axis(this) result(ptr) Gets the y-axis object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(in) :: this The plot_2d object. Return Value class( plot_axis ), pointer A pointer to the y-axis object. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: initialize => p2d_init private subroutine p2d_init(this, term, fname, err) Initializes the plot_2d object. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\n The default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: p2d_push_data private subroutine p2d_push_data(this, x, y, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data , p2d_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine p2d_push_data(this, x, y, lw, name, ls, lc) Adds a data set to the plot. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real64), intent(in), dimension(:) :: x The x-values. real(kind=real64), intent(in), dimension(size(x)) :: y The y-values. real(kind=real32), intent(in), optional :: lw The line width. character(len=*), intent(in), optional :: name A name to associate with the data set. integer(kind=int32), intent(in), optional :: ls The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID type( color ), intent(in), optional :: lc The line color. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_bar_width => pb_set_bar_width private subroutine pb_set_bar_width(this, x) Sets the bar width scaling factor. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(inout) :: this The plot_bar object. real(kind=real32), intent(in) :: x The scaling factor. The value must be in the set [0, 1]; else, the\nvalue will be shifted accordingly. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_jitter_overlap => p2d_set_jitter_overlap private subroutine p2d_set_jitter_overlap(this, x) Sets the jitter overlap. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real32), intent(in) :: x The jitter overlap. procedure, public :: set_jitter_spread => p2d_set_jitter_spread private subroutine p2d_set_jitter_spread(this, x) Sets the jitter horizontal spread. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. real(kind=real32), intent(in) :: x The jitter horizontal spread. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_spacing => pb_set_spacing private subroutine pb_set_spacing(this, x) Sets the spacing between clusters of data sets. Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(inout) :: this The [[plot+bar]] object. integer(kind=int32), intent(in) :: x The spacing. procedure, public :: set_square_axes => p2d_set_square_axes private subroutine p2d_set_square_axes(this, x) Sets a logical flag determining if the axes size should be\nsquared off. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if the axes are to be sized to a square; else,\nfalse. procedure, public :: set_stacked => pb_set_stacked private subroutine pb_set_stacked(this, x) Gets a value determining if data sets should be stacked (true) or\nleft side-by-side (false). Arguments Type Intent Optional Attributes Name class( plot_bar ), intent(inout) :: this The plot_bar object. logical, intent(in) :: x True if multiple data sets should be stacked; else, false. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_use_jittering => p2d_set_use_jitter private subroutine p2d_set_use_jitter(this, x) Sets a logical value determining if jittering should be used. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if jittering should be used; else, false. procedure, public :: set_use_y2_axis => p2d_set_use_y2 private subroutine p2d_set_use_y2(this, x) Sets a flag determining if the secondary y-axis should be\ndisplayed. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. logical, intent(in) :: x Set to true if the axis should be displayed; else, false. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_axis_title => p2d_set_x_axis_title private subroutine p2d_set_x_axis_title(this, x) Sets the title associated with the plot's x-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y2_axis_title => p2d_set_y2_axis_title private subroutine p2d_set_y2_axis_title(this, x) Sets the title associated with the plot's secondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_axis_title => p2d_set_y_axis_title private subroutine p2d_set_y_axis_title(this, x) Sets the title associated with the plot's y-axis. Arguments Type Intent Optional Attributes Name class( plot_2d ), intent(inout) :: this The plot_2d object. character(len=*), intent(in) :: x The title. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot_bar.html"},{"title":"plot_arrow – FPLOT ","text":"type, public, extends( plot_object ) :: plot_arrow Defines an arrow that can be drawn on a plot. Type-Bound Procedures procedure, public :: get_color => par_get_color private pure function par_get_color(this) result(rst) Gets the color of the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value type( color ) The color. procedure, public :: get_command_string => par_get_cmd private function par_get_cmd(this) result(rst) Returns the appropriate GNUPLOT command string to establish appropriate \nparameters. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_head_angle => par_get_head_angle private pure function par_get_head_angle(this) result(rst) Gets the angle of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32) The angle, in degrees. procedure, public :: get_head_back_angle => par_get_head_back_angle private pure function par_get_head_back_angle(this) result(rst) Gets the angle of the back of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32) The angle, in degrees. procedure, public :: get_head_fill => par_get_fill private pure function par_get_fill(this) result(rst) Gets a flag denoting the head fill type. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value integer(kind=int32) The flag denoting head fill. procedure, public :: get_head_location => par_get_head private pure function par_get_head(this) result(rst) Gets the coordinates of the arrow's head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32), dimension(3) A 3-element array containing the x, y, and z coordinates of the\narrow's head. procedure, public :: get_head_size => par_get_head_size private pure function par_get_head_size(this) result(rst) Gets the size of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32) The head size. procedure, public :: get_head_type => par_get_head_type private pure function par_get_head_type(this) result(rst) Gets the type of arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value integer(kind=int32) The arrow head type. procedure, public :: get_is_visible => par_get_is_visible private pure function par_get_is_visible(this) result(rst) Gets a value determining if the arrow is visible. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value logical True if the arrow is visible; else, false. procedure, public :: get_line_style => par_get_line_style private pure function par_get_line_style(this) result(rst) Gets the line style used to draw the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value integer(kind=int32) The line style. procedure, public :: get_line_width => par_get_line_width private pure function par_get_line_width(this) result(rst) Gets the width of the lines used to draw the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32) The width of the line. procedure, public :: get_move_to_front => par_get_move_to_front private pure function par_get_move_to_front(this) result(rst) Gets a value determining if the arrow should be moved to the front. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value logical True if the arrow should be moved to the front; else, false. procedure, public :: get_tail_location => par_get_tail private pure function par_get_tail(this) result(rst) Gets the coordinates of the arrow's tail. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value real(kind=real32), dimension(3) A 3-element array containing the x, y, and z coordinates of the \narrow's tail. procedure, public :: get_use_default_size => par_get_use_default_size private pure function par_get_use_default_size(this) result(rst) Gets a value determining if arrow head sizing defaults should be used. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(in) :: this The plot_arrow object. Return Value logical True if the defaults should be used; else, false. procedure, public :: set_color => par_set_color private subroutine par_set_color(this, x) Sets the color of the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. type( color ), intent(in) :: x The color. procedure, public :: set_head_angle => par_set_head_angle private subroutine par_set_head_angle(this, x) Sets the angle of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The angle, in degrees. procedure, public :: set_head_back_angle => par_set_head_back_angle private subroutine par_set_head_back_angle(this, x) Sets the angle of the back of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The angle, in degrees. procedure, public :: set_head_fill => par_set_fill private subroutine par_set_fill(this, x) Sets a flag denoting the head fill type. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. integer(kind=int32), intent(in) :: x The flag denoting head fill. It must be one of the following \nconstants. ARROW_FILLED ARROW_EMPTY ARROW_NO_BORDER ARROW_NO_FILL If the value is not one of the above, the command is ignored. generic, public :: set_head_location => par_set_head_1, par_set_head_2, par_set_head_3 private subroutine par_set_head_1(this, x) Sets the location of the arrow's head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x (3) A 3-element array containing the x, y, and z coordinates of the\narrow's head. private subroutine par_set_head_2(this, x, y) Sets the location of the arrow's head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The x-coordinate of the arrow's head. real(kind=real32), intent(in) :: y The y-coordinate of the arrow's head. private subroutine par_set_head_3(this, x, y, z) Sets the location of the arrow's head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The x-coordinate of the arrow's head. real(kind=real32), intent(in) :: y The y-coordinate of the arrow's head. real(kind=real32), intent(in) :: z The z-coordinate of the arrow's head. procedure, public :: set_head_size => par_set_head_size private subroutine par_set_head_size(this, x) Sets the size of the arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The head size. procedure, public :: set_head_type => par_set_head_type private subroutine par_set_head_type(this, x) Sets the type of arrow head. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. integer(kind=int32), intent(in) :: x The arrow head type. It must be one of the following constants. ARROW_HEAD ARROW_BACKHEAD ARROW_HEADS ARROW_NO_HEAD If the value is not one of the above, the command is ignored. procedure, public :: set_is_visible => par_set_is_visible private subroutine par_set_is_visible(this, x) Sets a value determining if the arrow is visible. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. logical, intent(in) :: x True if the arrow is visible; else, false. procedure, public :: set_line_style => par_set_line_style private subroutine par_set_line_style(this, x) Sets the line style used to draw the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. integer(kind=int32), intent(in) :: x The line style. The value must be one of the following. LINE_SOLID LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED If the value is not one of the above, the command is ignored. procedure, public :: set_line_width => par_set_line_width private subroutine par_set_line_width(this, x) Sets the width of the lines used to draw the arrow. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The width of the line. procedure, public :: set_move_to_front => par_set_move_to_front private subroutine par_set_move_to_front(this, x) Sets a value determining if the arrow should be moved to the front. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. logical, intent(in) :: x True if the arrow should be moved to the front; else, false. generic, public :: set_tail_location => par_set_tail_1, par_set_tail_2, par_set_tail_3 private subroutine par_set_tail_1(this, x) Sets the coordinates of the arrow's tail. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x (3) A 3-element array containing the x, y, and z coordinates of the \narrow's tail. private subroutine par_set_tail_2(this, x, y) Sets the coordinates of the arrow's tail. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The x-coordinate of the arrow's tail. real(kind=real32), intent(in) :: y !! The y-coordinate of the arrow's tail. private subroutine par_set_tail_3(this, x, y, z) Sets the coordinates of the arrow's tail. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. real(kind=real32), intent(in) :: x The x-coordinate of the arrow's tail. real(kind=real32), intent(in) :: y The y-coordinate of the arrow's tail. real(kind=real32), intent(in) :: z The z-coordinate of the arrow's tail. procedure, public :: set_use_default_size => par_set_use_default_size private subroutine par_set_use_default_size(this, x) Sets a value determining if arrow head sizing defaults should be used. Arguments Type Intent Optional Attributes Name class( plot_arrow ), intent(inout) :: this The plot_arrow object. logical, intent(in) :: x True if the defaults should be used; else, false.","tags":"","loc":"type\\plot_arrow.html"},{"title":"png_terminal – FPLOT ","text":"type, public, extends( file_terminal ) :: png_terminal Defines a terminal used for producing PNG outputs. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string private function fterm_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => png_get_term_string private function png_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( png_terminal ), intent(in) :: this The png_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\png_terminal.html"},{"title":"colormap – FPLOT ","text":"type, public, extends( plot_object ) :: colormap A colormap object for a surface plot. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure( cm_get_string_result ), public, deferred :: get_color_string function cm_get_string_result(this) result(x) Prototype Retrieves a string result from a colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\colormap.html"},{"title":"cool_colormap – FPLOT ","text":"type, public, extends( colormap ) :: cool_colormap Defines a colormap consisting of \"cool\" colors. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure, public :: get_color_string => ccm_get_clr private function ccm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( cool_colormap ), intent(in) :: this The cool_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\cool_colormap.html"},{"title":"custom_colormap – FPLOT ","text":"type, public, extends( colormap ) :: custom_colormap Defines a custom colormap that utilizes the FORCOLORMAP library\nto provide the map. Finalization Procedures final :: custom_final private subroutine custom_final(this) Arguments Type Intent Optional Attributes Name type( custom_colormap ), intent(inout) :: this The custom_colormap object. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure, public :: get_color_string => custom_get_clr private function custom_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( custom_colormap ), intent(in) :: this The custom_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colormap => custom_get private function custom_get(this) result(rst) Gets a pointer to the FORCOLORMAP colormap object. Arguments Type Intent Optional Attributes Name class( custom_colormap ), intent(in) :: this The custom_colormap object. Return Value class(cmap), pointer A pointer to the FORCOLORMAP colormap object. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_colormap => custom_set private subroutine custom_set(this, map, err) Sets the FORCOLORMAP colormap object. Arguments Type Intent Optional Attributes Name class( custom_colormap ), intent(inout) :: this The custom_colormap object. class(cmap), intent(in) :: map The FORCOLORMAP colormap object. The custom_colormap object \nstores a copy of this object; therefore, any changes made to \nx after calls to this routine will not impact the behavior of \nthe custom_colormap object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\custom_colormap.html"},{"title":"earth_colormap – FPLOT ","text":"type, public, extends( colormap ) :: earth_colormap Defines an earthy-colored colormap. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure, public :: get_color_string => ecm_get_clr private function ecm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( earth_colormap ), intent(in) :: this The earth_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\earth_colormap.html"},{"title":"grey_colormap – FPLOT ","text":"type, public, extends( colormap ) :: grey_colormap Defines a grey-scaled colormap. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure, public :: get_color_string => gcm_get_clr private function gcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( grey_colormap ), intent(in) :: this The grey_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\grey_colormap.html"},{"title":"hot_colormap – FPLOT ","text":"type, public, extends( colormap ) :: hot_colormap Defines a colormap consisting of \"hot\" colors. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure, public :: get_color_string => hcm_get_clr private function hcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( hot_colormap ), intent(in) :: this The hot_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\hot_colormap.html"},{"title":"parula_colormap – FPLOT ","text":"type, public, extends( colormap ) :: parula_colormap Defines a colormap equivalent to the MATLAB parula colormap. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure, public :: get_color_string => pcm_get_clr private function pcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( parula_colormap ), intent(in) :: this The parula_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\parula_colormap.html"},{"title":"rainbow_colormap – FPLOT ","text":"type, public, extends( colormap ) :: rainbow_colormap Defines a rainbow colormap. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure, public :: get_color_string => rcm_get_clr private function rcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( rainbow_colormap ), intent(in) :: this The rainbow_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\rainbow_colormap.html"},{"title":"spectral_colormap – FPLOT ","text":"type, public, extends( colormap ) :: spectral_colormap Defines the spectral colormap available at \nhttps://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin private pure function cm_get_axes_origin(this) result(rst) Gets the relative x-y coordinates of the axes origin. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [x, y] coordinates, each in [0.0, 1.0]. procedure, public :: get_axes_size => cm_get_axes_size private pure function cm_get_axes_size(this) result(rst) Gets the relative width and height of the axes. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32), dimension(2) The [width, height], each in [0.0, 1.0]. procedure, public :: get_color_string => spcm_get_clr private function spcm_get_clr(this) result(x) Gets the GNUPLOT string defining the color distribution. Arguments Type Intent Optional Attributes Name class( spectral_colormap ), intent(in) :: this The spectral_colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_colorbar_length => cm_get_colorbar_length private pure function cm_get_colorbar_length(this) result(rst) Gets the relative length of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The length in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness private pure function cm_get_colorbar_thickness(this) result(rst) Gets the relative thickness of the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value real(kind=real32) The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. procedure, public :: get_command_string => cm_get_cmd private function cm_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The command string. procedure, public :: get_draw_border => cm_get_draw_border private pure function cm_get_draw_border(this) result(rst) Gets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_horizontal => cm_get_horizontal private pure function cm_get_horizontal(this) result(rst) Gets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: get_label => cm_get_label private pure function cm_get_label(this) result(rst) Gets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The label. procedure, public :: get_show_tics => cm_get_show_tics private pure function cm_get_show_tics(this) result(rst) Gets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value logical Returns true if the tic marks should be drawn; else, false. procedure, public :: set_axes_origin => cm_set_axes_origin private subroutine cm_set_axes_origin(this, x) Sets the axes origin coordinates, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [x, y] coordinates. procedure, public :: set_axes_size => cm_set_axes_size private subroutine cm_set_axes_size(this, x) Sets the axes width and height, each clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in), dimension(2) :: x The requested [width, height]. procedure, public :: set_colorbar_length => cm_set_colorbar_length private subroutine cm_set_colorbar_length(this, x) Sets the relative colorbar length, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested length; 0 uses GNUPLOT's default. procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness private subroutine cm_set_colorbar_thickness(this, x) Sets the relative colorbar thickness, clamped to [0.0, 1.0]. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. real(kind=real32), intent(in) :: x The requested thickness; 0 uses GNUPLOT's default. procedure, public :: set_draw_border => cm_set_draw_border private subroutine cm_set_draw_border(this, x) Sets a logical value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_horizontal => cm_set_horizontal private subroutine cm_set_horizontal(this, x) Sets a logical value determining if the colormap should be\ndrawn horizontally and below the plot. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the colormap should be drawn horizontally;\nelse, false. procedure, public :: set_label => cm_set_label private subroutine cm_set_label(this, x) Sets the label to associate with the colorbar. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. character(len=*), intent(in) :: x The label. procedure, public :: set_show_tics => cm_set_show_tics private subroutine cm_set_show_tics(this, x) Sets a logical value determining if the tic marks should be drawn. Arguments Type Intent Optional Attributes Name class( colormap ), intent(inout) :: this The colormap object. logical, intent(in) :: x Set to true if the tic marks should be drawn; else, false.","tags":"","loc":"type\\spectral_colormap.html"},{"title":"filled_plot_data – FPLOT ","text":"type, public, extends( plot_data_colored ) :: filled_plot_data Defines a two-dimensional filled plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => fpd_clear_data private subroutine fpd_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(inout) :: this The filled_plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => fpd_define_data private subroutine fpd_define_data(this, x, y, yc, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(inout) :: this The filled_plot_data object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinate data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinate data. real(kind=real64), intent(in), dimension(:) :: yc An N-element array containing the constraining curve y \ncoordinate data. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_axes_string => fpd_get_axes_cmd private function fpd_get_axes_cmd(this) result(x) Gets the GNUPLOT command string defining which axes the data\nis to be plotted against. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(in) :: this The filled_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => fpd_get_cmd private function fpd_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this\nfilled_plot_data object. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(in) :: this The filled_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => fpd_get_data_cmd private function fpd_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data to plot. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(in) :: this The filled_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => fpd_get_draw_against_y2 private pure function fpd_get_draw_against_y2(this) result(x) Gets a value determining if the data should be plotted against\nthe secondary y-axis. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(in) :: this The filled_plot_data object. Return Value logical Returns true if the data should be plotted against the secondary\ny-axis; else, false to plot against the primary y-axis. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => fpd_set_draw_against_y2 private subroutine fpd_set_draw_against_y2(this, x) Sets a value determining if the data should be plotted against\nthe secondary y-axis. Arguments Type Intent Optional Attributes Name class( filled_plot_data ), intent(inout) :: this The filled_plot_data object. logical, intent(in) :: x Set to true if the data should be plotted against the secondary\ny-axis; else, false to plot against the primary y-axis. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\filled_plot_data.html"},{"title":"pdf_terminal – FPLOT ","text":"type, public, extends( file_terminal ) :: pdf_terminal Defines a terminal used for producing PDF outputs. Type-Bound Procedures procedure, public :: get_command_string => pdf_get_command_string private function pdf_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( pdf_terminal ), intent(in) :: this The pdf_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => fterm_get_filename private pure function fterm_get_filename(this) result(txt) Gets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(in) :: this The file_terminal object. Return Value character(len=:), allocatable The filename. procedure, public :: get_font_name => term_get_font_name private function term_get_font_name(this) result(name) Gets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => term_get_font_size private pure function term_get_font_size(this) result(sz) Gets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The font size, in points. procedure, public :: get_id_string => pdf_get_term_string private function pdf_get_term_string(this) result(x) Retrieves a GNUPLOT terminal identifier string. Arguments Type Intent Optional Attributes Name class( pdf_terminal ), intent(in) :: this The pdf_terminal object. Return Value character(len=:), allocatable The string. procedure, public :: get_plot_window_number => term_get_plot_window_number private pure function term_get_plot_window_number(this) result(x) Gets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer(kind=int32) The plot window number. procedure, public :: get_resolution => pdf_get_resolution private pure function pdf_get_resolution(this) result(x) Gets the target device resolution. Arguments Type Intent Optional Attributes Name class( pdf_terminal ), intent(in) :: this The pdf_terminal object. Return Value integer(kind=int32) The resolution, in DPI. procedure, public :: get_title => term_get_title private function term_get_title(this) result(str) Gets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The title. procedure, public :: get_window_height => term_get_window_height private pure function term_get_window_height(this) result(x) Gets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The height of the plot window. procedure, public :: get_window_width => term_get_window_width private pure function term_get_window_width(this) result(x) Gets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value integer The width of the plot window. procedure, public :: set_filename => fterm_set_filename private subroutine fterm_set_filename(this, txt) Sets the filename for the output file. Arguments Type Intent Optional Attributes Name class( file_terminal ), intent(inout) :: this The file_terminal object. character(len=*), intent(in) :: txt The filename. procedure, public :: set_font_name => term_set_font_name private subroutine term_set_font_name(this, name) Sets the name of the font used for text displayed by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: name The font name. procedure, public :: set_font_size => term_set_font_size private subroutine term_set_font_size(this, sz) Sets the size of the font used by the graph. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: sz The font size, in points. procedure, public :: set_plot_window_number => term_set_plot_window_number private subroutine term_set_plot_window_number(this, x) Sets the targeted plot window number. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer(kind=int32), intent(in) :: x The plot window number. procedure, public :: set_resolution => pdf_set_resolution private subroutine pdf_set_resolution(this, x) Sets the target device resolution. Arguments Type Intent Optional Attributes Name class( pdf_terminal ), intent(inout) :: this The pdf_terminal object. integer(kind=int32), intent(in) :: x The resolution, in DPI. procedure, public :: set_title => term_set_title private subroutine term_set_title(this, txt) Sets the plot window's title. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. character(len=*), intent(in) :: txt The title. procedure, public :: set_window_height => term_set_window_height private subroutine term_set_window_height(this, x) Sets the height of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The height of the plot window. procedure, public :: set_window_width => term_set_window_width private subroutine term_set_window_width(this, x) Sets the width of the plot window. Arguments Type Intent Optional Attributes Name class( terminal ), intent(inout) :: this The terminal object. integer, intent(in) :: x The width of the plot window.","tags":"","loc":"type\\pdf_terminal.html"},{"title":"plot_data_bar – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_bar Defines a data set tailored to bar charts. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdb_clear_data private subroutine pdb_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. generic, public :: define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3, pdb_set_data_4, pdb_set_data_5, pdb_set_data_6 private subroutine pdb_set_data_1(this, x, err) Defines a single data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: x The data to plot. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_2(this, labels, x, err) Defines data along with associated axis labels. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. class(string), intent(in), dimension(:) :: labels The axis labels to associate with the data. real(kind=real64), intent(in), dimension(:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_3(this, labels, x, fmt, err) Defines data along with labels and formatting information. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: labels The axis labels to associate with the data. real(kind=real64), intent(in), dimension(:) :: x The data set. character(len=*), intent(in), optional :: fmt The format string for the labels (e.g. '(I0)', etc.). class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_4(this, x, err) Defines a single data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:,:) :: x The data to plot. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_5(this, labels, x, err) Defines data along with associated axis labels. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. class(string), intent(in), dimension(:) :: labels The axis labels to associate with the data. real(kind=real64), intent(in), dimension(:,:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pdb_set_data_6(this, labels, x, fmt, err) Defines data along with labels and formatting information. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: labels The axis labels to associate with the data. real(kind=real64), intent(in), dimension(:,:) :: x The data set. character(len=*), intent(in), optional :: fmt The format string for the labels (e.g. '(I0)', etc.). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get => pdb_get_data private pure function pdb_get_data(this, index, col) result(x) Gets the requested data point. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The data point index. integer(kind=int32), intent(in) :: col The column index. Return Value real(kind=real64) The value. procedure, public :: get_axes_string => pdb_get_axes_cmd private function pdb_get_axes_cmd(this) result(x) Gets the GNUPLOT command defining which axes to plot against. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_bar_color => pdb_get_bar_color private pure function pdb_get_bar_color(this, index) result(x) Gets the color to use for the requested data series (column). If\nno color has been explicitly set, a default color cycle is used\nfor multi-series data, or the base line color for single-series\ndata. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data series (column). Return Value type( color ) The color. procedure, public :: get_bar_per_label_count => pdb_get_col_count private pure function pdb_get_col_count(this) result(x) Gets the number of data sets (columns). Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value integer(kind=int32) The count. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdb_get_cmd private function pdb_get_cmd(this) result(x) Gets the GNUPLOT command string for this object. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => pdb_get_count private pure function pdb_get_count(this) result(x) Gets the number of stored data points. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value integer(kind=int32) The number of stored data points. procedure, public :: get_data => pdb_get_data_set private pure function pdb_get_data_set(this, col) result(x) Gets the requested data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: col The column index. Return Value real(kind=real64), allocatable, dimension(:) A copy of the data set. procedure, public :: get_data_string => pdb_get_data_cmd private function pdb_get_data_cmd(this) result(x) Gets the GNUPLOT command string defining the data for this object. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => pdb_get_use_y2 private pure function pdb_get_use_y2(this) result(x) Gets a value determining if the data should be plotted against a\nsecondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value logical Returns true to plot against a secondary y-axis; else, false. procedure, public :: get_is_filled => pdb_get_is_filled private pure function pdb_get_is_filled(this) result(x) Gets a value determining if each bar is filled. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value logical Returns true if the bars are to be filled; else, false. procedure, public :: get_label => pdb_get_label private pure function pdb_get_label(this, index) result(x) Gets the axis label associated with a specific data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data set. Return Value character(len=:), allocatable The label. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_series_name => pdb_get_series_name private pure function pdb_get_series_name(this, index) result(x) Gets the legend title associated with the requested data series\n(column). Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data series (column). Return Value character(len=:), allocatable The title. procedure, public :: get_transparency => pdb_get_alpha private pure function pdb_get_alpha(this) result(x) Gets the alpha (transparency) for the bar color. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value real(kind=real32) The alpha value ([0, 1]). procedure, public :: get_use_labels => pdb_get_use_labels private pure function pdb_get_use_labels(this) result(x) Gets a value determining if labels are used to identify the data. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(in) :: this The plot_data_bar object. Return Value logical Returns true if labels are used; else, false. procedure, public :: set => pdb_set_data private subroutine pdb_set_data(this, index, col, x) Replaces the requested data point. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The data point index. integer(kind=int32), intent(in) :: col The column index. real(kind=real64), intent(in) :: x The new value. procedure, public :: set_bar_color => pdb_set_bar_color private subroutine pdb_set_bar_color(this, index, x) Sets the color to use for the requested data series (column). Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data series (column). type( color ), intent(in) :: x The color. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_data_1 => pdb_set_data_1_core private subroutine pdb_set_data_1_core(this, x, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_2 => pdb_set_data_2_core private subroutine pdb_set_data_2_core(this, labels, x, err) Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. class(string), intent(in), dimension(:) :: labels The axis labels. real(kind=real64), intent(in), dimension(:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_3 => pdb_set_data_3_core private subroutine pdb_set_data_3_core(this, labels, x, fmt, err) Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: labels The axis labels. real(kind=real64), intent(in), dimension(:) :: x The data set. character(len=*), intent(in), optional :: fmt The format string for the labels (e.g. '(I0)', etc.). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_4 => pdb_set_data_4_core private subroutine pdb_set_data_4_core(this, x, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:,:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_5 => pdb_set_data_5_core private subroutine pdb_set_data_5_core(this, labels, x, err) Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. class(string), intent(in), dimension(:) :: labels The axis labels. real(kind=real64), intent(in), dimension(:,:) :: x The data set. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_data_6 => pdb_set_data_6_core private subroutine pdb_set_data_6_core(this, labels, x, fmt, err) Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real64), intent(in), dimension(:) :: labels The axis labels. real(kind=real64), intent(in), dimension(:,:) :: x The data set. character(len=*), intent(in), optional :: fmt The format string for the labels (e.g. '(I0)', etc.). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => pdb_set_use_y2 private subroutine pdb_set_use_y2(this, x) Sets a value determining if the data should be plotted against a\nsecondary y-axis. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. logical, intent(in) :: x Set to true to plot against a secondary y-axis; else, false. procedure, public :: set_is_filled => pdb_set_is_filled private subroutine pdb_set_is_filled(this, x) Sets a value determining if each bar is filled. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. logical, intent(in) :: x Set to true if the bars are to be filled; else, false. procedure, public :: set_label => pdb_set_label private subroutine pdb_set_label(this, index, txt) Sets the axis label for a specific data set. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. integer(kind=int32) :: index The index of the data set. character(len=*), intent(in) :: txt The label. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_series_name => pdb_set_series_name private subroutine pdb_set_series_name(this, index, txt) Sets the legend title to associate with the requested data series\n(column). Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. integer(kind=int32), intent(in) :: index The index of the data series (column). character(len=*), intent(in) :: txt The title. procedure, public :: set_transparency => pdb_set_alpha private subroutine pdb_set_alpha(this, x) Gets the alpha (transparency) for the bar color. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. real(kind=real32), intent(in) :: x The alpha value ([0, 1]). procedure, public :: set_use_labels => pdb_set_use_labels private subroutine pdb_set_use_labels(this, x) Sets a value determining if labels are used to identify the data. Arguments Type Intent Optional Attributes Name class( plot_data_bar ), intent(inout) :: this The plot_data_bar object. logical, intent(in) :: x Set to true if labels are used; else, false.","tags":"","loc":"type\\plot_data_bar.html"},{"title":"plot_label – FPLOT ","text":"type, public, extends( plot_object ) :: plot_label Defines a plot label. Type-Bound Procedures procedure, public :: get_angle => lbl_get_angle private pure function lbl_get_angle(this) result(x) Gets the angle of the label text, in degrees. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value real(kind=real32) The angle, in degrees. procedure, public :: get_command_string => lbl_get_cmd private function lbl_get_cmd(this) result(x) Gets the GNUPLOT command string for the label. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value character(len=:), allocatable The command string. procedure, public :: get_is_visible => lbl_get_is_visible private pure function lbl_get_is_visible(this) result(x) Gets a value determining if the label is to be drawn. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value logical Returns true if the label is to be drawn; else, false. procedure, public :: get_position => lbl_get_position private pure function lbl_get_position(this) result(x) Gets the position of the label in terms of plot coordinates. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value real(kind=real32), dimension(3) A 3-element array containing the X, Y, and Z position of the \nlabel. procedure, public :: get_text => lbl_get_txt private function lbl_get_txt(this) result(x) Gets the text displayed by the label. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(in) :: this The plot_label object. Return Value character(len=:), allocatable The text string to display. procedure, public :: set_angle => lbl_set_angle private subroutine lbl_set_angle(this, x) Sets the angle of the label text, in degrees. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(inout) :: this The plot_label object. real(kind=real32), intent(in) :: x The angle, in degrees. procedure, public :: set_is_visible => lbl_set_is_visible private subroutine lbl_set_is_visible(this, x) Sets a value determining if the label is to be drawn. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(inout) :: this The plot_label object. logical, intent(in) :: x Set to true if the label is to be drawn; else, false. procedure, public :: set_position => lbl_set_position private subroutine lbl_set_position(this, x) Sets the position of the label in terms of plot coordinates. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(inout) :: this The plot_label object. real(kind=real32), intent(in), dimension(3) :: x A 3-element array containing the X, Y, and Z position of the \nlabel. procedure, public :: set_text => lbl_set_txt private subroutine lbl_set_txt(this, x) Sets the text displayed by the label. Arguments Type Intent Optional Attributes Name class( plot_label ), intent(inout) :: this The plot_label object. character(len=*), intent(in) :: x The text string to display.","tags":"","loc":"type\\plot_label.html"},{"title":"plot_data_histogram – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_histogram A container for plotting data in the form of a histogram. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pdh_clear_data private subroutine pdh_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => pdh_define_data private subroutine pdh_define_data(this, x, err) Defines the data set to plot. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. real(kind=real64), intent(in), dimension(:) :: x The data set to plot. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get => pdh_get_bin_data private subroutine pdh_get_bin_data(this, i, x, cnt) Gets the requested binned data. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. integer(kind=int32), intent(in) :: i The bin number to get. real(kind=real64), intent(out) :: x The center of the bin. integer(kind=int32), intent(out) :: cnt The number of items in the bin. procedure, public :: get_axes_string => pdh_get_axes_cmd private function pdh_get_axes_cmd(this) result(rst) Gets the GNUPLOT command string defining which axes the data is to be\nplotted against. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value character(len=:), allocatable The command string. procedure, public :: get_bin_count => pdh_get_bin_count private pure function pdh_get_bin_count(this) result(x) Gets the number of bins. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value integer(kind=int32) The bin count. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pdh_get_cmd private function pdh_get_cmd(this) result(rst) Gets the GNUPLOT command string for this object. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => pdh_get_data_cmd private function pdh_get_data_cmd(this) result(rst) Gets the GNUPLOT command string defining the data for this object. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_draw_against_y2 => pdh_get_use_y2 private pure function pdh_get_use_y2(this) result(rst) Gets a value determining if the data is to be plotted against the\nsecondary y axis. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value logical Returns true if the data is to be plotted against the secondary y \naxis; else, false for the primary y axis. procedure, public :: get_is_filled => pdh_get_is_filled private pure function pdh_get_is_filled(this) result(rst) Gets a value determining if each box is filled. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value logical Returns true if the boxes are filled; else, false for an empty box. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_maximum_value => pdh_get_max_x private pure function pdh_get_max_x(this) result(x) Gets the maximum data value. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value real(kind=real64) The maximum data value. procedure, public :: get_minimum_value => pdh_get_min_x private pure function pdh_get_min_x(this) result(x) Gets the minimum data value. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(in) :: this The plot_data_histogram object. Return Value real(kind=real64) The minimum data value. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: set_bin_count => pdh_set_bin_count private subroutine pdh_set_bin_count(this, x) Sets the bin count. For this property to have an effect, call before\ncalling the define_data subroutine or bin_data subroutine. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. integer(kind=int32), intent(in) :: x The bin count. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_draw_against_y2 => pdh_set_use_y2 private subroutine pdh_set_use_y2(this, x) Sets a value determining if the data is to be plotted against the\nsecondary y axis. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. logical, intent(in) :: x Set to true if the data is to be plotted against the secondary y \naxis; else, false for the primary y axis. procedure, public :: set_is_filled => pdh_set_is_filled private subroutine pdh_set_is_filled(this, x) Sets a value determining if each box is filled. Arguments Type Intent Optional Attributes Name class( plot_data_histogram ), intent(inout) :: this The plot_data_histogram object. logical, intent(in) :: x Set to true if the boxes should be filled; else, false for an empty\nbox. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name.","tags":"","loc":"type\\plot_data_histogram.html"},{"title":"plot – FPLOT ","text":"type, public, extends( plot_object ) :: plot Defines the basic GNUPLOT plot. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all private subroutine plt_clear_all(this) Removes all plot_data objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_all_labels => plt_clear_labels private subroutine plt_clear_labels(this) Clears all plot_label objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: clear_arrows => plt_clear_arrows private subroutine plt_clear_arrows(this) Clears all plot_arrow objects from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: draw => plt_draw private subroutine plt_draw(this, persist, err) Launches GNUPLOT and draws the plot per the current state of\nthe command list. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. logical, intent(in), optional :: persist An optional parameter that can be used to keep GNUPLOT open. Set to true to force GNUPLOT to remain open; else, set to false \nto allow GNUPLOT to close after drawing. The default is true. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: free_resources => plt_clean_up private subroutine plt_clean_up(this) Cleans up resources held by the plot object. Inheriting\nclasses are expected to call this routine to free internally held\nresources. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: get => plt_get private function plt_get(this, i) result(x) Gets a pointer to the requested plot_data object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. Return Value class( plot_data ), pointer A pointer to the requested plot_data object. procedure, public :: get_arrow => plt_get_arrow private function plt_get_arrow(this, i) result(rst) Gets a pointer to the requested plot_arrow object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow to retrieve. Return Value class( plot_arrow ), pointer The plot_arrow object to retrieve. procedure, public :: get_arrow_count => plt_get_arrow_count private pure function plt_get_arrow_count(this) result(rst) Gets the number of plot_arrow objects held by the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The plot_arrow objects count. procedure, public :: get_axis_equal => plt_get_axis_equal private pure function plt_get_axis_equal(this) result(rst) Gets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the axes should be scaled equally; else, false. procedure, public :: get_border_line_width => plt_get_border_line_width private pure function plt_get_border_line_width(this) result(x) Gets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_bottom_margin => plt_get_bottom_margin private pure function plt_get_bottom_margin(this) result(x) Gets the bottom margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_colormap => plt_get_colormap private function plt_get_colormap(this) result(x) Gets a pointer to the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( colormap ), pointer A pointer to the colormap object. If no colormap is defined, a\nnull pointer is returned. procedure, public :: get_command_string => plt_get_cmd private function plt_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => plt_get_count private pure function plt_get_count(this) result(x) Gets the number of stored plot_data objects. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_data objects. procedure, public :: get_draw_border => plt_get_draw_border private pure function plt_get_draw_border(this) result(x) Gets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the border should be drawn; else, false. procedure, public :: get_font_name => plt_get_font private function plt_get_font(this) result(x) Gets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The font name. procedure, public :: get_font_size => plt_get_font_size private function plt_get_font_size(this) result(x) Gets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The size of the font, in points. procedure, public :: get_label => plt_get_label private function plt_get_label(this, i) result(x) Gets the requested plot_label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label object to retrieve. Return Value class( plot_label ), pointer A pointer to the requested plot_label object. procedure, public :: get_label_count => plt_get_label_count private pure function plt_get_label_count(this) result(x) Gets the number of plot_label objects belonging to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The number of plot_label objects. procedure, public :: get_left_margin => plt_get_left_margin private pure function plt_get_left_margin(this) result(x) Gets the left margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_legend => plt_get_legend private function plt_get_legend(this) result(x) Gets the plot's legend object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( legend ), pointer A pointer to the legend object. procedure, public :: get_right_margin => plt_get_right_margin private pure function plt_get_right_margin(this) result(x) Gets the right margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_show_colorbar => plt_get_show_colorbar private pure function plt_get_show_colorbar(this) result(x) Gets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the colorbar should be drawn; else, false. procedure, public :: get_show_gridlines => plt_get_show_grid private pure function plt_get_show_grid(this) result(x) Gets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the grid lines should be shown; else, false. procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid private pure function plt_get_show_x_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid private pure function plt_get_show_x_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid private pure function plt_get_show_y_major_grid(this) result(x) Gets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid private pure function plt_get_show_y_minor_grid(this) result(x) Gets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical True if the grid should be shown; else, false. procedure, public :: get_terminal => plt_get_term private function plt_get_term(this) result(x) Gets the GNUPLOT terminal object. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value class( terminal ), pointer A pointer to the GNUPLOT terminal object. procedure, public :: get_tics_inward => plt_get_tics_in private pure function plt_get_tics_in(this) result(x) Gets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: get_title => plt_get_title private function plt_get_title(this) result(txt) Gets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value character(len=:), allocatable The title. procedure, public :: get_top_margin => plt_get_top_margin private pure function plt_get_top_margin(this) result(x) Gets the top margin of the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color private pure function plt_get_x_major_grid_color(this) result(x) Gets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style private pure function plt_get_x_major_grid_line_style(this) result(x) Gets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width private pure function plt_get_x_major_grid_line_width(this) result(x) Gets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color private pure function plt_get_x_minor_grid_color(this) result(x) Gets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style private pure function plt_get_x_minor_grid_line_style(this) result(x) Gets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width private pure function plt_get_x_minor_grid_line_width(this) result(x) Gets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color private pure function plt_get_y_major_grid_color(this) result(x) Gets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style private pure function plt_get_y_major_grid_line_style(this) result(x) Gets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width private pure function plt_get_y_major_grid_line_width(this) result(x) Gets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color private pure function plt_get_y_minor_grid_color(this) result(x) Gets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value type( color ) The color. procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style private pure function plt_get_y_minor_grid_line_style(this) result(x) Gets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value integer(kind=int32) The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width private pure function plt_get_y_minor_grid_line_width(this) result(x) Gets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value real(kind=real32) The line width. procedure, public :: initialize => plt_init private subroutine plt_init(this, term, fname, err) Initializes the plot object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in), optional :: term An optional input that is used to define the terminal.\nThe default terminal is a WXT terminal. The acceptable inputs \nare: GNUPLOT_TERMINAL_PNG GNUPLOT_TERMINAL_QT GNUPLOT_TERMINAL_WIN32 GNUPLOT_TERMINAL_WXT GNUPLOT_TERMINAL_LATEX GNUPLOT_TERMINAL_SVG GNUPLOT_TERMINAL_PDF character(len=*), intent(in), optional :: fname A filename to pass to the terminal in the event the\nterminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: is_title_defined => plt_has_title private pure function plt_has_title(this) result(x) Gets a value determining if a title has been defined for the plot \nobject. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. Return Value logical Returns true if a title has been defined for this plot; else,\nreturns false. procedure, public :: plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pop => plt_pop_data private subroutine plt_pop_data(this) Pops the last plot_data object from the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_arrow => plt_pop_arrow private subroutine plt_pop_arrow(this) Pops the last plot_arrow object from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. procedure, public :: pop_label => plt_pop_label private subroutine plt_pop_label(this) Removes the last label from the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. generic, public :: push => plt_push_data private subroutine plt_push_data(this, x, err) Pushes a plot_data object onto the stack. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_data ), intent(inout) :: x The plot_data object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_arrow => plt_push_arrow private subroutine plt_push_arrow(this, x, err) Pushes a new @ref plot_arrow object onto the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_arrow ), intent(in) :: x The plot_arrow object. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: push_label => plt_push_label private subroutine plt_push_label(this, lbl, err) Adds a label to the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( plot_label ), intent(in) :: lbl The plot label. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: save_file => plt_save private subroutine plt_save(this, fname, err) Saves a GNUPLOT command file. Arguments Type Intent Optional Attributes Name class( plot ), intent(in) :: this The plot object. character(len=*), intent(in) :: fname The filename. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set => plt_set private subroutine plt_set(this, i, x) Sets the requested plot_data object into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_data object. class( plot_data ), intent(in) :: x The plot_data object. procedure, public :: set_arrow => plt_set_arrow private subroutine plt_set_arrow(this, i, x) Sets a plot_arrow into the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_arrow object to replace. class( plot_arrow ), intent(in) :: x The new plot_arrow object. procedure, public :: set_axis_equal => plt_set_axis_equal private subroutine plt_set_axis_equal(this, x) Sets a flag determining if the axes should be equally scaled. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the axes should be scaled equally; else, false. procedure, public :: set_border_line_width => plt_set_border_line_width private subroutine plt_set_border_line_width(this, x) Sets the width of the lines used to draw the border. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_bottom_margin => plt_set_bottom_margin private subroutine plt_set_bottom_margin(this, x) Sets the bottom margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_colormap => plt_set_colormap private subroutine plt_set_colormap(this, x, err) Sets the colormap object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. class( colormap ), intent(in) :: x The colormap object. Notice, a copy of this object is\nstored, and the plot object then manages the lifetime of the\ncopy. class( errors ), intent(inout), optional, target :: err An error handler object. procedure, public :: set_draw_border => plt_set_draw_border private subroutine plt_set_draw_border(this, x) Sets a value determining if the border should be drawn. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the border should be drawn; else, false. procedure, public :: set_font_name => plt_set_font private subroutine plt_set_font(this, x) Sets the name of the font used for plot text. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: x The font name. procedure, public :: set_font_size => plt_set_font_size private subroutine plt_set_font_size(this, x) Sets the size of the font used by the plot. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The font size, in points. If a value of zero is provided,\nthe font size is reset to its default value; or, if a negative \nvalue is provided, the absolute value of the supplied value is\nutilized. procedure, public :: set_label => plt_set_label private subroutine plt_set_label(this, i, x) Sets the specified plot_label object. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: i The index of the plot_label to replace. class( plot_label ), intent(in) :: x The new plot_label object. procedure, public :: set_left_margin => plt_set_left_margin private subroutine plt_set_left_margin(this, x) Sets the left margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_right_margin => plt_set_right_margin private subroutine plt_set_right_margin(this, x) Sets the right margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_show_colorbar => plt_set_show_colorbar private subroutine plt_set_show_colorbar(this, x) Sets a value determining if the colorbar should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the colorbar should be drawn; else, false. procedure, public :: set_show_gridlines => plt_set_show_grid private subroutine plt_set_show_grid(this, x) Sets a flag determining if the grid lines should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the grid lines should be shown; else, false. procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid private subroutine plt_set_show_x_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid private subroutine plt_set_show_x_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid private subroutine plt_set_show_y_major_grid(this, x) Sets a value determining if the x-axis major grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid private subroutine plt_set_show_y_minor_grid(this, x) Sets a value determining if the x-axis minor grid should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x True if the grid should be shown; else, false. procedure, public :: set_tics_inward => plt_set_tics_in private subroutine plt_set_tics_in(this, x) Sets a value determining if the axis tic marks should point inwards. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true if the tic marks should point inwards; else, false\nif the tic marks should point outwards. procedure, public :: set_title => plt_set_title private subroutine plt_set_title(this, txt) Sets the plot's title. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. character(len=*), intent(in) :: txt The title. procedure, public :: set_top_margin => plt_set_top_margin private subroutine plt_set_top_margin(this, x) Sets the top margin of the plot. If the value is negative, the\ndefault margin is used. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The margin, in percent of screen. A negative value indicates the\ndefault margin is used. procedure, public :: set_window_size => plt_set_window_size private subroutine plt_set_window_size(this, width, height) Sets the height and width of the plot window. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: width The plot window width. integer(kind=int32), intent(in) :: height The plot window height. procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color private subroutine plt_set_x_major_grid_color(this, x) Sets the color of the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style private subroutine plt_set_x_major_grid_line_style(this, x) Sets the line style used for the x-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width private subroutine plt_set_x_major_grid_line_width(this, x) Sets the width of the x-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color private subroutine plt_set_x_minor_grid_color(this, x) Sets the color of the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style private subroutine plt_set_x_minor_grid_line_style(this, x) Sets the line style used for the x-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width private subroutine plt_set_x_minor_grid_line_width(this, x) Sets the width of the x-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color private subroutine plt_set_y_major_grid_color(this, x) Sets the color of the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style private subroutine plt_set_y_major_grid_line_style(this, x) Sets the line style used for the y-axis major grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width private subroutine plt_set_y_major_grid_line_width(this, x) Sets the width of the y-axis major grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color private subroutine plt_set_y_minor_grid_color(this, x) Sets the color of the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. type( color ), intent(in) :: x The color. procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style private subroutine plt_set_y_minor_grid_line_style(this, x) Sets the line style used for the y-axis minor grid lines. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. integer(kind=int32), intent(in) :: x The line style. The line style must be one of the following. LINE_DASHED LINE_DASH_DOTTED LINE_DASH_DOT_DOT LINE_DOTTED LINE_SOLID procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width private subroutine plt_set_y_minor_grid_line_width(this, x) Sets the width of the y-axis minor grid lines, in pixels. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. real(kind=real32), intent(in) :: x The line width. procedure, public :: show_legend => plt_show_legend private subroutine plt_show_legend(this, x) Sets a value determining the legend should be shown. Arguments Type Intent Optional Attributes Name class( plot ), intent(inout) :: this The plot object. logical, intent(in) :: x Set to true to show the legend; else, set to false.","tags":"","loc":"type\\plot.html"},{"title":"surface_plot_data – FPLOT ","text":"type, public, extends( plot_data ) :: surface_plot_data Provides a three-dimensional surface plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => surfd_clear_data private subroutine surfd_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The surface_plot_data object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: define_data => surfd_set_data_1 private subroutine surfd_set_data_1(this, x, y, z, err) Defines the data set. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. real(kind=real64), intent(in), dimension(:,:) :: x An M-by-N matrix containing the x-coordinate data. real(kind=real64), intent(in), dimension(:,:) :: y An M-by-N matrix containing the y-coordinate data. real(kind=real64), intent(in), dimension(:,:) :: z An M-by-N matrix containing the z-coordinate data. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_command_string => surfd_get_cmd private function surfd_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this surface_plot_data \nobject. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. Return Value character(len=:), allocatable The command string. procedure, public :: get_data_string => surfd_get_data_cmd private function surfd_get_data_cmd(this) result(x) Gets the GNUPLOT command string containing the actual data to plot. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_size => surfd_get_size private pure function surfd_get_size(this, dim) result(x) Gets the size of the stored data set. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: dim The dimension of interest. Notice, data is stored as a\n2D matrix (i.e. only 1 and 2 are valid inputs). Return Value integer(kind=int32) The size of the requested dimension. procedure, public :: get_use_wireframe => surfd_get_wireframe private pure function surfd_get_wireframe(this) result(x) Gets a value determining if a wireframe mesh should be displayed. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. Return Value logical Returns true if a wireframe mesh should be displayed; else, \nfalse to display a solid surface. procedure, public :: get_x => surfd_get_x private pure function surfd_get_x(this, i, j) result(x) Gets the requested X data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. Return Value real(kind=real64) The value. procedure, public :: get_y => surfd_get_y private pure function surfd_get_y(this, i, j) result(x) Gets the requested Y data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. Return Value real(kind=real64) The value. procedure, public :: get_z => surfd_get_z private pure function surfd_get_z(this, i, j) result(x) Gets the requested Z data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(in) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. Return Value real(kind=real64) The value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_use_wireframe => surfd_set_wireframe private subroutine surfd_set_wireframe(this, x) Sets a value determining if a wireframe mesh should be displayed. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. logical, intent(in) :: x Set to true if a wireframe mesh should be displayed; else,\nfalse to display a solid surface. procedure, public :: set_x => surfd_set_x private subroutine surfd_set_x(this, i, j, x) Sets the requested X data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. real(kind=real64), intent(in) :: x The value. procedure, public :: set_y => surfd_set_y private subroutine surfd_set_y(this, i, j, x) Sets the requested Y data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. real(kind=real64), intent(in) :: x The value. procedure, public :: set_z => surfd_set_z private subroutine surfd_set_z(this, i, j, x) Sets the requested Z data point. Arguments Type Intent Optional Attributes Name class( surface_plot_data ), intent(inout) :: this The suface_plot_data object. integer(kind=int32), intent(in) :: i The row index. integer(kind=int32), intent(in) :: j The column index. real(kind=real64), intent(in) :: x The value.","tags":"","loc":"type\\surface_plot_data.html"},{"title":"plot_data_error_bars – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_error_bars Defines a 2D error-bar based data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear private subroutine pd_clear(this) Clears the data set by removing stored data and clearing the \nGNUPLOT datablock name. This routine also calls clear_data to\nensure the data is cleared from the data set as well as the datablock\nname. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. procedure, public :: clear_data => pde_clear_data private subroutine pde_clear_data(this) Clears the data from this data set. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name private subroutine pd_create_unique_datablock_name(this) Creates a unique name for the GNUPLOT datablock representing this\ndata set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. generic, public :: define_x_error_data => pde_define_x_err , pde_define_x_err_lim private subroutine pde_define_x_err(this, x, y, xerr, err) Defines the x error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xerr An N-element array containing the x errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pde_define_x_err_lim(this, x, y, xmin, xmax, err) Defines the x error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xmin An N-element array containing the minimum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: xmax An N-element array containing the maximum x values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. generic, public :: define_xy_error_data => pde_define_xy_err , pde_define_xy_err_lim private subroutine pde_define_xy_err(this, x, y, xerr, yerr, err) Defines x and y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xerr An N-element array containing the x errors at each data point. real(kind=real64), intent(in), dimension(:) :: yerr An N-element array containing the y errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pde_define_xy_err_lim(this, x, y, xmin, xmax, ymin, ymax, err) Defines the x and y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xmin An N-element array containing the minimum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: xmax An N-element array containing the maximum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymin An N-element array containing the minimum y values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymax An N-element array containing the maximum x values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. generic, public :: define_y_error_data => pde_define_y_err , pde_define_y_err_lim private subroutine pde_define_y_err(this, x, y, yerr, err) Defines the y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: yerr An N-element array containing the y errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. private subroutine pde_define_y_err_lim(this, x, y, ymin, ymax, err) Defines the y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: ymin An N-element array containing the minimum y values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymax An N-element array containing the maximum y values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: get_color_index => pdc_get_color_index private pure function pdc_get_color_index(this) result(x) Gets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value integer(kind=int32) The index value. procedure, public :: get_command_string => pde_get_cmd private function pde_get_cmd(this) result(cmd) Gets the appropriate GNUPLOT command string for the object. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value character(len=:), allocatable The command string. procedure, public :: get_count => pde_get_count private pure function pde_get_count(this) result(x) Gets the number of stored data points. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value integer(kind=int32) The number of data points. procedure, public :: get_data_string => pde_get_data_cmd private function pde_get_data_cmd(this) result(cmd) Gets the appropriate GNUPLOT commands to plot the data itself. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value character(len=:), allocatable The command string. procedure, public :: get_datablock_name => pd_get_datablock_name private pure function pd_get_datablock_name(this) result(rst) Gets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_line_color => pdc_get_line_color private pure function pdc_get_line_color(this) result(x) Gets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(in) :: this The plot_data_colored object. Return Value type( color ) The color. procedure, public :: get_line_width => pde_get_line_width private pure function pde_get_line_width(this) result(x) Gets the line width. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value real(kind=real32) The line width. procedure, public :: get_name => pd_get_name private pure function pd_get_name(this) result(txt) Gets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The name. procedure, public :: get_plot_x_error_bars => pde_get_plot_x_err private pure function pde_get_plot_x_err(this) result(x) Checks to see if the x error bar data has been defined, and as\na result, if the x error data is to be plotted. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value logical Returns true if the x error bars are to be plotted; else, false. procedure, public :: get_plot_y_error_bars => pde_get_plot_y_err private pure function pde_get_plot_y_err(this) result(x) Checks to see if the y error bar data has been defined, and as\na result, if the x error data is to be plotted. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value logical Returns true if the y error bars are to be plotted; else, false. procedure, public :: get_use_error_box => pde_get_box private pure function pde_get_box(this) result(x) Checks to see if the x and y error boxes should be utilized. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value logical Returns true if the error boxes are to be plotted; else,\nfalse. Notice, the error boxes are only utilized if there is \nboth x and y error data defined, regardless of the value of this \nproperty. procedure, public :: get_use_range => pde_get_use_range private pure function pde_get_use_range(this) result(x) Gets a value determining if a defined range is being used\nto define the error bar extremes. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(in) :: this The plot_data_error_bars object. Return Value logical True if a defined range is being used; else, false. procedure, public :: pde_define_x_err private subroutine pde_define_x_err(this, x, y, xerr, err) Defines the x error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xerr An N-element array containing the x errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_x_err_lim private subroutine pde_define_x_err_lim(this, x, y, xmin, xmax, err) Defines the x error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xmin An N-element array containing the minimum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: xmax An N-element array containing the maximum x values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_xy_err private subroutine pde_define_xy_err(this, x, y, xerr, yerr, err) Defines x and y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xerr An N-element array containing the x errors at each data point. real(kind=real64), intent(in), dimension(:) :: yerr An N-element array containing the y errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_xy_err_lim private subroutine pde_define_xy_err_lim(this, x, y, xmin, xmax, ymin, ymax, err) Defines the x and y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: xmin An N-element array containing the minimum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: xmax An N-element array containing the maximum x values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymin An N-element array containing the minimum y values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymax An N-element array containing the maximum x values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_y_err private subroutine pde_define_y_err(this, x, y, yerr, err) Defines the y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: yerr An N-element array containing the y errors at each data point. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: pde_define_y_err_lim private subroutine pde_define_y_err_lim(this, x, y, ymin, ymax, err) Defines the y error data. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x coordinates of the data. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y coordinates of the data. real(kind=real64), intent(in), dimension(:) :: ymin An N-element array containing the minimum y values at each data \npoint. real(kind=real64), intent(in), dimension(:) :: ymax An N-element array containing the maximum y values at each data \npoint. class( errors ), intent(inout), optional, target :: err An error handling object. procedure, public :: set_color_index => pdc_set_color_index private subroutine pdc_set_color_index(this, x) Sets the color index. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. integer(kind=int32), intent(in) :: x The index value. procedure, public :: set_datablock_name => pd_set_datablock_name private subroutine pd_set_datablock_name(this, x) Sets the name to associate with the datablock in the actual GNUPLOT\nplot file. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: x The name. procedure, public :: set_line_color => pdc_set_line_color private subroutine pdc_set_line_color(this, x) Sets the object color. Arguments Type Intent Optional Attributes Name class( plot_data_colored ), intent(inout) :: this The plot_data_colored object. type( color ), intent(in) :: x The color. procedure, public :: set_line_width => pde_set_line_width private subroutine pde_set_line_width(this, x) Sets the line width. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_name => pd_set_name private subroutine pd_set_name(this, txt) Sets the name to associate with this data set. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. character(len=*), intent(in) :: txt The name. procedure, public :: set_use_error_box => pde_set_box private subroutine pde_set_box(this, x) Deterimines if the x and y error boxes should be utilized. Arguments Type Intent Optional Attributes Name class( plot_data_error_bars ), intent(inout) :: this The plot_data_error_bars object. logical, intent(in) :: x Set to true if the error boxes are to be plotted; else,\nfalse. Notice, the error boxes are only utilized if there is \nboth x and y error data defined, regardless of the value of this \nproperty.","tags":"","loc":"type\\plot_data_error_bars.html"},{"title":"r8tris2 – FPLOT","text":"public subroutine r8tris2(node_num, node_xy, triangle_num, triangle_node, triangle_neighbor) Constructs a Delaunay triangulation of 2D vertices. The routine constructs the Delaunay triangulation of a set of\n2D vertices using an incremental approach and diagonal edge\nswaps. Vertices are first sorted in lexicographically\nincreasing (X,Y) order, and then are inserted one at a time\nfrom outside the convex hull. Arguments Type Intent Optional Attributes Name integer(kind=int32), intent(in) :: node_num The number of vertices. real(kind=real64), intent(inout), dimension(2, node_num) :: node_xy The coordinates of the vertices. On output, the vertices\nhave been sorted into dictionary order. integer(kind=int32), intent(out) :: triangle_num The number of triangles in the triangulation;\nTRIANGLE_NUM is equal to 2*NODE_NUM - NB - 2, where NB is\nthe number of boundary vertices. integer(kind=int32), intent(out), dimension(3, 2 * node_num) :: triangle_node The nodes that make up each triangle. The elements are\nindices of the vertex array. The vertices of the\ntriangles are in counter clockwise order. integer(kind=int32), intent(out), dimension(3, 2 * node_num) :: triangle_neighbor The triangle neighbor list. Positive elements are\nindices of TRIANGLE_NODE; negative elements are used for\nlinks of a counter clockwise linked list of boundary\nedges; LINK = -(3*I + J-1) where I, J = triangle, edge\nindex; TRIANGLE_NEIGHBOR(J,I) refers to the neighbor\nalong the edge from vertex J to J+1 (mod 3).","tags":"","loc":"proc\\r8tris2.html"},{"title":"get_string_result – FPLOT","text":"interface public function get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:),allocatable The result string. Description Returns a string from a plot_object.","tags":"","loc":"interface\\get_string_result.html"},{"title":"report_array_size_mismatch_error – FPLOT","text":"public subroutine report_array_size_mismatch_error(err, fcn, name, expected, actual) Reports an array size mismatch error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: name The variable name. integer(kind=int32), intent(in) :: expected The expected array size. integer(kind=int32), intent(in) :: actual The actual array size. Variables Type Visibility Attributes Name Initial character(len=256), public :: msg","tags":"","loc":"proc\\report_array_size_mismatch_error.html"},{"title":"report_error – FPLOT","text":"public subroutine report_error(this, fcn, msg, code) Type Bound errors Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: this character(len=*), intent(in) :: fcn character(len=*), intent(in) :: msg integer(kind=int32), intent(in) :: code","tags":"","loc":"proc\\report_error.html"},{"title":"report_file_create_error – FPLOT","text":"public subroutine report_file_create_error(err, fcn, fname, flag) Reports an I/O error related to file creating. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: fname The filename. integer(kind=int32), intent(in) :: flag The error flag returned by the system. Variables Type Visibility Attributes Name Initial character(len=2048), public :: msg","tags":"","loc":"proc\\report_file_create_error.html"},{"title":"report_matrix_size_mismatch_error – FPLOT","text":"public subroutine report_matrix_size_mismatch_error(err, fcn, name, mexp, nexp, mact, nact) Reports a matrix size mismatch error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: name The variable name. integer(kind=int32), intent(in) :: mexp The expected number of rows. integer(kind=int32), intent(in) :: nexp The expected number of columns. integer(kind=int32), intent(in) :: mact The actual number of rows. integer(kind=int32), intent(in) :: nact The actual number of columns. Variables Type Visibility Attributes Name Initial character(len=256), public :: msg","tags":"","loc":"proc\\report_matrix_size_mismatch_error.html"},{"title":"report_memory_error – FPLOT","text":"public subroutine report_memory_error(err, fcn, flag) Reports a memory allocation error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. integer(kind=int32), intent(in) :: flag The error flag returned by the system. Variables Type Visibility Attributes Name Initial character(len=256), public :: msg","tags":"","loc":"proc\\report_memory_error.html"},{"title":"simplify_polyline – FPLOT","text":"public interface simplify_polyline Module Procedures private function simplify_polyline_2d1(x, y, tol, err) result(ln) Simplifies a 2D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, and the second \ncolumn contains the y-coordinates. private function simplify_polyline_3d1(x, y, z, tol, err) result(ln) Simplifies a 3D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: z An N-element array containing the z-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, the second \ncolumn contains the y-coordinates, and the third column contains \nthe z-coordinates. private function simplify_polyline_mtx(xy, tol, err) result(ln) Simplifies a 2D or 3D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:,:) :: xy An N-by-2 or N-by-3 matrix containing the polyline vertex data. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, the second \ncolumn contains the y-coordinates, and if necessary, the third \ncolumn contains the z-coordinates.","tags":"","loc":"interface\\simplify_polyline.html"},{"title":"lpd_get_cmd – FPLOT","text":"public function lpd_get_cmd(this) result(rst) Gets the GNUPLOT command string to represent this line_plot_data\nobject. Type Bound line_plot_data Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value character(len=:), allocatable The command string.","tags":"","loc":"proc\\lpd_get_cmd.html"},{"title":"spd_get_cmd – FPLOT","text":"public function spd_get_cmd(this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Type Bound scatter_plot_data Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string.","tags":"","loc":"proc\\spd_get_cmd.html"},{"title":"pd_clear_action – FPLOT","text":"interface public subroutine pd_clear_action(this) Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. Description Performs a clearing operation.","tags":"","loc":"interface\\pd_clear_action.html"},{"title":"pd_get_string_result – FPLOT","text":"interface public function pd_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:),allocatable The string. Description Retrieves a string from a plot_data object.","tags":"","loc":"interface\\pd_get_string_result.html"},{"title":"spd_get_int_value – FPLOT","text":"interface public pure function spd_get_int_value(this) result(x) Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The value. Description Gets an integer value from the scatter_plot_data object.","tags":"","loc":"interface\\spd_get_int_value.html"},{"title":"spd_get_string_result – FPLOT","text":"interface public function spd_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:),allocatable The string. Description Gets a string value from the scatter_plot_data object.","tags":"","loc":"interface\\spd_get_string_result.html"},{"title":"spd_get_value – FPLOT","text":"interface public pure function spd_get_value(this, index) result(x) Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. Return Value real(kind=real64) The value. Description Gets an indexed value from the scatter_plot_data object.","tags":"","loc":"interface\\spd_get_value.html"},{"title":"spd_set_value – FPLOT","text":"interface public subroutine spd_set_value(this, index, x) Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. real(kind=real64), intent(in) :: x The value. Description Sets an indexed value from the scatter_plot_data object.","tags":"","loc":"interface\\spd_set_value.html"},{"title":"pa_get_string_result – FPLOT","text":"interface public function pa_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:),allocatable The string. Description Retrieves a string from a plot_axis.","tags":"","loc":"interface\\pa_get_string_result.html"},{"title":"linspace – FPLOT","text":"public pure function linspace(start, finish, npts) result(x) Constructs a linearly spaced array. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in) :: start The first value in the array. real(kind=real64), intent(in) :: finish The last value in the array. integer(kind=int32), intent(in) :: npts The number of values in the array. Return Value real(kind=real64), allocatable, dimension(:) The resulting array.","tags":"","loc":"proc\\linspace.html"},{"title":"logspace – FPLOT","text":"public pure function logspace(start, finish, npts) result(x) Construcst a logarithmically spaced array. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in) :: start The exponent of the first value in the array. real(kind=real64), intent(in) :: finish The exponent of the final value in the array. integer(kind=int32), intent(in) :: npts The number of values in the array. Return Value real(kind=real64), allocatable, dimension(:) The resulting array.","tags":"","loc":"proc\\logspace.html"},{"title":"meshgrid – FPLOT","text":"public pure function meshgrid(x, y) result(xy) Constructs two matrices (X and Y) from x and y data arrays. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An M-element array of x data points. real(kind=real64), intent(in), dimension(:) :: y An N-element array of y data points. Return Value real(kind=real64), allocatable, dimension(:,:,:) An N-by-M-by-2 array containing the x data matrix on the first \npage of the array, and the y data matrix on the second page.","tags":"","loc":"proc\\meshgrid.html"},{"title":"term_get_string_result – FPLOT","text":"interface public function term_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:),allocatable The string. Description Retrieves a string from a terminal.","tags":"","loc":"interface\\term_get_string_result.html"},{"title":"operator(/=) – FPLOT","text":"public interface operator(/=) Module Procedures private pure function clr_not_equals(x, y) result(rst) Arguments Type Intent Optional Attributes Name type( color ), intent(in) :: x type( color ), intent(in) :: y Return Value logical","tags":"","loc":"interface\\operator(SLASH=).html"},{"title":"operator(==) – FPLOT","text":"public interface operator(==) Module Procedures private pure function clr_equals(x, y) result(rst) Arguments Type Intent Optional Attributes Name type( color ), intent(in) :: x type( color ), intent(in) :: y Return Value logical","tags":"","loc":"interface\\operator(==).html"},{"title":"cm_get_string_result – FPLOT","text":"interface public function cm_get_string_result(this) result(x) Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:),allocatable The string. Description Retrieves a string result from a colormap object.","tags":"","loc":"interface\\cm_get_string_result.html"},{"title":"is_plot_data_function – FPLOT","text":"public pure function is_plot_data_function(x) result(rst) Tests to see if the supplied plot_data object is a plot_data_function based type. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: x The plot_data object. Return Value logical True if x is a plot_data_function based type.","tags":"","loc":"proc\\is_plot_data_function.html"},{"title":"fplot_constants – FPLOT","text":"Uses iso_fortran_env Variables Type Visibility Attributes Name Initial integer(kind=int32), public, parameter :: ARROW_BACKHEAD = 2 Defines an arrow with it's head at it's back end (tail). integer(kind=int32), public, parameter :: ARROW_EMPTY = 101 Defines an empty arrow head. integer(kind=int32), public, parameter :: ARROW_FILLED = 100 Defines a filled arrow head. integer(kind=int32), public, parameter :: ARROW_HEAD = 1 Defines an arrow with a traditional head. integer(kind=int32), public, parameter :: ARROW_HEADS = 3 Defines an arrow with a head on both ends. integer(kind=int32), public, parameter :: ARROW_NO_BORDER = 103 Defines an arrow head with no border. integer(kind=int32), public, parameter :: ARROW_NO_FILL = 102 Defines an arrow head without fill. integer(kind=int32), public, parameter :: ARROW_NO_HEAD = 0 Defines an arrow with no head. integer(kind=int32), public, parameter :: COORDINATES_CARTESIAN = 100 Defines a Cartesian coordinate system. integer(kind=int32), public, parameter :: COORDINATES_CYLINDRICAL = 102 Defines a cylindrical coordinate system. integer(kind=int32), public, parameter :: COORDINATES_SPHERICAL = 101 Defines a spherical coordinate system. character(len=*), public, parameter :: GNUPLOT_DEFAULT_FONTNAME = \"Arial\" Defines the default font used by text on the graph. integer(kind=int32), public, parameter :: GNUPLOT_DEFAULT_FONT_SIZE = 14 Defines the default font size used by text on the graph. integer(kind=int32), public, parameter :: GNUPLOT_DEFAULT_WINDOW_HEIGHT = 420 The default GNUPLOT window height, in pixels. integer(kind=int32), public, parameter :: GNUPLOT_DEFAULT_WINDOW_WIDTH = 640 The default GNUPLOT window width, in pixels. character(len=*), public, parameter :: GNUPLOT_HORIZONTAL_ALIGN_CENTER = \"center\" Defines the text should be centered. character(len=*), public, parameter :: GNUPLOT_HORIZONTAL_ALIGN_LEFT = \"left\" Defines the text should be aligned to the left. character(len=*), public, parameter :: GNUPLOT_HORIZONTAL_ALIGN_RIGHT = \"right\" Defines the text should be aligned to the right. integer(kind=int32), public, parameter :: GNUPLOT_MAX_LABEL_LENGTH = 128 Defines the maximum number of characters allowed in a graph label. integer(kind=int32), public, parameter :: GNUPLOT_MAX_PATH_LENGTH = 256 Defines the maximum number of characters allowed in a file path. character(len=*), public, parameter :: GNUPLOT_ROTATION_ORIGIN_CENTER = \"center\" Defines the text should be rotated around the center of the text. character(len=*), public, parameter :: GNUPLOT_ROTATION_ORIGIN_LEFT = \"left\" Defines the text should be rotated around the left side of the text. character(len=*), public, parameter :: GNUPLOT_ROTATION_ORIGIN_RIGHT = \"right\" Defines the text should be rotated around the right side of the text. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_LATEX = 5 Defines a LATEX terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_PDF = 7 Defines a PDF terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_PNG = 4 Defines a PNG terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_QT = 3 Defines a QT terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_SVG = 6 Defines an SVG terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_WIN32 = 1 Defines a Win32 terminal. integer(kind=int32), public, parameter :: GNUPLOT_TERMINAL_WXT = 2 Defines a WXT terminal. character(len=*), public, parameter :: LEGEND_ARRANGE_HORIZONTALLY = \"horizontal\" Defines the legend should be arranged such that the row count\nis minimized. character(len=*), public, parameter :: LEGEND_ARRANGE_VERTICALLY = \"vertical\" Defines the legend should be arranged such that the column count\nis minimized. character(len=*), public, parameter :: LEGEND_BOTTOM = \"bottom\" Defines the legend should be placed at the bottom of the plot. character(len=*), public, parameter :: LEGEND_CENTER = \"center\" Defines the legend should be centered on the plot. character(len=*), public, parameter :: LEGEND_LEFT = \"left\" Defines the legend should be placed at the left of the plot. character(len=*), public, parameter :: LEGEND_RIGHT = \"right\" Defines the legend should be placed at the right of the plot. character(len=*), public, parameter :: LEGEND_TOP = \"top\" Defines the legend should be placed at the top of the plot. integer(kind=int32), public, parameter :: LINE_DASHED = 2 Defines a dashed line. integer(kind=int32), public, parameter :: LINE_DASH_DOTTED = 4 Defines a dash-dotted line. integer(kind=int32), public, parameter :: LINE_DASH_DOT_DOT = 5 Defines a dash-dot-dotted line. integer(kind=int32), public, parameter :: LINE_DOTTED = 3 Defines a dotted line. integer(kind=int32), public, parameter :: LINE_SOLID = 1 Defines a solid line. integer(kind=int32), public, parameter :: MARKER_ASTERISK = 3 Defines an * data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_CIRCLE = 6 Defines an empty circle-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_NABLA = 10 Defines an empty nabla-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_RHOMBUS = 12 Defines an empty rhombus-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_SQUARE = 4 Defines an empty square-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_EMPTY_TRIANGLE = 8 Defines an empty triangle-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_CIRCLE = 7 Defines an filled circle-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_NABLA = 11 Defines an filled nabla-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_RHOMBUS = 13 Defines an filled rhombus-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_SQUARE = 5 Defines an filled square-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_FILLED_TRIANGLE = 9 Defines an filled triangle-shaped data point marker. integer(kind=int32), public, parameter :: MARKER_PLUS = 1 Defines a + data point marker. integer(kind=int32), public, parameter :: MARKER_X = 2 Defines an x data point marker. integer(kind=int32), public, parameter :: PLOTDATA_MAX_NAME_LENGTH = 128 Defines the maximum number of characters allowed in a graph label. character(len=*), public, parameter :: POLAR_THETA_BOTTOM = \"bottom\" States that theta should start at the bottom of the plot. character(len=*), public, parameter :: POLAR_THETA_CCW = \"ccw\" States that theta should proceed in a counter-clockwise direction. character(len=*), public, parameter :: POLAR_THETA_CW = \"cw\" States that theta should proceed in a clockwise direction. character(len=*), public, parameter :: POLAR_THETA_LEFT = \"left\" States that theta should start at the left of the plot. character(len=*), public, parameter :: POLAR_THETA_RIGHT = \"right\" States that theta should start at the right of the plot. character(len=*), public, parameter :: POLAR_THETA_TOP = \"top\" States that theta should start at the top of the plot.","tags":"","loc":"module\\fplot_constants.html"},{"title":"fplot_tri_surface_plot_data – FPLOT","text":"Uses fplot_delaunay_tri_surface strings fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot_data ) :: tri_surface_plot_data Provides a three-dimensional surface plot data set constructed of\ntriangulated points. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => tspd_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => tspd_define_data procedure, public :: get_command_string => tspd_get_cmd procedure, public :: get_data_string => tspd_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_name => pd_get_name procedure, public :: get_use_wireframe => tspd_get_wireframe procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_name => pd_set_name procedure, public :: set_use_wireframe => tspd_set_wireframe","tags":"","loc":"module\\fplot_tri_surface_plot_data.html"},{"title":"fplot_legend – FPLOT","text":"Uses strings fplot_plot_object fplot_constants iso_fortran_env Derived Types type, public, extends( plot_object ) :: legend Defines a legend object. Type-Bound Procedures procedure, public :: get_command_string => leg_get_command_txt procedure, public :: get_draw_border => leg_get_box procedure, public :: get_draw_inside_axes => leg_get_inside procedure, public :: get_horizontal_position => leg_get_horz_pos procedure, public :: get_is_opaque => leg_get_opaque procedure, public :: get_is_visible => leg_get_visible procedure, public :: get_layout => leg_get_layout procedure, public :: get_vertical_position => leg_get_vert_pos procedure, public :: set_draw_border => leg_set_box procedure, public :: set_draw_inside_axes => leg_set_inside procedure, public :: set_horizontal_position => leg_set_horz_pos procedure, public :: set_is_opaque => leg_set_opaque procedure, public :: set_is_visible => leg_set_visible procedure, public :: set_layout => leg_set_layout procedure, public :: set_vertical_position => leg_set_vert_pos","tags":"","loc":"module\\fplot_legend.html"},{"title":"fplot_plot_data_function – FPLOT","text":"Uses strings fplot_colors fplot_plot_data fplot_constants iso_fortran_env Derived Types type, public, extends( line_plot_data ) :: plot_data_function Defines a function to plot. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdf_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pdf_define_data procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdf_get_cmd procedure, public :: get_data_string => pdf_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_function => pdf_get_function procedure, public :: get_function_name => pdf_get_function_name procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_maximum_x => pdf_get_max_x procedure, public :: get_minimum_x => pdf_get_min_x procedure, public :: get_name => pd_get_name procedure, public :: get_sample_count => pfd_get_sample_count procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_maximum_x => pdf_set_max_x procedure, public :: set_minimum_x => pdf_set_min_x procedure, public :: set_name => pd_set_name procedure, public :: set_sample_count => pfd_set_sample_count","tags":"","loc":"module\\fplot_plot_data_function.html"},{"title":"fplot_core – FPLOT","text":"FPLOT is a Fortran library providing a means of interacting with GNUPLOT from a Fortran program. The library\nis designed in an object-oriented manner, and as such utilizes language \nfeatures that require a compiler that supports the 2003 standard. Additionally, it is expected that Gnuplot is installed on the system \npath. For full functionallity, a minimum of GNUPLOT v5.2 is expected. Uses fplot_arrow fplot_plot_2d fplot_plot_axis fplot_plot_data_histogram fplot_windows_terminal fplot_qt_terminal fplot_svg_terminal fplot_constants strings fplot_plot_data fplot_label fplot_wxt_terminal fplot_tri_surface_plot_data fplot_png_terminal fplot_delaunay_tri_surface fplot_colormap fplot_surface_plot_data fplot_plot_data_bar fplot_plot_data_function fplot_surface_plot fplot_latex_terminal fplot_colors fplot_plot_data_box_whisker fplot_plot_data_tri_2d fplot_plot_data_2d fplot_plot_object fplot_pdf_terminal fplot_filled_plot_data fplot_plot_polar fplot_vector_field_plot_data fplot_plot fplot_stats_plots fplot_core_routines fplot_plot_data_3d fplot_triangulations_delaunay_2d fplot_plot_data_error_bars fplot_plot_3d fplot_multiplot fplot_plot_bar fplot_legend fplot_terminal","tags":"","loc":"module\\fplot_core.html"},{"title":"fplot_plot_data_tri_2d – FPLOT","text":"Uses fplot_triangulations_delaunay_2d strings fplot_colors fplot_plot_data fplot_constants iso_fortran_env Derived Types type, public, extends( plot_data_colored ) :: plot_data_tri_2d Defines a 2D triangulated data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdt2d_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pdt2d_define_data procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdt2d_get_cmd procedure, public :: get_data_string => pdt2d_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => pdt2d_get_line_style procedure, public :: get_line_width => pdt2d_get_line_width procedure, public :: get_name => pd_get_name procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => pdt2d_set_line_style procedure, public :: set_line_width => pdt2d_set_line_width procedure, public :: set_name => pd_set_name","tags":"","loc":"module\\fplot_plot_data_tri_2d.html"},{"title":"fplot_plot_3d – FPLOT","text":"Uses fplot_plot fplot_plot_axis fplot_plot_data_3d strings fplot_colors fplot_errors fplot_legend fplot_plot_data fplot_constants iso_fortran_env Derived Types type, public, extends( plot ) :: plot_3d A plot object defining a 3D plot. Finalizations Procedures final :: p3d_clean_up Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_azimuth => p3d_get_azimuth procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => p3d_get_cmd procedure, public :: get_coordinate_system => p3d_get_csys procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_elevation => p3d_get_elevation procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_show_z_major_grid => p3d_get_show_z_major_grid procedure, public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_use_map_view => p3d_get_use_map_view procedure, public :: get_x_axis => p3d_get_x_axis procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y_axis => p3d_get_y_axis procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: get_z_axis => p3d_get_z_axis procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure, public :: get_z_major_grid_color => p3d_get_z_major_grid_color procedure, public :: get_z_major_grid_line_style => p3d_get_z_major_grid_line_style procedure, public :: get_z_major_grid_line_width => p3d_get_z_major_grid_line_width procedure, public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color procedure, public :: get_z_minor_grid_line_style => p3d_get_z_minor_grid_line_style procedure, public :: get_z_minor_grid_line_width => p3d_get_z_minor_grid_line_width procedure, public :: initialize => p3d_init procedure, public :: is_title_defined => plt_has_title procedure, public :: p3d_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , p3d_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_azimuth => p3d_set_azimuth procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_coordinate_system => p3d_set_csys procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_elevation => p3d_set_elevation procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_show_z_major_grid => p3d_set_show_z_major_grid procedure, public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_use_map_view => p3d_set_use_map_view procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_axis_title => p3d_set_x_axis_title procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y_axis_title => p3d_set_y_axis_title procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: set_z_axis_title => p3d_set_z_axis_title procedure, public :: set_z_intersect_xy => p3d_set_z_axis_intersect procedure, public :: set_z_major_grid_color => p3d_set_z_major_grid_color procedure, public :: set_z_major_grid_line_style => p3d_set_z_major_grid_line_style procedure, public :: set_z_major_grid_line_width => p3d_set_z_major_grid_line_width procedure, public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color procedure, public :: set_z_minor_grid_line_style => p3d_set_z_minor_grid_line_style procedure, public :: set_z_minor_grid_line_width => p3d_set_z_minor_grid_line_width procedure, public :: show_legend => plt_show_legend","tags":"","loc":"module\\fplot_plot_3d.html"},{"title":"fplot_windows_terminal – FPLOT","text":"Uses fplot_terminal iso_fortran_env Derived Types type, public, extends( terminal ) :: windows_terminal A Windows-specific terminal. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => wt_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_windows_terminal.html"},{"title":"delaunay – FPLOT","text":"Provides a minimal, in-house implementation of the subset of the\nGEOMPACK library used by FPLOT to construct 2D Delaunay\ntriangulations. Original FORTRAN77 version by Barry Joe. FORTRAN90 version by\nJohn Burkardt. Reference: Barry Joe, GEOMPACK - a software\npackage for the generation of meshes using geometric algorithms,\nAdvances in Engineering Software, Volume 13, pages 325-331, 1991. Uses iso_fortran_env Subroutines public subroutine r8tris2 (node_num, node_xy, triangle_num, triangle_node, triangle_neighbor) Constructs a Delaunay triangulation of 2D vertices. Read more… Arguments Type Intent Optional Attributes Name integer(kind=int32), intent(in) :: node_num The number of vertices. real(kind=real64), intent(inout), dimension(2, node_num) :: node_xy The coordinates of the vertices. On output, the vertices\nhave been sorted into dictionary order. integer(kind=int32), intent(out) :: triangle_num The number of triangles in the triangulation;\nTRIANGLE_NUM is equal to 2*NODE_NUM - NB - 2, where NB is\nthe number of boundary vertices. integer(kind=int32), intent(out), dimension(3, 2 * node_num) :: triangle_node The nodes that make up each triangle. The elements are\nindices of the vertex array. The vertices of the\ntriangles are in counter clockwise order. integer(kind=int32), intent(out), dimension(3, 2 * node_num) :: triangle_neighbor The triangle neighbor list. Positive elements are\nindices of TRIANGLE_NODE; negative elements are used for\nlinks of a counter clockwise linked list of boundary\nedges; LINK = -(3*I + J-1) where I, J = triangle, edge\nindex; TRIANGLE_NEIGHBOR(J,I) refers to the neighbor\nalong the edge from vertex J to J+1 (mod 3).","tags":"","loc":"module\\delaunay.html"},{"title":"fplot_plot_data_box_whisker – FPLOT","text":"Uses strings fplot_colors fplot_errors fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot_data_colored ) :: plot_data_box_whisker A container for box-whisker plot data. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdbw_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pdbw_define_data_xstring procedure, public :: get_box_fill_opacity => pdbw_get_opacity procedure, public :: get_box_width => pdbw_get_box_width procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdbw_get_cmd procedure, public :: get_data_string => pdbw_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => pdbw_get_use_y2 procedure, public :: get_fill_boxes => pdbw_get_fill_boxes procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_width => pdbw_get_line_width procedure, public :: get_midline_color => pdbw_get_midline_color procedure, public :: get_midline_width => pdbw_get_midline_width procedure, public :: get_name => pd_get_name procedure, public :: get_use_whiskerbars => pdbw_get_use_whiskerbars procedure, public :: get_whiskerbar_width => pdbw_get_whiskerbar_width procedure, public :: set_box_fill_opacity => pdbw_set_opacity procedure, public :: set_box_width => pdbw_set_box_width procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => pdbw_set_use_y2 procedure, public :: set_fill_boxes => pdbw_set_fill_boxes procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_width => pdbw_set_line_width procedure, public :: set_midline_color => pdbw_set_midline_color procedure, public :: set_midline_width => pdbw_set_midline_width procedure, public :: set_name => pd_set_name procedure, public :: set_use_whiskerbars => pdbw_set_use_whiskerbars procedure, public :: set_whiskerbar_width => pdbw_set_whiskerbar_width","tags":"","loc":"module\\fplot_plot_data_box_whisker.html"},{"title":"fplot_svg_terminal – FPLOT","text":"Uses strings fplot_terminal fplot_constants iso_fortran_env Derived Types type, public, extends( file_terminal ) :: svg_terminal An SVG terminal. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => svg_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_svg_terminal.html"},{"title":"fplot_plot_object – FPLOT","text":"Uses iso_fortran_env Interfaces interface public function get_string_result(this) result(x) Returns a string from a plot_object. Arguments Type Intent Optional Attributes Name class( plot_object ), intent(in) :: this The plot_object object. Return Value character(len=:), allocatable The result string. Derived Types type, public :: plot_object The base type for all plot objects. Type-Bound Procedures procedure( get_string_result ), public, deferred :: get_command_string","tags":"","loc":"module\\fplot_plot_object.html"},{"title":"fplot_delaunay_tri_surface – FPLOT","text":"Uses fplot_errors fplot_triangulations_delaunay_2d ieee_arithmetic iso_fortran_env Derived Types type, public, extends( delaunay_tri_2d ) :: delaunay_tri_surface Provides a type describing a triangulated surface. Type-Bound Procedures procedure, public :: create => d2d_init procedure, public :: define_function_values => dts_define_fcn generic, public :: evaluate => dts_interp_1, dts_interp_2 procedure, public :: find_triangle => d2d_get_tri_with_pt procedure, public :: get_indices => d2d_get_tris procedure, public :: get_point_count => d2d_get_pt_count procedure, public :: get_points_x => d2d_get_x_pts procedure, public :: get_points_y => d2d_get_y_pts procedure, public :: get_points_z => dts_get_z procedure, public :: get_triangle_count => d2d_get_tri_count","tags":"","loc":"module\\fplot_delaunay_tri_surface.html"},{"title":"fplot_errors – FPLOT","text":"Uses iso_fortran_env Variables Type Visibility Attributes Name Initial integer(kind=int32), public, parameter :: PLOT_ARRAY_SIZE_MISMATCH_ERROR = 1003 Occurs if there is an array size mismatch error. integer(kind=int32), public, parameter :: PLOT_GNUPLOT_FILE_ERROR = 1004 Occurs if there is a GNUPLOT file error. integer(kind=int32), public, parameter :: PLOT_INVALID_INPUT_ERROR = 1001 Occurs if an invalid input is provided. integer(kind=int32), public, parameter :: PLOT_INVALID_OPERATION_ERROR = 1002 Occurs if an attempt is made to perform an invalid operation. integer(kind=int32), public, parameter :: PLOT_OUT_OF_MEMORY_ERROR = 1000 Occurs if there is insufficient memory available for the\nrequested operation. Derived Types type, public :: errors Type-Bound Procedures procedure, public :: report_error Subroutines public subroutine report_array_size_mismatch_error (err, fcn, name, expected, actual) Reports an array size mismatch error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: name The variable name. integer(kind=int32), intent(in) :: expected The expected array size. integer(kind=int32), intent(in) :: actual The actual array size. public subroutine report_error (this, fcn, msg, code) Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: this character(len=*), intent(in) :: fcn character(len=*), intent(in) :: msg integer(kind=int32), intent(in) :: code public subroutine report_file_create_error (err, fcn, fname, flag) Reports an I/O error related to file creating. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: fname The filename. integer(kind=int32), intent(in) :: flag The error flag returned by the system. public subroutine report_matrix_size_mismatch_error (err, fcn, name, mexp, nexp, mact, nact) Reports a matrix size mismatch error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. character(len=*), intent(in) :: name The variable name. integer(kind=int32), intent(in) :: mexp The expected number of rows. integer(kind=int32), intent(in) :: nexp The expected number of columns. integer(kind=int32), intent(in) :: mact The actual number of rows. integer(kind=int32), intent(in) :: nact The actual number of columns. public subroutine report_memory_error (err, fcn, flag) Reports a memory allocation error. Arguments Type Intent Optional Attributes Name class( errors ), intent(inout) :: err The error handling object. character(len=*), intent(in) :: fcn The name of the function or subroutine in which the error occurred. integer(kind=int32), intent(in) :: flag The error flag returned by the system.","tags":"","loc":"module\\fplot_errors.html"},{"title":"fplot_simplify – FPLOT","text":"Uses fplot_errors iso_fortran_env Interfaces public interface simplify_polyline private function simplify_polyline_2d1(x, y, tol, err) result(ln) Simplifies a 2D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, and the second \ncolumn contains the y-coordinates. private function simplify_polyline_3d1(x, y, z, tol, err) result(ln) Simplifies a 3D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An N-element array containing the x-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: y An N-element array containing the y-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in), dimension(:) :: z An N-element array containing the z-coordinates of the vertices\nmaking up the polyline. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, the second \ncolumn contains the y-coordinates, and the third column contains \nthe z-coordinates. private function simplify_polyline_mtx(xy, tol, err) result(ln) Simplifies a 2D or 3D polyline by removing points too close to \ndiscern given a specified tolerance. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:,:) :: xy An N-by-2 or N-by-3 matrix containing the polyline vertex data. real(kind=real64), intent(in) :: tol The distance tolerance to use when simplifying the polyline.\nThis value must be positive, and larger than machine epsilon. class( errors ), intent(inout), optional, target :: err An error handling object. Return Value real(kind=real64), allocatable, dimension(:,:) A matrix containing the simplified polyline vertices. The first\ncolumn of the matrix contains the x-coordinates, the second \ncolumn contains the y-coordinates, and if necessary, the third \ncolumn contains the z-coordinates.","tags":"","loc":"module\\fplot_simplify.html"},{"title":"fplot_qt_terminal – FPLOT","text":"Uses fplot_terminal iso_fortran_env Derived Types type, public, extends( terminal ) :: qt_terminal Defines a terminal that utilizes QT. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => qt_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_qt_terminal.html"},{"title":"fplot_multiplot – FPLOT","text":"Uses fplot_plot fplot_windows_terminal strings fplot_latex_terminal fplot_qt_terminal fplot_wxt_terminal fplot_pdf_terminal fplot_plot_object fplot_svg_terminal fplot_errors fplot_png_terminal collections fplot_terminal fplot_constants iso_fortran_env Derived Types type, public, extends( plot_object ) :: multiplot Defines a multi-plot layout. Components Type Visibility Attributes Name Initial class( terminal ), public, pointer :: m_terminal => null() The GNUPLOT terminal object to target. Finalizations Procedures final :: mp_clean Type-Bound Procedures procedure, public :: draw => mp_draw procedure, public :: get => mp_get procedure, public :: get_bottom_margin => mp_get_bottom_margin procedure, public :: get_column_count => mp_get_cols procedure, public :: get_command_string => mp_get_command procedure, public :: get_font_name => mp_get_font procedure, public :: get_font_size => mp_get_font_size procedure, public :: get_horizontal_spacing => mp_get_horizontal_spacing procedure, public :: get_left_margin => mp_get_left_margin procedure, public :: get_plot_count => mp_get_count procedure, public :: get_right_margin => mp_get_right_margin procedure, public :: get_row_count => mp_get_rows procedure, public :: get_terminal => mp_get_term procedure, public :: get_title => mp_get_title procedure, public :: get_top_margin => mp_get_top_margin procedure, public :: get_use_auto_generated_margins => mp_get_use_auto_generated_margins procedure, public :: get_vertical_spacing => mp_get_vertical_spacing procedure, public :: initialize => mp_init procedure, public :: is_title_defined => mp_has_title procedure, public :: save_file => mp_save procedure, public :: set => mp_set procedure, public :: set_bottom_margin => mp_set_bottom_margin procedure, public :: set_font_name => mp_set_font procedure, public :: set_font_size => mp_set_font_size procedure, public :: set_horizontal_spacing => mp_set_horizontal_spacing procedure, public :: set_left_margin => mp_set_left_margin procedure, public :: set_right_margin => mp_set_right_margin procedure, public :: set_title => mp_set_title procedure, public :: set_top_margin => mp_set_top_margin procedure, public :: set_use_auto_generated_margins => mp_set_use_auto_generated_margins procedure, public :: set_vertical_spacing => mp_set_vertical_spacing procedure, public :: set_window_size => mp_set_window_size","tags":"","loc":"module\\fplot_multiplot.html"},{"title":"fplot_vector_field_plot_data – FPLOT","text":"Uses strings fplot_colors fplot_errors fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot_data_colored ) :: vector_field_plot_data Defines a two-dimensional vector-field plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => vfpd_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => vfpd_define_data procedure, public :: get_arrow_size => vfpd_get_arrow_size procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => vfpd_get_cmd procedure, public :: get_data_string => vfpd_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_fill_arrow => vfpd_get_fill_arrow procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_name => pd_get_name procedure, public :: get_use_data_dependent_colors => vfpd_get_use_data_dependent_colors procedure, public :: set_arrow_size => vfpd_set_arrow_size procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_fill_arrow => vfpd_set_fill_arrow procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name","tags":"","loc":"module\\fplot_vector_field_plot_data.html"},{"title":"fplot_surface_plot – FPLOT","text":"Uses fplot_surface_plot_data strings fplot_plot_3d fplot_errors fplot_legend iso_fortran_env Derived Types type, public, extends( plot_3d ) :: surface_plot Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_allow_smoothing => surf_get_smooth procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_azimuth => p3d_get_azimuth procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => surf_get_cmd procedure, public :: get_coordinate_system => p3d_get_csys procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_elevation => p3d_get_elevation procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_light_intensity => surf_get_light_intensity procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_contours => surf_get_show_contours procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_hidden => surf_get_show_hidden procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_show_z_major_grid => p3d_get_show_z_major_grid procedure, public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid procedure, public :: get_specular_intensity => surf_get_specular_intensity procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_transparency => surf_get_transparency procedure, public :: get_use_lighting => surf_get_use_lighting procedure, public :: get_use_map_view => p3d_get_use_map_view procedure, public :: get_x_axis => p3d_get_x_axis procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y_axis => p3d_get_y_axis procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: get_z_axis => p3d_get_z_axis procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure, public :: get_z_major_grid_color => p3d_get_z_major_grid_color procedure, public :: get_z_major_grid_line_style => p3d_get_z_major_grid_line_style procedure, public :: get_z_major_grid_line_width => p3d_get_z_major_grid_line_width procedure, public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color procedure, public :: get_z_minor_grid_line_style => p3d_get_z_minor_grid_line_style procedure, public :: get_z_minor_grid_line_width => p3d_get_z_minor_grid_line_width procedure, public :: initialize => surf_init procedure, public :: is_title_defined => plt_has_title procedure, public :: p3d_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , p3d_push_data , surf_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_allow_smoothing => surf_set_smooth procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_azimuth => p3d_set_azimuth procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_coordinate_system => p3d_set_csys procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_elevation => p3d_set_elevation procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_light_intensity => surf_set_light_intensity procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_contours => surf_set_show_contours procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_hidden => surf_set_show_hidden procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_show_z_major_grid => p3d_set_show_z_major_grid procedure, public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid procedure, public :: set_specular_intensity => surf_set_specular_intensity procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_transparency => surf_set_transparency procedure, public :: set_use_lighting => surf_set_use_lighting procedure, public :: set_use_map_view => p3d_set_use_map_view procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_axis_title => p3d_set_x_axis_title procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y_axis_title => p3d_set_y_axis_title procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: set_z_axis_title => p3d_set_z_axis_title procedure, public :: set_z_intersect_xy => p3d_set_z_axis_intersect procedure, public :: set_z_major_grid_color => p3d_set_z_major_grid_color procedure, public :: set_z_major_grid_line_style => p3d_set_z_major_grid_line_style procedure, public :: set_z_major_grid_line_width => p3d_set_z_major_grid_line_width procedure, public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color procedure, public :: set_z_minor_grid_line_style => p3d_set_z_minor_grid_line_style procedure, public :: set_z_minor_grid_line_width => p3d_set_z_minor_grid_line_width procedure, public :: show_legend => plt_show_legend procedure, public :: surf_push_data","tags":"","loc":"module\\fplot_surface_plot.html"},{"title":"fplot_plot_data – FPLOT","text":"Uses strings fplot_colors fplot_plot_object fplot_errors fplot_constants iso_fortran_env Interfaces interface public subroutine pd_clear_action(this) Performs a clearing operation. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(inout) :: this The plot_data object. interface public function pd_get_string_result(this) result(x) Retrieves a string from a plot_data object. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: this The plot_data object. Return Value character(len=:), allocatable The string. interface public pure function spd_get_int_value(this) result(x) Gets an integer value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The value. interface public function spd_get_string_result(this) result(x) Gets a string value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The string. interface public pure function spd_get_value(this, index) result(x) Gets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. Return Value real(kind=real64) The value. interface public subroutine spd_set_value(this, index, x) Sets an indexed value from the scatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: index The index. real(kind=real64), intent(in) :: x The value. Derived Types type, public, extends( plot_data_colored ) :: line_plot_data A plot_data object for describing line series data. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure( pd_clear_action ), public, deferred :: clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => lpd_get_cmd procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_name => pd_get_name procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_name => pd_set_name type, public, extends( plot_object ) :: plot_data A container for plot data. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure( pd_clear_action ), public, deferred :: clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure( get_string_result ), public, deferred :: get_command_string procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_name => pd_get_name procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_name => pd_set_name type, public, extends( plot_data ) :: plot_data_colored Defines a colored plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure( pd_clear_action ), public, deferred :: clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: get_color_index => pdc_get_color_index procedure( get_string_result ), public, deferred :: get_command_string procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_name => pd_get_name procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name type, public, extends( line_plot_data ) :: scatter_plot_data A plot_data object for describing scatter plot data sets. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure( pd_clear_action ), public, deferred :: clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure( spd_get_string_result ), public, deferred :: get_axes_string procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => spd_get_cmd procedure( spd_get_int_value ), public, deferred :: get_count procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_fill_curve => spd_get_filled procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_name => pd_get_name procedure, public :: get_simplification_factor => spd_get_simplify_factor procedure, public :: get_simplify_data => spd_get_simplify_data procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size procedure( spd_get_value ), public, deferred :: get_x procedure( spd_get_value ), public, deferred :: get_y procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_fill_curve => spd_set_filled procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_name => pd_set_name procedure, public :: set_simplification_factor => spd_set_simplify_factor procedure, public :: set_simplify_data => spd_set_simplify_data procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size procedure( spd_set_value ), public, deferred :: set_x procedure( spd_set_value ), public, deferred :: set_y Functions public function lpd_get_cmd (this) result(rst) Gets the GNUPLOT command string to represent this line_plot_data\nobject. Arguments Type Intent Optional Attributes Name class( line_plot_data ), intent(in) :: this The line_plot_data object. Return Value character(len=:), allocatable The command string. public function spd_get_cmd (this) result(x) Gets the GNUPLOT command string to represent this\nscatter_plot_data object. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value character(len=:), allocatable The command string.","tags":"","loc":"module\\fplot_plot_data.html"},{"title":"fplot_plot_axis – FPLOT","text":"Uses strings fplot_plot_object fplot_constants iso_fortran_env Interfaces interface public function pa_get_string_result(this) result(x) Retrieves a string from a plot_axis. Arguments Type Intent Optional Attributes Name class( plot_axis ), intent(in) :: this The plot_axis object. Return Value character(len=:), allocatable The string. Derived Types type, public :: name_value_pair Defines a name-value pair. Components Type Visibility Attributes Name Initial character(len=:), public, allocatable :: name The name. real(kind=real64), public :: value The associated value. type, public, extends( plot_object ) :: plot_axis Defines a plot axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure( pa_get_string_result ), public, deferred :: get_id_string procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_angle => pa_get_title_angle procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_angle => pa_set_title_angle procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width type, public, extends( plot_axis ) :: x_axis Defines an x-axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure, public :: get_id_string => xa_get_id procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_angle => pa_get_title_angle procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_angle => pa_set_title_angle procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width type, public, extends( plot_axis ) :: y2_axis Defines a secondary y-axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure, public :: get_id_string => y2a_get_id procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_angle => pa_get_title_angle procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_angle => pa_set_title_angle procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width type, public, extends( plot_axis ) :: y_axis Defines a y-axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure, public :: get_id_string => ya_get_id procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_angle => pa_get_title_angle procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_angle => pa_set_title_angle procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width type, public, extends( plot_axis ) :: z_axis Defines a z-axis object. Type-Bound Procedures procedure, public :: get_auto_calculate_title_angle => pa_get_auto_calc_title_angle procedure, public :: get_autoscale => pa_get_autoscale procedure, public :: get_command_string => pa_get_cmd_string procedure, public :: get_id_string => za_get_id procedure, public :: get_is_log_scaled => pa_get_log_scale procedure, public :: get_limits => pa_get_axis_limits procedure, public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure, public :: get_offset_tics => pa_get_offset_tics procedure, public :: get_show_tic_labels => pa_get_show_tic_labels procedure, public :: get_tic_label_alignment => pa_get_tic_label_alignment procedure, public :: get_tic_label_angle => pa_get_tic_label_angle procedure, public :: get_tic_label_format => pa_get_tic_label_fmt procedure, public :: get_tic_label_rotation_origin => pa_get_tic_rotation_origin procedure, public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure, public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure, public :: get_title => pa_get_title procedure, public :: get_title_angle => pa_get_title_angle procedure, public :: get_title_x_offset => pa_get_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: get_use_default_tic_label_format => pa_get_use_dft_tic_lbl_fmt procedure, public :: get_use_manual_tic_labels => pa_get_use_manual_tic_labels procedure, public :: get_zero_axis => pa_get_zero_axis procedure, public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure, public :: is_title_defined => pa_has_title procedure, public :: set_auto_calculate_title_angle => pa_set_auto_calc_title_angle procedure, public :: set_autoscale => pa_set_autoscale procedure, public :: set_is_log_scaled => pa_set_log_scale procedure, public :: set_limits => pa_set_axis_limits procedure, public :: set_manual_tic_labels => pa_set_manual_tic_labels procedure, public :: set_offset_tics => pa_set_offset_tics procedure, public :: set_show_tic_labels => pa_set_show_tic_labels procedure, public :: set_tic_label_alignment => pa_set_tic_label_alignment procedure, public :: set_tic_label_angle => pa_set_tic_label_angle procedure, public :: set_tic_label_format => pa_set_tic_label_fmt procedure, public :: set_tic_label_rotation_origin => pa_set_tic_rotation_origin procedure, public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure, public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure, public :: set_title => pa_set_title procedure, public :: set_title_angle => pa_set_title_angle procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset procedure, public :: set_use_default_tic_label_format => pa_set_use_dft_tic_lbl_fmt procedure, public :: set_use_manual_tic_labels => pa_set_use_manual_tic_labels procedure, public :: set_zero_axis => pa_set_zero_axis procedure, public :: set_zero_axis_line_width => pa_set_zero_axis_width","tags":"","loc":"module\\fplot_plot_axis.html"},{"title":"fplot_plot_2d – FPLOT","text":"Uses fplot_plot fplot_plot_axis strings fplot_colors fplot_plot_data_2d fplot_errors fplot_legend fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot ) :: plot_2d A plot object defining a 2D plot. Finalizations Procedures final :: p2d_clean_up Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => p2d_get_cmd procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_jitter_overlap => p2d_get_jitter_overlap procedure, public :: get_jitter_spread => p2d_get_jitter_spread procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_square_axes => p2d_get_square_axes procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_use_jittering => p2d_get_use_jitter procedure, public :: get_use_y2_axis => p2d_get_use_y2 procedure, public :: get_x_axis => p2d_get_x_axis procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y2_axis => p2d_get_y2_axis procedure, public :: get_y_axis => p2d_get_y_axis procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: initialize => p2d_init procedure, public :: is_title_defined => plt_has_title procedure, public :: p2d_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , p2d_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_jitter_overlap => p2d_set_jitter_overlap procedure, public :: set_jitter_spread => p2d_set_jitter_spread procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_square_axes => p2d_set_square_axes procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_use_jittering => p2d_set_use_jitter procedure, public :: set_use_y2_axis => p2d_set_use_y2 procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_axis_title => p2d_set_x_axis_title procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y2_axis_title => p2d_set_y2_axis_title procedure, public :: set_y_axis_title => p2d_set_y_axis_title procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: show_legend => plt_show_legend","tags":"","loc":"module\\fplot_plot_2d.html"},{"title":"fplot_triangulations_delaunay_2d – FPLOT","text":"Uses fplot_errors delaunay iso_fortran_env Derived Types type, public :: delaunay_tri_2d Provides a container for a 2D Delaunay triangulation. Type-Bound Procedures procedure, public :: create => d2d_init procedure, public :: find_triangle => d2d_get_tri_with_pt procedure, public :: get_indices => d2d_get_tris procedure, public :: get_point_count => d2d_get_pt_count procedure, public :: get_points_x => d2d_get_x_pts procedure, public :: get_points_y => d2d_get_y_pts procedure, public :: get_triangle_count => d2d_get_tri_count","tags":"","loc":"module\\fplot_triangulations_delaunay_2d.html"},{"title":"fplot_core_routines – FPLOT","text":"Uses iso_fortran_env Functions public pure function linspace (start, finish, npts) result(x) Constructs a linearly spaced array. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in) :: start The first value in the array. real(kind=real64), intent(in) :: finish The last value in the array. integer(kind=int32), intent(in) :: npts The number of values in the array. Return Value real(kind=real64), allocatable, dimension(:) The resulting array. public pure function logspace (start, finish, npts) result(x) Construcst a logarithmically spaced array. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in) :: start The exponent of the first value in the array. real(kind=real64), intent(in) :: finish The exponent of the final value in the array. integer(kind=int32), intent(in) :: npts The number of values in the array. Return Value real(kind=real64), allocatable, dimension(:) The resulting array. public pure function meshgrid (x, y) result(xy) Constructs two matrices (X and Y) from x and y data arrays. Arguments Type Intent Optional Attributes Name real(kind=real64), intent(in), dimension(:) :: x An M-element array of x data points. real(kind=real64), intent(in), dimension(:) :: y An N-element array of y data points. Return Value real(kind=real64), allocatable, dimension(:,:,:) An N-by-M-by-2 array containing the x data matrix on the first \npage of the array, and the y data matrix on the second page.","tags":"","loc":"module\\fplot_core_routines.html"},{"title":"fplot_stats_plots – FPLOT","text":"Uses fplot_plot fplot_plot_2d fplot_plot_axis fplot_plot_data_histogram strings fplot_colors fplot_plot_data_2d fplot_plot_object fplot_errors fplot_multiplot collections fplot_terminal fplot_constants iso_fortran_env Derived Types type, public, extends( plot_object ) :: correlation_plot Defines a multiplot arrangement designed to illustrate correlation\nbetween data sets. Type-Bound Procedures procedure, public :: draw => cp_draw procedure, public :: get => cp_get procedure, public :: get_column_count => cp_get_cols procedure, public :: get_command_string => cp_get_command procedure, public :: get_font_name => cp_get_font procedure, public :: get_font_size => cp_get_font_size procedure, public :: get_plot_count => cp_get_count procedure, public :: get_row_count => cp_get_rows procedure, public :: get_terminal => cp_get_term procedure, public :: initialize => cp_init procedure, public :: save_file => cp_save procedure, public :: set_font_name => cp_set_font procedure, public :: set_font_size => cp_set_font_size","tags":"","loc":"module\\fplot_stats_plots.html"},{"title":"fplot_wxt_terminal – FPLOT","text":"Uses fplot_terminal iso_fortran_env Derived Types type, public, extends( terminal ) :: wxt_terminal A WXT terminal. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => wxt_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_wxt_terminal.html"},{"title":"fplot_latex_terminal – FPLOT","text":"Uses strings fplot_terminal fplot_constants iso_fortran_env Derived Types type, public, extends( file_terminal ) :: latex_terminal A LATEX terminal. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => tex_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_latex_terminal.html"},{"title":"fplot_terminal – FPLOT","text":"Uses strings fplot_plot_object fplot_constants iso_fortran_env Interfaces interface public function term_get_string_result(this) result(x) Retrieves a string from a terminal. Arguments Type Intent Optional Attributes Name class( terminal ), intent(in) :: this The terminal object. Return Value character(len=:), allocatable The string. Derived Types type, public, extends( terminal ) :: file_terminal Defines a terminal meant to save results directly to file \n(e.g. PNG, SVG, etc.). Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure( term_get_string_result ), public, deferred :: get_id_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width type, public, extends( plot_object ) :: terminal A GNUPLOT terminal object. Type-Bound Procedures procedure, public :: get_command_string => term_get_command_string procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure( term_get_string_result ), public, deferred :: get_id_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_terminal.html"},{"title":"fplot_plot_data_2d – FPLOT","text":"Uses strings fplot_plot_data fplot_errors fplot_simplify iso_fortran_env Derived Types type, public, extends( scatter_plot_data ) :: plot_data_2d Defines a two-dimensional plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pd2d_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name generic, public :: define_data => pd2d_set_data_1 , pd2d_set_data_2 procedure, public :: get_axes_string => pd2d_get_axes_cmd procedure, public :: get_color_data => pd2d_get_c_array procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => spd_get_cmd procedure, public :: get_count => pd2d_get_data_count procedure, public :: get_data_string => pd2d_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => pd2d_get_draw_against_y2 procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_fill_curve => spd_get_filled procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_name => pd_get_name procedure, public :: get_point_size_data => pd2d_get_ps_array procedure, public :: get_simplification_factor => spd_get_simplify_factor procedure, public :: get_simplify_data => spd_get_simplify_data procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size procedure, public :: get_x => pd2d_get_x_data procedure, public :: get_x_data => pd2d_get_x_array procedure, public :: get_y => pd2d_get_y_data procedure, public :: get_y_data => pd2d_get_y_array procedure, public :: pd2d_set_data_1 procedure, public :: pd2d_set_data_2 procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => pd2d_set_draw_against_y2 procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_fill_curve => spd_set_filled procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_name => pd_set_name procedure, public :: set_simplification_factor => spd_set_simplify_factor procedure, public :: set_simplify_data => spd_set_simplify_data procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size procedure, public :: set_x => pd2d_set_x_data procedure, public :: set_y => pd2d_set_y_data","tags":"","loc":"module\\fplot_plot_data_2d.html"},{"title":"fplot_plot_data_3d – FPLOT","text":"Uses strings fplot_plot_data fplot_errors fplot_simplify iso_fortran_env Derived Types type, public, extends( scatter_plot_data ) :: plot_data_3d Defines a three-dimensional plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pd3d_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pd3d_set_data_1 procedure, public :: get_axes_string => pd3d_get_axes_cmd procedure, public :: get_color_data => pd3d_get_c_array procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => spd_get_cmd procedure, public :: get_count => pd3d_get_data_count procedure, public :: get_data_string => pd3d_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure, public :: get_draw_line => lpd_get_draw_line procedure, public :: get_draw_markers => lpd_get_draw_markers procedure, public :: get_fill_curve => spd_get_filled procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_style => lpd_get_line_style procedure, public :: get_line_width => lpd_get_line_width procedure, public :: get_marker_frequency => lpd_get_marker_frequency procedure, public :: get_marker_scaling => lpd_get_marker_scaling procedure, public :: get_marker_style => lpd_get_marker_style procedure, public :: get_name => pd_get_name procedure, public :: get_point_size_data => pd3d_get_c_array procedure, public :: get_simplification_factor => spd_get_simplify_factor procedure, public :: get_simplify_data => spd_get_simplify_data procedure, public :: get_use_data_dependent_colors => spd_get_data_dependent_colors procedure, public :: get_use_variable_size_points => spd_get_use_var_point_size procedure, public :: get_x => pd3d_get_x_data procedure, public :: get_x_data => pd3d_get_x_array procedure, public :: get_y => pd3d_get_y_data procedure, public :: get_y_data => pd3d_get_y_array procedure, public :: get_z => pd3d_get_z_data procedure, public :: get_z_data => pd3d_get_z_array procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_impulses => lpd_set_draw_impulse_lines procedure, public :: set_draw_line => lpd_set_draw_line procedure, public :: set_draw_markers => lpd_set_draw_markers procedure, public :: set_fill_curve => spd_set_filled procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_style => lpd_set_line_style procedure, public :: set_line_width => lpd_set_line_width procedure, public :: set_marker_frequency => lpd_set_marker_frequency procedure, public :: set_marker_scaling => lpd_set_marker_scaling procedure, public :: set_marker_style => lpd_set_marker_style procedure, public :: set_name => pd_set_name procedure, public :: set_simplification_factor => spd_set_simplify_factor procedure, public :: set_simplify_data => spd_set_simplify_data procedure, public :: set_use_data_dependent_colors => spd_set_data_dependent_colors procedure, public :: set_use_variable_size_points => spd_set_use_var_point_size procedure, public :: set_x => pd3d_set_x_data procedure, public :: set_y => pd3d_set_y_data procedure, public :: set_z => pd3d_set_z_data","tags":"","loc":"module\\fplot_plot_data_3d.html"},{"title":"fplot_colors – FPLOT","text":"Uses iso_fortran_env Variables Type Visibility Attributes Name Initial type( color ), public, parameter :: CLR_BLACK = color(0, 0, 0, 0) Black. type( color ), public, parameter :: CLR_BLUE = color(0, 0, 255, 0) Blue. type( color ), public, parameter :: CLR_CYAN = color(0, 255, 255, 0) Cyan. type( color ), public, parameter :: CLR_GRAY = color(128, 128, 128, 0) Gray. type( color ), public, parameter :: CLR_GREEN = color(0, 128, 0, 0) Green. type( color ), public, parameter :: CLR_LIME = color(0, 255, 0, 0) Lime. type( color ), public, parameter :: CLR_MAGENTA = color(255, 0, 255, 0) Magenta. type( color ), public, parameter :: CLR_MAROON = color(128, 0, 0, 0) Maroon. type( color ), public, parameter :: CLR_NAVY = color(0, 0, 128, 0) Navy. type( color ), public, parameter :: CLR_OLIVE = color(128, 128, 0, 0) Olive. type( color ), public, parameter :: CLR_ORANGE = color(255, 165, 0, 0) Orange. type( color ), public, parameter :: CLR_PURPLE = color(128, 0, 128, 0) Purple. type( color ), public, parameter :: CLR_RED = color(255, 0, 0, 0) Red. type( color ), public, parameter :: CLR_SILVER = color(192, 192, 192, 0) Silver. type( color ), public, parameter :: CLR_TEAL = color(0, 128, 128, 0) Teal. type( color ), public, parameter :: CLR_WHITE = color(255, 255, 255, 0) White. type( color ), public, parameter :: CLR_YELLOW = color(255, 255, 0, 0) Yellow. type( color ), public, parameter, dimension(7) :: color_list = [color(0, int(0.447*255), int(0.741*255), 0), color(int(0.85*255), int(0.325*255), int(0.098*255), 0), color(int(0.929*255), int(0.694*255), int(0.125*255), 0), color(int(0.494*255), int(0.184*255), int(0.556*255), 0), color(int(0.466*255), int(0.674*255), int(0.188*255), 0), color(int(0.301*255), int(0.745*255), int(0.933*255), 0), color(int(0.635*255), int(0.078*255), int(0.184*255), 0)] Interfaces public interface operator(/=) private pure function clr_not_equals(x, y) result(rst) Arguments Type Intent Optional Attributes Name type( color ), intent(in) :: x type( color ), intent(in) :: y Return Value logical public interface operator(==) private pure function clr_equals(x, y) result(rst) Arguments Type Intent Optional Attributes Name type( color ), intent(in) :: x type( color ), intent(in) :: y Return Value logical Derived Types type, public :: color Describes an RGB color. Components Type Visibility Attributes Name Initial integer(kind=int32), public :: alpha = 0 The alpha component of the color (must be between 0 and 255).\nNotice, 0 is fully opaque and 255 is fully transparent. integer(kind=int32), public :: blue = 255 The blue component of the color (must be between 0 and 255). integer(kind=int32), public :: green = 0 The green component of the color (must be between 0 and 255). integer(kind=int32), public :: red = 0 The red component of the color (must be between 0 and 255). Type-Bound Procedures procedure, public, pass :: copy_from => clr_copy_from procedure, public, pass :: rgb_to_hex_string => clr_rgb_to_hex_string procedure, public, pass :: to_hex_string => clr_to_hex_string","tags":"","loc":"module\\fplot_colors.html"},{"title":"fplot_plot_polar – FPLOT","text":"Uses fplot_plot strings fplot_plot_data fplot_colors fplot_plot_data_2d fplot_errors fplot_legend fplot_terminal fplot_constants iso_fortran_env Derived Types type, public, extends( plot ) :: plot_polar Finalizations Procedures final :: plr_clean_up Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_autoscale => plr_get_autoscale procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => plr_get_cmd procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_radial_limits => plr_get_limits procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_terminal => plt_get_term procedure, public :: get_theta_direction => plr_get_theta_direction procedure, public :: get_theta_start_position => plr_get_theta_start procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: initialize => plr_init procedure, public :: is_title_defined => plt_has_title procedure, public :: plr_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , plr_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_autoscale => plr_set_autoscale procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_radial_limits => plr_set_limits procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_theta_direction => plr_set_theta_direction procedure, public :: set_theta_start_position => plr_set_theta_start procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: show_legend => plt_show_legend","tags":"","loc":"module\\fplot_plot_polar.html"},{"title":"fplot_plot_bar – FPLOT","text":"Uses strings fplot_plot_2d iso_fortran_env Derived Types type, public, extends( plot_2d ) :: plot_bar Defines a 2D plot tailored towards bar plotting. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_bar_width => pb_get_bar_width procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => pb_get_cmd procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_jitter_overlap => p2d_get_jitter_overlap procedure, public :: get_jitter_spread => p2d_get_jitter_spread procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_spacing => pb_get_spacing procedure, public :: get_square_axes => p2d_get_square_axes procedure, public :: get_stacked => pb_get_stacked procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_use_jittering => p2d_get_use_jitter procedure, public :: get_use_y2_axis => p2d_get_use_y2 procedure, public :: get_x_axis => p2d_get_x_axis procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y2_axis => p2d_get_y2_axis procedure, public :: get_y_axis => p2d_get_y_axis procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: initialize => p2d_init procedure, public :: is_title_defined => plt_has_title procedure, public :: p2d_push_data procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data , p2d_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_bar_width => pb_set_bar_width procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_jitter_overlap => p2d_set_jitter_overlap procedure, public :: set_jitter_spread => p2d_set_jitter_spread procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_spacing => pb_set_spacing procedure, public :: set_square_axes => p2d_set_square_axes procedure, public :: set_stacked => pb_set_stacked procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_use_jittering => p2d_set_use_jitter procedure, public :: set_use_y2_axis => p2d_set_use_y2 procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_axis_title => p2d_set_x_axis_title procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y2_axis_title => p2d_set_y2_axis_title procedure, public :: set_y_axis_title => p2d_set_y_axis_title procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: show_legend => plt_show_legend","tags":"","loc":"module\\fplot_plot_bar.html"},{"title":"fplot_arrow – FPLOT","text":"Uses strings fplot_colors fplot_plot_object fplot_constants iso_fortran_env Derived Types type, public, extends( plot_object ) :: plot_arrow Defines an arrow that can be drawn on a plot. Type-Bound Procedures procedure, public :: get_color => par_get_color procedure, public :: get_command_string => par_get_cmd procedure, public :: get_head_angle => par_get_head_angle procedure, public :: get_head_back_angle => par_get_head_back_angle procedure, public :: get_head_fill => par_get_fill procedure, public :: get_head_location => par_get_head procedure, public :: get_head_size => par_get_head_size procedure, public :: get_head_type => par_get_head_type procedure, public :: get_is_visible => par_get_is_visible procedure, public :: get_line_style => par_get_line_style procedure, public :: get_line_width => par_get_line_width procedure, public :: get_move_to_front => par_get_move_to_front procedure, public :: get_tail_location => par_get_tail procedure, public :: get_use_default_size => par_get_use_default_size procedure, public :: set_color => par_set_color procedure, public :: set_head_angle => par_set_head_angle procedure, public :: set_head_back_angle => par_set_head_back_angle procedure, public :: set_head_fill => par_set_fill generic, public :: set_head_location => par_set_head_1, par_set_head_2, par_set_head_3 procedure, public :: set_head_size => par_set_head_size procedure, public :: set_head_type => par_set_head_type procedure, public :: set_is_visible => par_set_is_visible procedure, public :: set_line_style => par_set_line_style procedure, public :: set_line_width => par_set_line_width procedure, public :: set_move_to_front => par_set_move_to_front generic, public :: set_tail_location => par_set_tail_1, par_set_tail_2, par_set_tail_3 procedure, public :: set_use_default_size => par_set_use_default_size","tags":"","loc":"module\\fplot_arrow.html"},{"title":"fplot_png_terminal – FPLOT","text":"Uses strings fplot_terminal fplot_constants iso_fortran_env Derived Types type, public, extends( file_terminal ) :: png_terminal Defines a terminal used for producing PNG outputs. Type-Bound Procedures procedure, public :: get_command_string => fterm_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => png_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_png_terminal.html"},{"title":"fplot_colormap – FPLOT","text":"Uses strings forcolormap fplot_colors fplot_plot_object fplot_errors iso_fortran_env Interfaces interface public function cm_get_string_result(this) result(x) Retrieves a string result from a colormap object. Arguments Type Intent Optional Attributes Name class( colormap ), intent(in) :: this The colormap object. Return Value character(len=:), allocatable The string. Derived Types type, public, extends( plot_object ) :: colormap A colormap object for a surface plot. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure( cm_get_string_result ), public, deferred :: get_color_string procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: cool_colormap Defines a colormap consisting of \"cool\" colors. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure, public :: get_color_string => ccm_get_clr procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: custom_colormap Defines a custom colormap that utilizes the FORCOLORMAP library\nto provide the map. Finalizations Procedures final :: custom_final Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure, public :: get_color_string => custom_get_clr procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_colormap => custom_get procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_colormap => custom_set procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: earth_colormap Defines an earthy-colored colormap. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure, public :: get_color_string => ecm_get_clr procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: grey_colormap Defines a grey-scaled colormap. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure, public :: get_color_string => gcm_get_clr procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: hot_colormap Defines a colormap consisting of \"hot\" colors. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure, public :: get_color_string => hcm_get_clr procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: parula_colormap Defines a colormap equivalent to the MATLAB parula colormap. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure, public :: get_color_string => pcm_get_clr procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: rainbow_colormap Defines a rainbow colormap. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure, public :: get_color_string => rcm_get_clr procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics type, public, extends( colormap ) :: spectral_colormap Defines the spectral colormap available at \nhttps://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal. Type-Bound Procedures procedure, public :: get_axes_origin => cm_get_axes_origin procedure, public :: get_axes_size => cm_get_axes_size procedure, public :: get_color_string => spcm_get_clr procedure, public :: get_colorbar_length => cm_get_colorbar_length procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure, public :: get_command_string => cm_get_cmd procedure, public :: get_draw_border => cm_get_draw_border procedure, public :: get_horizontal => cm_get_horizontal procedure, public :: get_label => cm_get_label procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_axes_origin => cm_set_axes_origin procedure, public :: set_axes_size => cm_set_axes_size procedure, public :: set_colorbar_length => cm_set_colorbar_length procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: set_horizontal => cm_set_horizontal procedure, public :: set_label => cm_set_label procedure, public :: set_show_tics => cm_set_show_tics","tags":"","loc":"module\\fplot_colormap.html"},{"title":"fplot_filled_plot_data – FPLOT","text":"Uses strings fplot_colors fplot_errors fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot_data_colored ) :: filled_plot_data Defines a two-dimensional filled plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => fpd_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => fpd_define_data procedure, public :: get_axes_string => fpd_get_axes_cmd procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => fpd_get_cmd procedure, public :: get_data_string => fpd_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => fpd_get_draw_against_y2 procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_name => pd_get_name procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => fpd_set_draw_against_y2 procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name","tags":"","loc":"module\\fplot_filled_plot_data.html"},{"title":"fplot_pdf_terminal – FPLOT","text":"Uses strings fplot_terminal iso_fortran_env Derived Types type, public, extends( file_terminal ) :: pdf_terminal Defines a terminal used for producing PDF outputs. Type-Bound Procedures procedure, public :: get_command_string => pdf_get_command_string procedure, public :: get_filename => fterm_get_filename procedure, public :: get_font_name => term_get_font_name procedure, public :: get_font_size => term_get_font_size procedure, public :: get_id_string => pdf_get_term_string procedure, public :: get_plot_window_number => term_get_plot_window_number procedure, public :: get_resolution => pdf_get_resolution procedure, public :: get_title => term_get_title procedure, public :: get_window_height => term_get_window_height procedure, public :: get_window_width => term_get_window_width procedure, public :: set_filename => fterm_set_filename procedure, public :: set_font_name => term_set_font_name procedure, public :: set_font_size => term_set_font_size procedure, public :: set_plot_window_number => term_set_plot_window_number procedure, public :: set_resolution => pdf_set_resolution procedure, public :: set_title => term_set_title procedure, public :: set_window_height => term_set_window_height procedure, public :: set_window_width => term_set_window_width","tags":"","loc":"module\\fplot_pdf_terminal.html"},{"title":"fplot_plot_data_bar – FPLOT","text":"Uses strings fplot_colors fplot_errors fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot_data_colored ) :: plot_data_bar Defines a data set tailored to bar charts. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdb_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name generic, public :: define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3, pdb_set_data_4, pdb_set_data_5, pdb_set_data_6 procedure, public :: get => pdb_get_data procedure, public :: get_axes_string => pdb_get_axes_cmd procedure, public :: get_bar_color => pdb_get_bar_color procedure, public :: get_bar_per_label_count => pdb_get_col_count procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdb_get_cmd procedure, public :: get_count => pdb_get_count procedure, public :: get_data => pdb_get_data_set procedure, public :: get_data_string => pdb_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => pdb_get_use_y2 procedure, public :: get_is_filled => pdb_get_is_filled procedure, public :: get_label => pdb_get_label procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_name => pd_get_name procedure, public :: get_series_name => pdb_get_series_name procedure, public :: get_transparency => pdb_get_alpha procedure, public :: get_use_labels => pdb_get_use_labels procedure, public :: set => pdb_set_data procedure, public :: set_bar_color => pdb_set_bar_color procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_data_1 => pdb_set_data_1_core procedure, public :: set_data_2 => pdb_set_data_2_core procedure, public :: set_data_3 => pdb_set_data_3_core procedure, public :: set_data_4 => pdb_set_data_4_core procedure, public :: set_data_5 => pdb_set_data_5_core procedure, public :: set_data_6 => pdb_set_data_6_core procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => pdb_set_use_y2 procedure, public :: set_is_filled => pdb_set_is_filled procedure, public :: set_label => pdb_set_label procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name procedure, public :: set_series_name => pdb_set_series_name procedure, public :: set_transparency => pdb_set_alpha procedure, public :: set_use_labels => pdb_set_use_labels","tags":"","loc":"module\\fplot_plot_data_bar.html"},{"title":"fplot_label – FPLOT","text":"Uses strings fplot_plot_object fplot_constants iso_fortran_env Derived Types type, public, extends( plot_object ) :: plot_label Defines a plot label. Type-Bound Procedures procedure, public :: get_angle => lbl_get_angle procedure, public :: get_command_string => lbl_get_cmd procedure, public :: get_is_visible => lbl_get_is_visible procedure, public :: get_position => lbl_get_position procedure, public :: get_text => lbl_get_txt procedure, public :: set_angle => lbl_set_angle procedure, public :: set_is_visible => lbl_set_is_visible procedure, public :: set_position => lbl_set_position procedure, public :: set_text => lbl_set_txt","tags":"","loc":"module\\fplot_label.html"},{"title":"fplot_plot_data_histogram – FPLOT","text":"Uses strings fplot_colors fplot_errors fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot_data_colored ) :: plot_data_histogram A container for plotting data in the form of a histogram. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pdh_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => pdh_define_data procedure, public :: get => pdh_get_bin_data procedure, public :: get_axes_string => pdh_get_axes_cmd procedure, public :: get_bin_count => pdh_get_bin_count procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pdh_get_cmd procedure, public :: get_data_string => pdh_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_draw_against_y2 => pdh_get_use_y2 procedure, public :: get_is_filled => pdh_get_is_filled procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_maximum_value => pdh_get_max_x procedure, public :: get_minimum_value => pdh_get_min_x procedure, public :: get_name => pd_get_name procedure, public :: set_bin_count => pdh_set_bin_count procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_draw_against_y2 => pdh_set_use_y2 procedure, public :: set_is_filled => pdh_set_is_filled procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name","tags":"","loc":"module\\fplot_plot_data_histogram.html"},{"title":"fplot_plot – FPLOT","text":"Uses fplot_arrow fplot_windows_terminal fplot_qt_terminal fplot_svg_terminal fplot_errors fplot_constants strings fplot_label fplot_wxt_terminal fplot_png_terminal collections fplot_colormap fplot_plot_data_function fplot_latex_terminal fplot_colors fplot_plot_object fplot_terminal fplot_pdf_terminal iso_fortran_env fplot_legend fplot_plot_data Derived Types type, public, extends( plot_object ) :: plot Defines the basic GNUPLOT plot. Type-Bound Procedures procedure, public :: clear_all => plt_clear_all procedure, public :: clear_all_labels => plt_clear_labels procedure, public :: clear_arrows => plt_clear_arrows procedure, public :: draw => plt_draw procedure, public :: free_resources => plt_clean_up procedure, public :: get => plt_get procedure, public :: get_arrow => plt_get_arrow procedure, public :: get_arrow_count => plt_get_arrow_count procedure, public :: get_axis_equal => plt_get_axis_equal procedure, public :: get_border_line_width => plt_get_border_line_width procedure, public :: get_bottom_margin => plt_get_bottom_margin procedure, public :: get_colormap => plt_get_colormap procedure, public :: get_command_string => plt_get_cmd procedure, public :: get_count => plt_get_count procedure, public :: get_draw_border => plt_get_draw_border procedure, public :: get_font_name => plt_get_font procedure, public :: get_font_size => plt_get_font_size procedure, public :: get_label => plt_get_label procedure, public :: get_label_count => plt_get_label_count procedure, public :: get_left_margin => plt_get_left_margin procedure, public :: get_legend => plt_get_legend procedure, public :: get_right_margin => plt_get_right_margin procedure, public :: get_show_colorbar => plt_get_show_colorbar procedure, public :: get_show_gridlines => plt_get_show_grid procedure, public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure, public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure, public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure, public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure, public :: get_terminal => plt_get_term procedure, public :: get_tics_inward => plt_get_tics_in procedure, public :: get_title => plt_get_title procedure, public :: get_top_margin => plt_get_top_margin procedure, public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure, public :: get_x_major_grid_line_style => plt_get_x_major_grid_line_style procedure, public :: get_x_major_grid_line_width => plt_get_x_major_grid_line_width procedure, public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure, public :: get_x_minor_grid_line_style => plt_get_x_minor_grid_line_style procedure, public :: get_x_minor_grid_line_width => plt_get_x_minor_grid_line_width procedure, public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure, public :: get_y_major_grid_line_style => plt_get_y_major_grid_line_style procedure, public :: get_y_major_grid_line_width => plt_get_y_major_grid_line_width procedure, public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure, public :: get_y_minor_grid_line_style => plt_get_y_minor_grid_line_style procedure, public :: get_y_minor_grid_line_width => plt_get_y_minor_grid_line_width procedure, public :: initialize => plt_init procedure, public :: is_title_defined => plt_has_title procedure, public :: plt_push_data procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label generic, public :: push => plt_push_data procedure, public :: push_arrow => plt_push_arrow procedure, public :: push_label => plt_push_label procedure, public :: save_file => plt_save procedure, public :: set => plt_set procedure, public :: set_arrow => plt_set_arrow procedure, public :: set_axis_equal => plt_set_axis_equal procedure, public :: set_border_line_width => plt_set_border_line_width procedure, public :: set_bottom_margin => plt_set_bottom_margin procedure, public :: set_colormap => plt_set_colormap procedure, public :: set_draw_border => plt_set_draw_border procedure, public :: set_font_name => plt_set_font procedure, public :: set_font_size => plt_set_font_size procedure, public :: set_label => plt_set_label procedure, public :: set_left_margin => plt_set_left_margin procedure, public :: set_right_margin => plt_set_right_margin procedure, public :: set_show_colorbar => plt_set_show_colorbar procedure, public :: set_show_gridlines => plt_set_show_grid procedure, public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure, public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure, public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure, public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure, public :: set_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin procedure, public :: set_window_size => plt_set_window_size procedure, public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure, public :: set_x_major_grid_line_style => plt_set_x_major_grid_line_style procedure, public :: set_x_major_grid_line_width => plt_set_x_major_grid_line_width procedure, public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure, public :: set_x_minor_grid_line_style => plt_set_x_minor_grid_line_style procedure, public :: set_x_minor_grid_line_width => plt_set_x_minor_grid_line_width procedure, public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure, public :: set_y_major_grid_line_style => plt_set_y_major_grid_line_style procedure, public :: set_y_major_grid_line_width => plt_set_y_major_grid_line_width procedure, public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure, public :: set_y_minor_grid_line_style => plt_set_y_minor_grid_line_style procedure, public :: set_y_minor_grid_line_width => plt_set_y_minor_grid_line_width procedure, public :: show_legend => plt_show_legend Functions public pure function is_plot_data_function (x) result(rst) Tests to see if the supplied plot_data object is a plot_data_function based type. Arguments Type Intent Optional Attributes Name class( plot_data ), intent(in) :: x The plot_data object. Return Value logical True if x is a plot_data_function based type.","tags":"","loc":"module\\fplot_plot.html"},{"title":"fplot_surface_plot_data – FPLOT","text":"Uses fplot_errors strings fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot_data ) :: surface_plot_data Provides a three-dimensional surface plot data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => surfd_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name procedure, public :: define_data => surfd_set_data_1 procedure, public :: get_command_string => surfd_get_cmd procedure, public :: get_data_string => surfd_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_name => pd_get_name procedure, public :: get_size => surfd_get_size procedure, public :: get_use_wireframe => surfd_get_wireframe procedure, public :: get_x => surfd_get_x procedure, public :: get_y => surfd_get_y procedure, public :: get_z => surfd_get_z procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_name => pd_set_name procedure, public :: set_use_wireframe => surfd_set_wireframe procedure, public :: set_x => surfd_set_x procedure, public :: set_y => surfd_set_y procedure, public :: set_z => surfd_set_z","tags":"","loc":"module\\fplot_surface_plot_data.html"},{"title":"fplot_plot_data_error_bars – FPLOT","text":"Uses strings fplot_colors fplot_errors fplot_plot_data iso_fortran_env Derived Types type, public, extends( plot_data_colored ) :: plot_data_error_bars Defines a 2D error-bar based data set. Type-Bound Procedures procedure, public :: clear_all => pd_clear procedure, public :: clear_data => pde_clear_data procedure, public :: create_unique_datablock_name => pd_create_unique_datablock_name generic, public :: define_x_error_data => pde_define_x_err , pde_define_x_err_lim generic, public :: define_xy_error_data => pde_define_xy_err , pde_define_xy_err_lim generic, public :: define_y_error_data => pde_define_y_err , pde_define_y_err_lim procedure, public :: get_color_index => pdc_get_color_index procedure, public :: get_command_string => pde_get_cmd procedure, public :: get_count => pde_get_count procedure, public :: get_data_string => pde_get_data_cmd procedure, public :: get_datablock_name => pd_get_datablock_name procedure, public :: get_line_color => pdc_get_line_color procedure, public :: get_line_width => pde_get_line_width procedure, public :: get_name => pd_get_name procedure, public :: get_plot_x_error_bars => pde_get_plot_x_err procedure, public :: get_plot_y_error_bars => pde_get_plot_y_err procedure, public :: get_use_error_box => pde_get_box procedure, public :: get_use_range => pde_get_use_range procedure, public :: pde_define_x_err procedure, public :: pde_define_x_err_lim procedure, public :: pde_define_xy_err procedure, public :: pde_define_xy_err_lim procedure, public :: pde_define_y_err procedure, public :: pde_define_y_err_lim procedure, public :: set_color_index => pdc_set_color_index procedure, public :: set_datablock_name => pd_set_datablock_name procedure, public :: set_line_color => pdc_set_line_color procedure, public :: set_line_width => pde_set_line_width procedure, public :: set_name => pd_set_name procedure, public :: set_use_error_box => pde_set_box","tags":"","loc":"module\\fplot_plot_data_error_bars.html"},{"title":"fplot_constants.f90 – FPLOT","text":"Source Code module fplot_constants use iso_fortran_env implicit none ! ****************************************************************************** ! GNUPLOT TERMINAL CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: GNUPLOT_TERMINAL_WIN32 = 1 !! Defines a Win32 terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_WXT = 2 !! Defines a WXT terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_QT = 3 !! Defines a QT terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_PNG = 4 !! Defines a PNG terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_LATEX = 5 !! Defines a LATEX terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_SVG = 6 !! Defines an SVG terminal. integer ( int32 ), parameter :: GNUPLOT_TERMINAL_PDF = 7 !! Defines a PDF terminal. ! ****************************************************************************** ! MARKER CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: MARKER_PLUS = 1 !! Defines a + data point marker. integer ( int32 ), parameter :: MARKER_X = 2 !! Defines an x data point marker. integer ( int32 ), parameter :: MARKER_ASTERISK = 3 !! Defines an * data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_SQUARE = 4 !! Defines an empty square-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_SQUARE = 5 !! Defines an filled square-shaped data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_CIRCLE = 6 !! Defines an empty circle-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_CIRCLE = 7 !! Defines an filled circle-shaped data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_TRIANGLE = 8 !! Defines an empty triangle-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_TRIANGLE = 9 !! Defines an filled triangle-shaped data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_NABLA = 10 !! Defines an empty nabla-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_NABLA = 11 !! Defines an filled nabla-shaped data point marker. integer ( int32 ), parameter :: MARKER_EMPTY_RHOMBUS = 12 !! Defines an empty rhombus-shaped data point marker. integer ( int32 ), parameter :: MARKER_FILLED_RHOMBUS = 13 !! Defines an filled rhombus-shaped data point marker. ! ****************************************************************************** ! LINE CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: LINE_SOLID = 1 !! Defines a solid line. integer ( int32 ), parameter :: LINE_DASHED = 2 !! Defines a dashed line. integer ( int32 ), parameter :: LINE_DOTTED = 3 !! Defines a dotted line. integer ( int32 ), parameter :: LINE_DASH_DOTTED = 4 !! Defines a dash-dotted line. integer ( int32 ), parameter :: LINE_DASH_DOT_DOT = 5 !! Defines a dash-dot-dotted line. ! ****************************************************************************** ! LEGEND CONSTANTS ! ------------------------------------------------------------------------------ character ( len = * ), parameter :: LEGEND_TOP = \"top\" !! Defines the legend should be placed at the top of the plot. character ( len = * ), parameter :: LEGEND_CENTER = \"center\" !! Defines the legend should be centered on the plot. character ( len = * ), parameter :: LEGEND_LEFT = \"left\" !! Defines the legend should be placed at the left of the plot. character ( len = * ), parameter :: LEGEND_RIGHT = \"right\" !! Defines the legend should be placed at the right of the plot. character ( len = * ), parameter :: LEGEND_BOTTOM = \"bottom\" !! Defines the legend should be placed at the bottom of the plot. character ( len = * ), parameter :: LEGEND_ARRANGE_VERTICALLY = \"vertical\" !! Defines the legend should be arranged such that the column count !! is minimized. character ( len = * ), parameter :: LEGEND_ARRANGE_HORIZONTALLY = \"horizontal\" !! Defines the legend should be arranged such that the row count !! is minimized. ! ****************************************************************************** ! POLAR PLOT CONSTANTS ! ------------------------------------------------------------------------------ character ( len = * ), parameter :: POLAR_THETA_TOP = \"top\" !! States that theta should start at the top of the plot. character ( len = * ), parameter :: POLAR_THETA_RIGHT = \"right\" !! States that theta should start at the right of the plot. character ( len = * ), parameter :: POLAR_THETA_BOTTOM = \"bottom\" !! States that theta should start at the bottom of the plot. character ( len = * ), parameter :: POLAR_THETA_LEFT = \"left\" !! States that theta should start at the left of the plot. character ( len = * ), parameter :: POLAR_THETA_CCW = \"ccw\" !! States that theta should proceed in a counter-clockwise direction. character ( len = * ), parameter :: POLAR_THETA_CW = \"cw\" !! States that theta should proceed in a clockwise direction. ! ****************************************************************************** ! COORDINATE SYSTEM CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: COORDINATES_CARTESIAN = 100 !! Defines a Cartesian coordinate system. integer ( int32 ), parameter :: COORDINATES_SPHERICAL = 101 !! Defines a spherical coordinate system. integer ( int32 ), parameter :: COORDINATES_CYLINDRICAL = 102 !! Defines a cylindrical coordinate system. ! ****************************************************************************** ! ARROW CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: ARROW_NO_HEAD = 0 !! Defines an arrow with no head. integer ( int32 ), parameter :: ARROW_HEAD = 1 !! Defines an arrow with a traditional head. integer ( int32 ), parameter :: ARROW_BACKHEAD = 2 !! Defines an arrow with it's head at it's back end (tail). integer ( int32 ), parameter :: ARROW_HEADS = 3 !! Defines an arrow with a head on both ends. integer ( int32 ), parameter :: ARROW_FILLED = 100 !! Defines a filled arrow head. integer ( int32 ), parameter :: ARROW_EMPTY = 101 !! Defines an empty arrow head. integer ( int32 ), parameter :: ARROW_NO_FILL = 102 !! Defines an arrow head without fill. integer ( int32 ), parameter :: ARROW_NO_BORDER = 103 !! Defines an arrow head with no border. ! ****************************************************************************** ! PLOT DATA CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: PLOTDATA_MAX_NAME_LENGTH = 128 !! Defines the maximum number of characters allowed in a graph label. ! ****************************************************************************** ! PRIVATE/DEFAULT CONSTANTS ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: GNUPLOT_DEFAULT_WINDOW_WIDTH = 640 !! The default GNUPLOT window width, in pixels. integer ( int32 ), parameter :: GNUPLOT_DEFAULT_WINDOW_HEIGHT = 420 !! The default GNUPLOT window height, in pixels. integer ( int32 ), parameter :: GNUPLOT_MAX_LABEL_LENGTH = 128 !! Defines the maximum number of characters allowed in a graph label. character ( len = * ), parameter :: GNUPLOT_DEFAULT_FONTNAME = \"Arial\" !! Defines the default font used by text on the graph. integer ( int32 ), parameter :: GNUPLOT_DEFAULT_FONT_SIZE = 14 !! Defines the default font size used by text on the graph. integer ( int32 ), parameter :: GNUPLOT_MAX_PATH_LENGTH = 256 !! Defines the maximum number of characters allowed in a file path. ! ****************************************************************************** ! HORIZONTAL ALIGNMENT CONSTANTS ! ------------------------------------------------------------------------------ character ( len = * ), parameter :: GNUPLOT_HORIZONTAL_ALIGN_LEFT = \"left\" !! Defines the text should be aligned to the left. character ( len = * ), parameter :: GNUPLOT_HORIZONTAL_ALIGN_CENTER = \"center\" !! Defines the text should be centered. character ( len = * ), parameter :: GNUPLOT_HORIZONTAL_ALIGN_RIGHT = \"right\" !! Defines the text should be aligned to the right. ! ****************************************************************************** ! ROTATION ORIGIN CONSTANTS ! ------------------------------------------------------------------------------ character ( len = * ), parameter :: GNUPLOT_ROTATION_ORIGIN_RIGHT = \"right\" !! Defines the text should be rotated around the right side of the text. character ( len = * ), parameter :: GNUPLOT_ROTATION_ORIGIN_CENTER = \"center\" !! Defines the text should be rotated around the center of the text. character ( len = * ), parameter :: GNUPLOT_ROTATION_ORIGIN_LEFT = \"left\" !! Defines the text should be rotated around the left side of the text. end module","tags":"","loc":"sourcefile\\fplot_constants.f90.html"},{"title":"fplot_tri_surface_plot_data.f90 – FPLOT","text":"Source Code ! fplot_tri_surface_plot_data.f90 module fplot_tri_surface_plot_data use iso_fortran_env use fplot_plot_data use fplot_delaunay_tri_surface use strings implicit none private public :: tri_surface_plot_data type , extends ( plot_data ) :: tri_surface_plot_data !! Provides a three-dimensional surface plot data set constructed of !! triangulated points. real ( real64 ), private , allocatable , dimension (:) :: m_x !! An array of the x-coordinates of each point. real ( real64 ), private , allocatable , dimension (:) :: m_y !! An array of the y-coordinates of each point. real ( real64 ), private , allocatable , dimension (:) :: m_z !! An array of the z-coordinates of each point. integer ( int32 ), private , allocatable , dimension (:,:) :: m_indices !! A 3-column matrix containing the indices of each triangle's !! vertex. logical , private :: m_wireframe = . true . !! Determines if the surface should be drawn as a wireframe. contains procedure , public :: get_data_string => tspd_get_data_cmd procedure , public :: get_command_string => tspd_get_cmd procedure , public :: get_use_wireframe => tspd_get_wireframe procedure , public :: set_use_wireframe => tspd_set_wireframe procedure , public :: define_data => tspd_define_data procedure , public :: clear_data => tspd_clear_data end type contains ! ------------------------------------------------------------------------------ function tspd_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for representing the data. class ( tri_surface_plot_data ), intent ( in ) :: this !! The tri_surface_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , n character :: delimiter , nl ! Initialization call str % initialize () n = size ( this % m_indices , 1 ) delimiter = achar ( 9 ) nl = new_line ( nl ) if (. not . allocated ( this % m_x ) . or . & . not . allocated ( this % m_y ) . or . & . not . allocated ( this % m_z ) . or . & . not . allocated ( this % m_indices ) & ) & then x = \"\" return end if ! Process ! https://stackoverflow.com/questions/42784369/drawing-triangular-mesh-using-gnuplot ! http://www.gnuplot.info/faq/faq.html#x1-530005.10 do i = 1 , n ! Line 1-2 ! Vertex 1 j = this % m_indices ( i , 1 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Vertex 2 j = this % m_indices ( i , 2 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Line 2-3 ! Vertex 2 call str % append ( nl ) j = this % m_indices ( i , 2 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Vertex 3 j = this % m_indices ( i , 3 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Line 3-1 ! Vertex 3 call str % append ( nl ) j = this % m_indices ( i , 3 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Vertex 1 j = this % m_indices ( i , 1 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_z ( j ))) call str % append ( nl ) ! Add in the two blank lines if ( i /= n ) then call str % append ( nl ) call str % append ( nl ) end if end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function tspd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for the object. class ( tri_surface_plot_data ), intent ( in ) :: this !! The tri_surface_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! PM3D or wireframe? if ( this % get_use_wireframe ()) then call str % append ( \" with lines\" ) else call str % append ( \" with pm3d\" ) end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function tspd_get_wireframe ( this ) result ( rst ) !! Gets a value determining if a wireframe mesh should be displayed. class ( tri_surface_plot_data ), intent ( in ) :: this !! The tri_surface_plot_data object. logical :: rst !! Returns true if the plot is to be drawn as a wireframe; else, !! false to draw as a surface. rst = this % m_wireframe end function ! ------------------------------------------------------------------------------ subroutine tspd_set_wireframe ( this , x ) !! Sets a value determining if a wireframe mesh should be displayed. class ( tri_surface_plot_data ), intent ( inout ) :: this !! The tri_surface_plot_data object. logical , intent ( in ) :: x !! Set to true if the plot is to be drawn as a wireframe; else, !! false to draw as a surface. this % m_wireframe = x end subroutine ! ------------------------------------------------------------------------------ subroutine tspd_define_data ( this , tri ) !! Defines the data to plot. class ( tri_surface_plot_data ), intent ( inout ) :: this !! The tri_surface_plot_data object. class ( delaunay_tri_surface ), intent ( in ) :: tri !! The triangulation to plot. ! Process if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_z )) deallocate ( this % m_z ) if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if this % m_x = tri % get_points_x () this % m_y = tri % get_points_y () this % m_z = tri % get_points_z () this % m_indices = tri % get_indices () end subroutine ! ------------------------------------------------------------------------------ subroutine tspd_clear_data ( this ) !! Clears the data from the data set. class ( tri_surface_plot_data ), intent ( inout ) :: this !! The tri_surface_plot_data object. if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_z )) deallocate ( this % m_z ) if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_tri_surface_plot_data.f90.html"},{"title":"fplot_legend.f90 – FPLOT","text":"Source Code ! fplot_legend.f90 module fplot_legend use iso_fortran_env use fplot_plot_object use fplot_constants use strings implicit none private public :: legend type , extends ( plot_object ) :: legend !! Defines a legend object. logical , private :: m_inside = . true . !! Inside or outside the axes? logical , private :: m_box = . true . !! Box around? character ( len = 20 ), private :: m_horzPosition = LEGEND_RIGHT !! Horizontal position. character ( len = 20 ), private :: m_vertPosition = LEGEND_TOP !! Verical position. logical , private :: m_show = . false . !! Is visible? character ( len = 20 ), private :: m_layout = LEGEND_ARRANGE_VERTICALLY !! Determines the legend layout. logical , private :: m_opaque = . true . !! Opaque background? contains procedure , public :: get_draw_inside_axes => leg_get_inside procedure , public :: set_draw_inside_axes => leg_set_inside procedure , public :: get_draw_border => leg_get_box procedure , public :: set_draw_border => leg_set_box procedure , public :: get_horizontal_position => leg_get_horz_pos procedure , public :: set_horizontal_position => leg_set_horz_pos procedure , public :: get_vertical_position => leg_get_vert_pos procedure , public :: set_vertical_position => leg_set_vert_pos procedure , public :: get_is_visible => leg_get_visible procedure , public :: set_is_visible => leg_set_visible procedure , public :: get_command_string => leg_get_command_txt procedure , public :: get_layout => leg_get_layout procedure , public :: set_layout => leg_set_layout procedure , public :: get_is_opaque => leg_get_opaque procedure , public :: set_is_opaque => leg_set_opaque end type contains ! ------------------------------------------------------------------------------ pure function leg_get_inside ( this ) result ( x ) !! Gets a value determining if the legend should be drawn inside !! or outside the axes border. class ( legend ), intent ( in ) :: this !! The legend object. logical :: x !! True to draw inside the axes border; else, false for outside. x = this % m_inside end function ! --------------------- subroutine leg_set_inside ( this , x ) !! Sets a value determining if the legend should be drawn inside !! or outside the axes border. class ( legend ), intent ( inout ) :: this !! The legend object. logical , intent ( in ) :: x !! True to draw inside the axes border; else, false for outside. this % m_inside = x end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_box ( this ) result ( x ) !! Gets a value determining if the legend should have a border. class ( legend ), intent ( in ) :: this !! The legend object. logical :: x !! True if the legend should have a border; else, false. x = this % m_box end function ! --------------------- subroutine leg_set_box ( this , x ) !! Sets a value determining if the legend should have a border. class ( legend ), intent ( inout ) :: this !! The legend object. logical , intent ( in ) :: x !! True if the legend should have a border; else, false. this % m_box = x end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_horz_pos ( this ) result ( x ) !! Gets the horizontal position of the legend. class ( legend ), intent ( in ) :: this !! The legend object. character ( len = :), allocatable :: x !! The horizontal position of the legend (LEGEND_LEFT, !! LEGEND_CENTER, or LEGEND_RIGHT). integer ( int32 ) :: n n = len_trim ( this % m_horzPosition ) allocate ( character ( len = n ) :: x ) x = trim ( this % m_horzPosition ) end function ! --------------------- subroutine leg_set_horz_pos ( this , x ) !! Sets the horizontal position of the legend. class ( legend ), intent ( inout ) :: this !! The legend object. character ( len = * ), intent ( in ) :: x !! The horizontal position of the legend. The parameter must be !! set to one of the following: LEGEND_LEFT, LEGEND_CENTER, or !! LEGEND_RIGHT. If not, the default LEGEND_RIGHT will be used. this % m_horzPosition = x if ( x /= LEGEND_LEFT . and . x /= LEGEND_RIGHT . and . x /= LEGEND_CENTER ) & this % m_horzPosition = LEGEND_RIGHT end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_vert_pos ( this ) result ( x ) !! Gets the vertical position of the legend. class ( legend ), intent ( in ) :: this !! The legend object. character ( len = :), allocatable :: x !! The vertical position of the legend (LEGEND_TOP, !! LEGEND_CENTER, or LEGEND_BOTTOM). integer ( int32 ) :: n n = len_trim ( this % m_vertPosition ) allocate ( character ( len = n ) :: x ) x = trim ( this % m_vertPosition ) end function ! --------------------- subroutine leg_set_vert_pos ( this , x ) !! Sets the vertical position of the legend. class ( legend ), intent ( inout ) :: this !! The legend object. character ( len = * ), intent ( in ) :: x !! The vertical position of the legend. The parameter must be !! set to one of the following: LEGEND_TOP, LEGEND_CENTER, or !! LEGEND_BOTTOM. If not, the default LEGEND_TOP will be used. this % m_vertPosition = x if ( x /= LEGEND_TOP . and . x /= LEGEND_CENTER . and . x /= LEGEND_BOTTOM ) & this % m_vertPosition = LEGEND_TOP end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_visible ( this ) result ( x ) !! Gets a value determining if the legend is visible. class ( legend ), intent ( in ) :: this !! The legend object. logical :: x !! True if the legend is visible; else, false. x = this % m_show end function ! --------------------- subroutine leg_set_visible ( this , x ) !! Sets a value determining if the legend is visible. class ( legend ), intent ( inout ) :: this !! The legend object. logical , intent ( in ) :: x !! True if the legend is visible; else, false. this % m_show = x end subroutine ! ------------------------------------------------------------------------------ function leg_get_command_txt ( this ) result ( txt ) !! Gets the command string defining the legend properties. class ( legend ), intent ( in ) :: this !! The legend object. character ( len = :), allocatable :: txt !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str ! Process call str % initialize () ! Visible? if (. not . this % get_is_visible ()) then txt = \"set key off\" return end if ! Inside vs Outside & Position if ( this % get_draw_inside_axes ()) then call str % append ( \"set key inside\" ) else call str % append ( \"set key outside\" ) end if call str % append ( \" \" ) call str % append ( this % get_vertical_position ()) call str % append ( \" \" ) call str % append ( this % get_horizontal_position ()) ! Border call str % append ( new_line ( 'a' )) if ( this % get_draw_border ()) then ! call str%append(\"set key box opaque\") call str % append ( \"set key box\" ) else call str % append ( \"set key nobox\" ) end if ! Layout call str % append ( new_line ( 'a' )) call str % append ( \"set key \" ) call str % append ( this % get_layout ()) ! Opaque call str % append ( new_line ( 'a' )) call str % append ( \"set key \" ) if ( this % get_is_opaque ()) then call str % append ( \"opaque\" ) else call str % append ( \"noopaque\" ) end if ! End txt = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function leg_get_layout ( this ) result ( rst ) !! Gets the layout of the legend. class ( legend ), intent ( in ) :: this !! The legend object. character ( len = :), allocatable :: rst !! The layout type, either LEGEND_ARRANGE_VERTICALLY or !! LEGEND_ARRANGE_HORIZONTALLY. rst = trim ( this % m_layout ) end function ! --------------------- subroutine leg_set_layout ( this , x ) !! Sets the layout of the legend. class ( legend ), intent ( inout ) :: this !! The legend object. character ( len = * ), intent ( in ) :: x !! The layout type, either LEGEND_ARRANGE_VERTICALLY or !! LEGEND_ARRANGE_HORIZONTALLY. if ( x == LEGEND_ARRANGE_HORIZONTALLY . or . & x == LEGEND_ARRANGE_VERTICALLY ) & then this % m_layout = x end if end subroutine ! ------------------------------------------------------------------------------ pure function leg_get_opaque ( this ) result ( rst ) !! Gets a value determining if the legend is to be opaque. class ( legend ), intent ( in ) :: this !! The legend object. logical :: rst !! True if the legend is to be opaque; else, false. rst = this % m_opaque end function ! --------------------- subroutine leg_set_opaque ( this , x ) !! Sets a value determining if the legend is to be opaque. class ( legend ), intent ( inout ) :: this !! The legend object. logical :: x !! True if the legend is to be opaque; else, false. this % m_opaque = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_legend.f90.html"},{"title":"fplot_plot_data_function.f90 – FPLOT","text":"Source Code module fplot_plot_data_function use iso_fortran_env use fplot_plot_data use fplot_colors use fplot_constants use strings implicit none private public :: plot_data_function type , extends ( line_plot_data ) :: plot_data_function !! Defines a function to plot. character ( len = :), private , allocatable :: m_function !! The function to plot (e.g. sin(x)) character ( len = :), private , allocatable :: m_functionName !! The name of the function (e.g. f(x), g(x), etc.). real ( real64 ), private :: m_minX = - 1.0d0 !! The minimum X value of the plot range. real ( real64 ), private :: m_maxX = 1.0d0 integer ( int32 ), private :: m_sampleCount = 100 !! The number of times to sample the function contains procedure , public :: get_function => pdf_get_function procedure , public :: get_function_name => pdf_get_function_name procedure , public :: define_data => pdf_define_data procedure , public :: get_command_string => pdf_get_cmd procedure , public :: get_data_string => pdf_get_data_cmd procedure , public :: clear_data => pdf_clear_data procedure , public :: get_minimum_x => pdf_get_min_x procedure , public :: set_minimum_x => pdf_set_min_x procedure , public :: get_maximum_x => pdf_get_max_x procedure , public :: set_maximum_x => pdf_set_max_x ! procedure, public :: get_line_width => pdf_get_line_width ! procedure, public :: set_line_width => pdf_set_line_width ! procedure, public :: get_line_style => pdf_get_line_style ! procedure, public :: set_line_style => pdf_set_line_style procedure , public :: get_sample_count => pfd_get_sample_count procedure , public :: set_sample_count => pfd_set_sample_count end type contains ! ------------------------------------------------------------------------------ pure function pdf_get_function ( this ) result ( rst ) !! Gets the function to plot. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. character ( len = :), allocatable :: rst !! The function. if ( allocated ( this % m_function )) then rst = this % m_function else rst = \"\" end if end function ! ------------------------------------------------------------------------------ pure function pdf_get_function_name ( this ) result ( rst ) !! Gets the name of the function to plot (e.g. f(x), g(x), etc.). class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. character ( len = :), allocatable :: rst !! The function name. if ( allocated ( this % m_functionName )) then rst = this % m_functionName else rst = \"\" end if end function ! ------------------------------------------------------------------------------ subroutine pdf_define_data ( this , f , fname , minX , maxX , name ) !! Defines the function to plot. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. character ( len = * ), intent ( in ) :: f !! The function to plot (e.g. sin(x)). character ( len = * ), intent ( in ) :: fname !! The name of the function to plot (e.g. f(x)). real ( real64 ), intent ( in ), optional :: minX !! The minimum value to plot. If not supplied, this will default !! to a value of -1. real ( real64 ), intent ( in ), optional :: maxX !! The maximum x value to plot. If not supplied, this will default !! to a value of 1. character ( len = * ), intent ( in ), optional :: name !! An optional input that specifies the name that will be displayed !! in the legend. If nothing is supplied, the input string for !! parameter f will be utilized. this % m_function = f this % m_functionName = fname if ( present ( minX )) then this % m_minX = minX else this % m_minX = - 1.0d0 end if if ( present ( maxX )) then this % m_maxX = maxX else this % m_maxX = 1.0d0 end if if ( present ( name )) then call this % set_name ( name ) else call this % set_name ( f ) end if end subroutine ! ------------------------------------------------------------------------------ function pdf_get_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string for this object. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables integer ( int32 ) :: n type ( string_builder ) :: str type ( color ) :: clr ! Build the command string call str % initialize () call str % append ( \"[\" ) call str % append ( to_string ( this % get_minimum_x ())) call str % append ( \":\" ) call str % append ( to_string ( this % get_maximum_x ())) call str % append ( \"] \" ) call str % append ( this % get_function_name ()) ! Use the base object to define the line properties call str % append ( lpd_get_cmd ( this )) ! Return the complete command string rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdf_get_data_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining the data for this object. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str ! Build the command string call str % initialize () call str % append ( new_line ( 'a' )) call str % append ( this % get_function_name ()) call str % append ( \" = \" ) call str % append ( this % get_function ()) ! Samples call str % append ( new_line ( 'a' )) call str % append ( \"set samples \" ) call str % append ( to_string ( this % get_sample_count ())) ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine pdf_clear_data ( this ) !! Clears the function from this data set. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. this % m_function = \"\" this % m_functionName = \"\" end subroutine ! ------------------------------------------------------------------------------ pure function pdf_get_min_x ( this ) result ( rst ) !! Gets the minimum X plot range value. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. real ( real64 ) :: rst !! The value. rst = this % m_minX end function ! -------------------- subroutine pdf_set_min_x ( this , x ) !! Sets the minimum X plot range value. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. real ( real64 ), intent ( in ) :: x !! The value. this % m_minX = x end subroutine ! ------------------------------------------------------------------------------ pure function pdf_get_max_x ( this ) result ( rst ) !! Gets the maximum X plot range value. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. real ( real64 ) :: rst !! The value. rst = this % m_maxX end function ! -------------------- subroutine pdf_set_max_x ( this , x ) !! Sets the maximum X plot range value. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. real ( real64 ), intent ( in ) :: x !! The value. this % m_maxX = x end subroutine ! ------------------------------------------------------------------------------ pure function pfd_get_sample_count ( this ) result ( rst ) !! Gets the number of times to sample the function. class ( plot_data_function ), intent ( in ) :: this !! The plot_data_function object. integer ( int32 ) :: rst !! The sample count. rst = this % m_sampleCount end function ! -------------------- subroutine pfd_set_sample_count ( this , x ) !! Sets the number of times to sample the function. This variable is !! global for all function plots as GNUPLOT does not allow inline !! sample modification currently. Hopefully this will change somewhere !! down the road. class ( plot_data_function ), intent ( inout ) :: this !! The plot_data_function object. integer ( int32 ), intent ( in ) :: x !! The sample count. Must be greater than 1. if ( x <= 1 ) then this % m_sampleCount = 2 else this % m_sampleCount = x end if end subroutine ! ------------------------------------------------------------------------------ ! -------------------- ! ------------------------------------------------------------------------------ ! -------------------- ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_function.f90.html"},{"title":"fplot_core.f90 – FPLOT","text":"Source Code module fplot_core !! FPLOT is a Fortran library providing a means of interacting with !! [GNUPLOT](http://www.gnuplot.info/) from a Fortran program. The library !! is designed in an object-oriented manner, and as such utilizes language !! features that require a compiler that supports the 2003 standard. !! Additionally, it is expected that Gnuplot is installed on the system !! path. For full functionallity, a minimum of GNUPLOT v5.2 is expected. use fplot_constants use fplot_core_routines use fplot_colors use fplot_plot_object use fplot_plot_data use fplot_plot_axis use fplot_terminal use fplot_windows_terminal use fplot_qt_terminal use fplot_wxt_terminal use fplot_png_terminal use fplot_latex_terminal use fplot_label use fplot_arrow use fplot_legend use fplot_plot_data_2d use fplot_plot_data_3d use fplot_surface_plot_data use fplot_plot_data_error_bars use fplot_plot_data_bar use fplot_plot_data_histogram use fplot_colormap use fplot_filled_plot_data use fplot_triangulations_delaunay_2d use fplot_plot_data_tri_2d use fplot_delaunay_tri_surface use fplot_tri_surface_plot_data use fplot_vector_field_plot_data use fplot_plot use fplot_plot_2d use fplot_plot_3d use fplot_surface_plot use fplot_multiplot use fplot_plot_bar use fplot_plot_polar use fplot_stats_plots use fplot_plot_data_box_whisker use fplot_plot_data_function use strings use fplot_svg_terminal use fplot_pdf_terminal implicit none end module","tags":"","loc":"sourcefile\\fplot_core.f90.html"},{"title":"fplot_plot_data_tri_2d.f90 – FPLOT","text":"Source Code ! fplot_plot_data_tri_2d.f90 module fplot_plot_data_tri_2d use iso_fortran_env use fplot_plot_data use fplot_constants use fplot_triangulations_delaunay_2d use fplot_colors use strings implicit none private public :: plot_data_tri_2d type , extends ( plot_data_colored ) :: plot_data_tri_2d !! Defines a 2D triangulated data set. real ( real64 ), private , allocatable , dimension (:) :: m_x !! An array of the x-coordinates of each point. real ( real64 ), private , allocatable , dimension (:) :: m_y !! An array of the y-coordinates of each point. integer ( int32 ), private , allocatable , dimension (:,:) :: m_indices !! A 3-column matrix containing the indices of each triangle's !! vertex. real ( real32 ), private :: m_lineWidth = 1.0 !! The line width. integer ( int32 ), private :: m_lineStyle = LINE_SOLID !! The line style contains procedure , public :: get_data_string => pdt2d_get_data_cmd procedure , public :: get_command_string => pdt2d_get_cmd procedure , public :: define_data => pdt2d_define_data procedure , public :: get_line_width => pdt2d_get_line_width procedure , public :: set_line_width => pdt2d_set_line_width procedure , public :: get_line_style => pdt2d_get_line_style procedure , public :: set_line_style => pdt2d_set_line_style procedure , public :: clear_data => pdt2d_clear_data end type contains ! ------------------------------------------------------------------------------ function pdt2d_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string describing the data to plot. class ( plot_data_tri_2d ), intent ( in ) :: this !! The plot_data_tri_2d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , n character :: delimiter , nl ! Initialization call str % initialize () n = size ( this % m_indices , 1 ) delimiter = achar ( 9 ) nl = new_line ( nl ) ! Process ! https://stackoverflow.com/questions/42784369/drawing-triangular-mesh-using-gnuplot ! http://www.gnuplot.info/faq/faq.html#x1-530005.10 ! https://codeyarns.com/2011/01/25/gnuplot-plotting-a-3d-triangulation/ do i = 1 , n ! Line 1-2 ! Vertex 1 j = this % m_indices ( i , 1 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Vertex 2 j = this % m_indices ( i , 2 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Line 2-3 ! Vertex 2 call str % append ( nl ) j = this % m_indices ( i , 2 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Vertex 3 j = this % m_indices ( i , 3 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Line 3-1 ! Vertex 3 call str % append ( nl ) j = this % m_indices ( i , 3 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Vertex 1 j = this % m_indices ( i , 1 ) call str % append ( to_string ( this % m_x ( j ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_y ( j ))) call str % append ( delimiter ) call str % append ( \"0.0\" ) call str % append ( nl ) ! Add in the two blank lines if ( i /= n ) then call str % append ( nl ) call str % append ( nl ) end if end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdt2d_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for the object. class ( plot_data_tri_2d ), intent ( in ) :: this !! The plot_data_tri_2d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Lines call str % append ( \" with lines\" ) ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Line Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Line Style call str % append ( \" lt \" ) call str % append ( to_string ( this % get_line_style ())) if ( this % get_line_style () /= LINE_SOLID ) then call str % append ( \" dashtype \" ) call str % append ( to_string ( this % get_line_style ())) end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine pdt2d_define_data ( this , tri ) !! Defines the data to plot. class ( plot_data_tri_2d ), intent ( inout ) :: this !! The plot_data_tri_2d object. class ( delaunay_tri_2d ), intent ( in ) :: tri !! The triangulation data to plot. ! Process if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if this % m_x = tri % get_points_x () this % m_y = tri % get_points_y () this % m_indices = tri % get_indices () end subroutine ! ------------------------------------------------------------------------------ pure function pdt2d_get_line_width ( this ) result ( rst ) !! Gets the width of the lines used to draw the triangulation. class ( plot_data_tri_2d ), intent ( in ) :: this !! The plot_data_tri_2d object. real ( real32 ) :: rst !! The line width. rst = this % m_lineWidth end function ! -------------------- subroutine pdt2d_set_line_width ( this , x ) !! Sets the width of the lines used to draw the triangulation. class ( plot_data_tri_2d ), intent ( inout ) :: this !! The plot_data_tri_2d object. real ( real32 ), intent ( in ) :: x !! The line width. if ( x <= 0.0d0 ) then this % m_lineWidth = 1.0d0 else this % m_lineWidth = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pdt2d_get_line_style ( this ) result ( rst ) !! Gets the line style. class ( plot_data_tri_2d ), intent ( in ) :: this !! The plot_data_tri_2d object. integer ( int32 ) :: rst !! The line style. The line style must be one of the following !! constants. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID rst = this % m_lineStyle end function ! -------------------- subroutine pdt2d_set_line_style ( this , x ) !! Sets the line style. class ( plot_data_tri_2d ), intent ( inout ) :: this !! The plot_data_tri_2d object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following !! constants. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_lineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine pdt2d_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_tri_2d ), intent ( inout ) :: this !! The plot_data_tri_2d object. if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_tri_2d.f90.html"},{"title":"fplot_plot_3d.f90 – FPLOT","text":"Source Code ! fplot_plot_3d.f90 module fplot_plot_3d use iso_fortran_env use fplot_plot use fplot_errors use fplot_plot_axis use fplot_constants use fplot_plot_data use fplot_legend use fplot_plot_data_3d use fplot_colors use strings implicit none private public :: plot_3d type , extends ( plot ) :: plot_3d !! A plot object defining a 3D plot. type ( x_axis ), private , pointer :: m_xAxis => null () !! The x-axis. type ( y_axis ), private , pointer :: m_yAxis => null () !! The y-axis. type ( z_axis ), private , pointer :: m_zAxis => null () !! The z-axis. real ( real64 ), private :: m_elevation = 6 0.0d0 !! The elevation angle. real ( real64 ), private :: m_azimuth = 3 0.0d0 !! The azimuth. logical , private :: m_zIntersect = . true . !! Z-axis intersect X-Y plane? logical , private :: m_setMap = . false . !! Set map projection. integer ( int32 ), private :: m_csys = COORDINATES_CARTESIAN !! Plot coordinate system. logical , private :: m_showZMajorGrid = . false . logical , private :: m_showZMinorGrid = . false . type ( color ), private :: m_zMajorGridColor = color ( 204 , 204 , 204 , 0 ) type ( color ), private :: m_zMinorGridColor = color ( 230 , 230 , 230 , 0 ) integer ( int32 ), private :: m_zMajorGridLineStyle = LINE_SOLID integer ( int32 ), private :: m_zMinorGridLineStyle = LINE_DASHED real ( real32 ), private :: m_zMajorGridLineWidth = 1.2 real ( real32 ), private :: m_zMinorGridLineWidth = 0.7 contains final :: p3d_clean_up procedure , public :: initialize => p3d_init procedure , public :: get_command_string => p3d_get_cmd procedure , public :: get_x_axis => p3d_get_x_axis procedure , public :: get_y_axis => p3d_get_y_axis procedure , public :: get_z_axis => p3d_get_z_axis procedure , public :: get_elevation => p3d_get_elevation procedure , public :: set_elevation => p3d_set_elevation procedure , public :: get_azimuth => p3d_get_azimuth procedure , public :: set_azimuth => p3d_set_azimuth procedure , public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure , public :: set_z_intersect_xy => p3d_set_z_axis_intersect procedure , public :: get_use_map_view => p3d_get_use_map_view procedure , public :: set_use_map_view => p3d_set_use_map_view procedure , public :: get_coordinate_system => p3d_get_csys procedure , public :: set_coordinate_system => p3d_set_csys procedure , public :: set_x_axis_title => p3d_set_x_axis_title procedure , public :: set_y_axis_title => p3d_set_y_axis_title procedure , public :: set_z_axis_title => p3d_set_z_axis_title procedure , public :: get_show_z_major_grid => p3d_get_show_z_major_grid procedure , public :: set_show_z_major_grid => p3d_set_show_z_major_grid procedure , public :: get_show_z_minor_grid => p3d_get_show_z_minor_grid procedure , public :: set_show_z_minor_grid => p3d_set_show_z_minor_grid procedure , public :: get_z_major_grid_color => p3d_get_z_major_grid_color procedure , public :: set_z_major_grid_color => p3d_set_z_major_grid_color procedure , public :: get_z_minor_grid_color => p3d_get_z_minor_grid_color procedure , public :: set_z_minor_grid_color => p3d_set_z_minor_grid_color procedure , public :: get_z_major_grid_line_style => & p3d_get_z_major_grid_line_style procedure , public :: set_z_major_grid_line_style => & p3d_set_z_major_grid_line_style procedure , public :: get_z_minor_grid_line_style => & p3d_get_z_minor_grid_line_style procedure , public :: set_z_minor_grid_line_style => & p3d_set_z_minor_grid_line_style procedure , public :: get_z_major_grid_line_width => & p3d_get_z_major_grid_line_width procedure , public :: set_z_major_grid_line_width => & p3d_set_z_major_grid_line_width procedure , public :: get_z_minor_grid_line_width => & p3d_get_z_minor_grid_line_width procedure , public :: set_z_minor_grid_line_width => & p3d_set_z_minor_grid_line_width procedure , public :: p3d_push_data generic , public :: push => p3d_push_data end type contains ! ------------------------------------------------------------------------------ subroutine p3d_clean_up ( this ) !! Cleans up resources held by the plot_3d object. type ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. call this % free_resources () if ( associated ( this % m_xAxis )) then deallocate ( this % m_xAxis ) nullify ( this % m_xAxis ) end if if ( associated ( this % m_yAxis )) then deallocate ( this % m_yAxis ) nullify ( this % m_yAxis ) end if if ( associated ( this % m_zAxis )) then deallocate ( this % m_zAxis ) nullify ( this % m_zAxis ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_init ( this , term , fname , err ) !! Initializes the plot_3d object. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Initialize the base class ! call plt_init(this, term, fname, errmgr) call this % plot % initialize ( term , fname , errmgr ) ! Process flag = 0 if (. not . associated ( this % m_xAxis )) then allocate ( this % m_xAxis , stat = flag ) end if if ( flag == 0 . and . . not . associated ( this % m_yAxis )) then allocate ( this % m_yAxis , stat = flag ) end if if ( flag == 0 . and . . not . associated ( this % m_zAxis )) then allocate ( this % m_zAxis , stat = flag ) end if ! Error Checking if ( flag /= 0 ) then call report_memory_error ( errmgr , \"p3d_init\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function p3d_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot_3d object. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , n real ( real64 ) :: lmargin , rmargin , tmargin , bmargin class ( plot_data ), pointer :: ptr class ( plot_axis ), pointer :: xAxis , yAxis , zAxis type ( legend ), pointer :: leg type ( color ) :: clr ! class(plot_label), pointer :: lbl ! Initialization call str % initialize () ! Call the base routine call str % append ( this % plot % get_command_string ()) ! Grid if ( this % get_show_x_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid xtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_x_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mxtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_y_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid ytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_y_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_z_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid ztics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_z_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_z_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_z_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_z_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mztics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_z_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_z_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_z_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_gridlines ()) then ! X call str % append ( new_line ( 'a' )) call str % append ( 'set grid xtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) ! Y call str % append ( new_line ( 'a' )) call str % append ( 'set grid ytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) ! Z call str % append ( new_line ( 'a' )) call str % append ( 'set grid ztics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_z_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_z_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_z_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if ! Title n = len_trim ( this % get_title ()) if ( n > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( 'set title \"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if ! Margin lmargin = this % get_left_margin () rmargin = this % get_right_margin () tmargin = this % get_top_margin () bmargin = this % get_bottom_margin () if ( lmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set lmargin at screen \" ) call str % append ( to_string ( lmargin )) end if if ( rmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set rmargin at screen \" ) call str % append ( to_string ( rmargin )) end if if ( tmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set tmargin at screen \" ) call str % append ( to_string ( tmargin )) end if if ( bmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set bmargin at screen \" ) call str % append ( to_string ( bmargin )) end if ! Axes call str % append ( new_line ( 'a' )) xAxis => this % get_x_axis () if ( associated ( xAxis )) call str % append ( xAxis % get_command_string ()) call str % append ( new_line ( 'a' )) yAxis => this % get_y_axis () if ( associated ( yAxis )) call str % append ( yAxis % get_command_string ()) call str % append ( new_line ( 'a' )) zAxis => this % get_z_axis () if ( associated ( zAxis )) call str % append ( zAxis % get_command_string ()) ! Tic Marks if (. not . this % get_tics_inward ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set tics out\" ) end if if ( xAxis % get_zero_axis () . or . yAxis % get_zero_axis () . or . & zAxis % get_zero_axis ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set tics axis\" ) end if ! Border if ( this % get_draw_border ()) then n = 31 else n = 0 if (. not . xAxis % get_zero_axis ()) n = n + 1 if (. not . yAxis % get_zero_axis ()) n = n + 4 if (. not . zAxis % get_zero_axis ()) n = n + 16 call str % append ( new_line ( 'a' )) call str % append ( \"set xtics nomirror\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set ytics nomirror\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set ztics nomirror\" ) end if call str % append ( new_line ( 'a' )) if ( n > 0 ) then call str % append ( \"set border \" ) call str % append ( to_string ( n )) else call str % append ( \"unset border\" ) end if call str % append ( new_line ( 'a' )) call str % append ( \"set border linewidth \" ) call str % append ( to_string ( this % get_border_line_width ())) ! Force the z-axis to move to the x-y plane if ( this % get_z_intersect_xy ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set ticslevel 0\" ) end if ! Scaling if ( this % get_axis_equal ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set view equal xyz\" ) end if ! Legend call str % append ( new_line ( 'a' )) leg => this % get_legend () if ( associated ( leg )) call str % append ( leg % get_command_string ()) ! ! Labels ! do i = 1, this%get_label_count() ! lbl => this%get_label(i) ! if (.not.associated(lbl)) cycle ! call str%append(new_line('a')) ! call str%append(lbl%get_command_string()) ! end do ! Orientation call str % append ( new_line ( 'a' )) call str % append ( \"set view \" ) if ( this % get_use_map_view ()) then call str % append ( \"map\" ) else call str % append ( to_string ( this % get_elevation ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_azimuth ())) end if ! Coordinate system if ( this % get_coordinate_system () == COORDINATES_CYLINDRICAL ) then call str % append ( new_line ( 'a' )) call str % append ( \"set mapping cylindrical\" ) else if ( this % get_coordinate_system () == COORDINATES_SPHERICAL ) then call str % append ( new_line ( 'a' )) call str % append ( \"set mapping spherical\" ) end if ! Define the datablock n = this % get_count () do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) call str % append ( \"$\" ) call str % append ( ptr % get_datablock_name ()) call str % append ( \" << EOD\" ) call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"EOD\" ) end do ! Define the plot function and data formatting commands call str % append ( new_line ( 'a' )) call str % append ( \"splot \" ) do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( ptr % get_command_string ()) if ( i /= n ) call str % append ( \", \" ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function p3d_get_x_axis ( this ) result ( ptr ) !! Gets the x-axis object. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. class ( plot_axis ), pointer :: ptr !! A pointer to the x-axis object. ptr => this % m_xAxis end function ! ------------------------------------------------------------------------------ function p3d_get_y_axis ( this ) result ( ptr ) !! Gets the y-axis object. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. class ( plot_axis ), pointer :: ptr !! A pointer to the y-axis object. ptr => this % m_yAxis end function ! ------------------------------------------------------------------------------ function p3d_get_z_axis ( this ) result ( ptr ) !! Gets the z-axis object. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. class ( plot_axis ), pointer :: ptr !! A pointer to the z-axis object. ptr => this % m_zAxis end function ! ------------------------------------------------------------------------------ pure function p3d_get_elevation ( this ) result ( x ) !! Gets the plot elevation angle. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. real ( real64 ) :: x !! The elevation angle, in degrees. x = this % m_elevation end function ! -------------------- subroutine p3d_set_elevation ( this , x ) !! Sets the plot elevation angle. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. real ( real64 ), intent ( in ) :: x !! The elevation angle, in degrees. this % m_elevation = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_azimuth ( this ) result ( x ) !! Gets the plot azimuth angle. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. real ( real64 ) :: x !! The azimuth angle, in degrees. x = this % m_azimuth end function ! -------------------- subroutine p3d_set_azimuth ( this , x ) !! Sets the plot azimuth angle. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. real ( real64 ), intent ( in ) :: x !! The azimuth angle, in degrees. this % m_azimuth = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_axis_intersect ( this ) result ( x ) !! Gets a value determining if the z-axis should intersect the !! x-y plane. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. logical :: x !! Returns true if the z-axis should intersect the x-y plane; else, !! false to allow the z-axis to float. x = this % m_zIntersect end function ! -------------------- subroutine p3d_set_z_axis_intersect ( this , x ) !! Sets a value determining if the z-axis should intersect the !! x-y plane. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. logical , intent ( in ) :: x !! Set to true if the z-axis should intersect the x-y plane; else, !! false to allow the z-axis to float. this % m_zIntersect = x end subroutine ! ADDED March 29, 2023 - JAC ! ------------------------------------------------------------------------------ pure function p3d_get_use_map_view ( this ) result ( rst ) !! Gets a value determining if the view should be set to a 2D !! map view. If true, the azimuth and elevation terms are ignored. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. logical :: rst !! Returns true if the map view will be used; else, false. rst = this % m_setMap end function ! -------------------- subroutine p3d_set_use_map_view ( this , x ) !! Sets a value determining if the view should be set to a 2D !! map view. If true, the azimuth and elevation terms are ignored. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. logical , intent ( in ) :: x !! Seturns true if the map view will be used; else, false. this % m_setMap = x end subroutine ! ADDED Sept. 15, 2023 - JAC ! ------------------------------------------------------------------------------ pure function p3d_get_csys ( this ) result ( rst ) !! Gets a value determining the coordinate system. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. integer ( int32 ) :: rst !! The coordinate system ID, which must be one of the following. !! !! - COORDINATES_CARTESIAN !! !! - COORDINATES_CYLINDRICAL !! !! - COORDINATES_SPHERICAL rst = this % m_csys end function ! -------------------- subroutine p3d_set_csys ( this , x ) !! Sets a value determining the coordinate system. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. integer ( int32 ), intent ( in ) :: x !! The coordinate system ID, which must be one of the following. !! !! - COORDINATES_CARTESIAN !! !! - COORDINATES_CYLINDRICAL !! !! - COORDINATES_SPHERICAL if ( x /= COORDINATES_CARTESIAN . and . & x /= COORDINATES_CYLINDRICAL . and . & x /= COORDINATES_SPHERICAL ) & then ! Set to default as the input is nonsensical this % m_csys = COORDINATES_CARTESIAN else this % m_csys = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_set_x_axis_title ( this , x ) !! Sets the title associated with the plot's x-axis. class ( plot_3d ), intent ( inout ) :: this !! The [[plot_3d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_xAxis )) then call this % m_xAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_set_y_axis_title ( this , x ) !! Sets the title associated with the plot's y-axis. class ( plot_3d ), intent ( inout ) :: this !! The [[plot_3d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_yAxis )) then call this % m_yAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_set_z_axis_title ( this , x ) !! Sets the title associated with the plot's z-axis. class ( plot_3d ), intent ( inout ) :: this !! The [[plot_3d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_zAxis )) then call this % m_zAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_show_z_major_grid ( this ) result ( x ) !! Gets a value determining if the z-axis major grid should be shown. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showZMajorGrid end function ! -------------------- subroutine p3d_set_show_z_major_grid ( this , x ) !! Sets a value determining if the z-axis major grid should be shown. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showZMajorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_show_z_minor_grid ( this ) result ( x ) !! Gets a value determining if the z-axis minor grid should be shown. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showZMinorGrid end function ! -------------------- subroutine p3d_set_show_z_minor_grid ( this , x ) !! Sets a value determining if the z-axis minor grid should be shown. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showZMinorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_major_grid_color ( this ) result ( x ) !! Gets the color of the z-axis major grid lines. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. type ( color ) :: x !! The color. x = this % m_zMajorGridColor end function ! -------------------- subroutine p3d_set_z_major_grid_color ( this , x ) !! Sets the color of the z-axis major grid lines. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. type ( color ), intent ( in ) :: x !! The color. this % m_zMajorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_minor_grid_color ( this ) result ( x ) !! Gets the color of the z-axis minor grid lines. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. type ( color ) :: x !! The color. x = this % m_zMinorGridColor end function ! -------------------- subroutine p3d_set_z_minor_grid_color ( this , x ) !! Sets the color of the z-axis minor grid lines. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. type ( color ), intent ( in ) :: x !! The color. this % m_zMinorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_major_grid_line_style ( this ) result ( x ) !! Gets the line style used for the z-axis major grid lines. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_zMajorGridLineStyle end function ! -------------------- subroutine p3d_set_z_major_grid_line_style ( this , x ) !! Sets the line style used for the z-axis major grid lines. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_zMajorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_minor_grid_line_style ( this ) result ( x ) !! Gets the line style used for the z-axis minor grid lines. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_zMinorGridLineStyle end function ! -------------------- subroutine p3d_set_z_minor_grid_line_style ( this , x ) !! Sets the line style used for the z-axis minor grid lines. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_zMinorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_major_grid_line_width ( this ) result ( x ) !! Gets the width of the z-axis major grid lines, in pixels. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. real ( real32 ) :: x !! The line width. x = this % m_zMajorGridLineWidth end function ! -------------------- subroutine p3d_set_z_major_grid_line_width ( this , x ) !! Sets the width of the z-axis major grid lines, in pixels. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_zMajorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function p3d_get_z_minor_grid_line_width ( this ) result ( x ) !! Gets the width of the z-axis minor grid lines, in pixels. class ( plot_3d ), intent ( in ) :: this !! The plot_3d object. real ( real32 ) :: x !! The line width. x = this % m_zMinorGridLineWidth end function ! -------------------- subroutine p3d_set_z_minor_grid_line_width ( this , x ) !! Sets the width of the z-axis minor grid lines, in pixels. class ( plot_3d ), intent ( inout ) :: this !! The plot_3d object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_zMinorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ subroutine p3d_push_data ( this , x , y , z , lw , name , ls , lc ) !! Adds a data set to the plot. class ( plot_3d ), intent ( inout ) :: this !! The [[plot_3d]] object. real ( real64 ), intent ( in ), dimension (:) :: x !! The x-values. real ( real64 ), intent ( in ), dimension ( size ( x )) :: y !! The y-values. real ( real64 ), intent ( in ), dimension ( size ( x )) :: z !! The z-values. real ( real32 ), intent ( in ), optional :: lw !! The line width. character ( len = * ), intent ( in ), optional :: name !! A name to associate with the data set. integer ( int32 ), intent ( in ), optional :: ls !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID type ( color ), intent ( in ), optional :: lc !! The line color. type ( plot_data_3d ) :: pd call pd % define_data ( x , y , z ) if ( present ( lw )) call pd % set_line_width ( lw ) if ( present ( name )) call pd % set_name ( name ) if ( present ( ls )) call pd % set_line_style ( ls ) if ( present ( lc )) call pd % set_line_color ( lc ) call this % push ( pd ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_3d.f90.html"},{"title":"fplot_windows_terminal.f90 – FPLOT","text":"Source Code ! fplot_windows_terminal.f90 module fplot_windows_terminal use iso_fortran_env use fplot_terminal implicit none private public :: windows_terminal type , extends ( terminal ) :: windows_terminal !! A Windows-specific terminal. character ( len = 3 ), private :: m_id = \"win\" !! The terminal ID string contains procedure , public :: get_id_string => wt_get_term_string end type contains function wt_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( windows_terminal ), intent ( in ) :: this !! The windows_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function end module","tags":"","loc":"sourcefile\\fplot_windows_terminal.f90.html"},{"title":"delaunay.f90 – FPLOT","text":"Source Code module delaunay !! Provides a minimal, in-house implementation of the subset of the !! GEOMPACK library used by FPLOT to construct 2D Delaunay !! triangulations. !! !! Original FORTRAN77 version by Barry Joe. FORTRAN90 version by !! John Burkardt. Reference: Barry Joe, GEOMPACK - a software !! package for the generation of meshes using geometric algorithms, !! Advances in Engineering Software, Volume 13, pages 325-331, 1991. use iso_fortran_env , only : int32 , real64 implicit none private public :: r8tris2 contains ! ------------------------------------------------------------------------------ subroutine r8tris2 ( node_num , node_xy , triangle_num , triangle_node , & triangle_neighbor ) !! Constructs a Delaunay triangulation of 2D vertices. !! !! The routine constructs the Delaunay triangulation of a set of !! 2D vertices using an incremental approach and diagonal edge !! swaps. Vertices are first sorted in lexicographically !! increasing (X,Y) order, and then are inserted one at a time !! from outside the convex hull. integer ( int32 ), intent ( in ) :: node_num !! The number of vertices. real ( real64 ), intent ( inout ), dimension ( 2 , node_num ) :: node_xy !! The coordinates of the vertices. On output, the vertices !! have been sorted into dictionary order. integer ( int32 ), intent ( out ) :: triangle_num !! The number of triangles in the triangulation; !! TRIANGLE_NUM is equal to 2*NODE_NUM - NB - 2, where NB is !! the number of boundary vertices. integer ( int32 ), intent ( out ), dimension ( 3 , 2 * node_num ) :: & triangle_node !! The nodes that make up each triangle. The elements are !! indices of the vertex array. The vertices of the !! triangles are in counter clockwise order. integer ( int32 ), intent ( out ), dimension ( 3 , 2 * node_num ) :: & triangle_neighbor !! The triangle neighbor list. Positive elements are !! indices of TRIANGLE_NODE; negative elements are used for !! links of a counter clockwise linked list of boundary !! edges; LINK = -(3*I + J-1) where I, J = triangle, edge !! index; TRIANGLE_NEIGHBOR(J,I) refers to the neighbor !! along the edge from vertex J to J+1 (mod 3). ! Local Variables real ( real64 ) :: cmax , tol integer ( int32 ) :: e , i , j , k , l , ledg , lr , ltri , m , m1 , m2 , & n , redg , rtri , t , top integer ( int32 ), dimension ( node_num ) :: indx , stack ! Initialization tol = 10 0.0d0 * epsilon ( tol ) ! Sort the vertices by increasing (x,y) call r82vec_sort_heap_index_a ( node_num , node_xy , indx ) call r82vec_permute ( node_num , node_xy , indx ) ! Make sure that the data points are \"reasonably\" distinct m1 = 1 do i = 2 , node_num m = m1 m1 = i k = 0 do j = 1 , 2 cmax = max ( abs ( node_xy ( j , m )), abs ( node_xy ( j , m1 ))) if ( tol * ( cmax + 1.0d0 ) < & abs ( node_xy ( j , m ) - node_xy ( j , m1 ))) then k = j exit end if end do if ( k == 0 ) then error stop & \"R8TRIS2 - Fatal error! Two points are too close together.\" end if end do ! Starting from points M1 and M2, search for a third point M that ! makes a \"healthy\" triangle (M1,M2,M) m1 = 1 m2 = 2 j = 3 do if ( node_num < j ) then error stop & \"R8TRIS2 - Fatal error! Could not find a non-collinear point.\" end if m = j lr = lrline ( node_xy ( 1 , m ), node_xy ( 2 , m ), node_xy ( 1 , m1 ), & node_xy ( 2 , m1 ), node_xy ( 1 , m2 ), node_xy ( 2 , m2 ), 0.0d0 ) if ( lr /= 0 ) exit j = j + 1 end do ! Set up the triangle information for (M1,M2,M), and for any ! other triangles created because points were collinear with M1, ! M2 triangle_num = j - 2 if ( lr == - 1 ) then triangle_node ( 1 , 1 ) = m1 triangle_node ( 2 , 1 ) = m2 triangle_node ( 3 , 1 ) = m triangle_neighbor ( 3 , 1 ) = - 3 do i = 2 , triangle_num m1 = m2 m2 = i + 1 triangle_node ( 1 , i ) = m1 triangle_node ( 2 , i ) = m2 triangle_node ( 3 , i ) = m triangle_neighbor ( 1 , i - 1 ) = - 3 * i triangle_neighbor ( 2 , i - 1 ) = i triangle_neighbor ( 3 , i ) = i - 1 end do triangle_neighbor ( 1 , triangle_num ) = - 3 * triangle_num - 1 triangle_neighbor ( 2 , triangle_num ) = - 5 ledg = 2 ltri = triangle_num else triangle_node ( 1 , 1 ) = m2 triangle_node ( 2 , 1 ) = m1 triangle_node ( 3 , 1 ) = m triangle_neighbor ( 1 , 1 ) = - 4 do i = 2 , triangle_num m1 = m2 m2 = i + 1 triangle_node ( 1 , i ) = m2 triangle_node ( 2 , i ) = m1 triangle_node ( 3 , i ) = m triangle_neighbor ( 3 , i - 1 ) = i triangle_neighbor ( 1 , i ) = - 3 * i - 3 triangle_neighbor ( 2 , i ) = i - 1 end do triangle_neighbor ( 3 , triangle_num ) = - 3 * triangle_num triangle_neighbor ( 2 , 1 ) = - 3 * triangle_num - 2 ledg = 2 ltri = 1 end if ! Insert the vertices one at a time from outside the convex ! hull, determine visible boundary edges, and apply diagonal ! edge swaps until the Delaunay triangulation of the vertices ! (so far) is obtained top = 0 do i = j + 1 , node_num m = i m1 = triangle_node ( ledg , ltri ) if ( ledg <= 2 ) then m2 = triangle_node ( ledg + 1 , ltri ) else m2 = triangle_node ( 1 , ltri ) end if lr = lrline ( node_xy ( 1 , m ), node_xy ( 2 , m ), node_xy ( 1 , m1 ), & node_xy ( 2 , m1 ), node_xy ( 1 , m2 ), node_xy ( 2 , m2 ), 0.0d0 ) if ( 0 < lr ) then rtri = ltri redg = ledg ltri = 0 else l = - triangle_neighbor ( ledg , ltri ) rtri = l / 3 redg = mod ( l , 3 ) + 1 end if call vbedg ( node_xy ( 1 , m ), node_xy ( 2 , m ), node_num , node_xy , & triangle_num , triangle_node , triangle_neighbor , ltri , & ledg , rtri , redg ) n = triangle_num + 1 l = - triangle_neighbor ( ledg , ltri ) do t = l / 3 e = mod ( l , 3 ) + 1 l = - triangle_neighbor ( e , t ) m2 = triangle_node ( e , t ) if ( e <= 2 ) then m1 = triangle_node ( e + 1 , t ) else m1 = triangle_node ( 1 , t ) end if triangle_num = triangle_num + 1 triangle_neighbor ( e , t ) = triangle_num triangle_node ( 1 , triangle_num ) = m1 triangle_node ( 2 , triangle_num ) = m2 triangle_node ( 3 , triangle_num ) = m triangle_neighbor ( 1 , triangle_num ) = t triangle_neighbor ( 2 , triangle_num ) = triangle_num - 1 triangle_neighbor ( 3 , triangle_num ) = triangle_num + 1 top = top + 1 if ( node_num < top ) then error stop \"R8TRIS2 - Fatal error! Stack overflow.\" end if stack ( top ) = triangle_num if ( t == rtri . and . e == redg ) exit end do triangle_neighbor ( ledg , ltri ) = - 3 * n - 1 triangle_neighbor ( 2 , n ) = - 3 * triangle_num - 2 triangle_neighbor ( 3 , triangle_num ) = - l ltri = n ledg = 2 call swapec ( m , top , ltri , ledg , node_num , node_xy , & triangle_num , triangle_node , triangle_neighbor , stack ) end do ! Now account for the sorting that was done do i = 1 , 3 do j = 1 , triangle_num triangle_node ( i , j ) = indx ( triangle_node ( i , j )) end do end do call perm_inverse ( node_num , indx ) call r82vec_permute ( node_num , node_xy , indx ) end subroutine ! ------------------------------------------------------------------------------ pure subroutine r82vec_sort_heap_index_a ( n , a , indx ) !! Computes an indexed heap ascending sort of an R82VEC. !! !! The sorting is not actually carried out. Rather an index !! array is created which defines the sorting. integer ( int32 ), intent ( in ) :: n !! The number of entries in the array. real ( real64 ), intent ( in ), dimension ( 2 , n ) :: a !! The array to be index-sorted. integer ( int32 ), intent ( out ), dimension ( n ) :: indx !! The sort index. The I-th element of the sorted array is !! A(1:2,INDX(I)). ! Local Variables real ( real64 ), dimension ( 2 ) :: aval integer ( int32 ) :: i , indxt , ir , j , l if ( n < 1 ) return do i = 1 , n indx ( i ) = i end do if ( n == 1 ) return l = n / 2 + 1 ir = n do if ( 1 < l ) then l = l - 1 indxt = indx ( l ) aval = a (:, indxt ) else indxt = indx ( ir ) aval = a (:, indxt ) indx ( ir ) = indx ( 1 ) ir = ir - 1 if ( ir == 1 ) then indx ( 1 ) = indxt exit end if end if i = l j = l + l do while ( j <= ir ) if ( j < ir ) then if ( a ( 1 , indx ( j )) < a ( 1 , indx ( j + 1 )) . or . & ( a ( 1 , indx ( j )) == a ( 1 , indx ( j + 1 )) . and . & a ( 2 , indx ( j )) < a ( 2 , indx ( j + 1 )))) then j = j + 1 end if end if if ( aval ( 1 ) < a ( 1 , indx ( j )) . or . & ( aval ( 1 ) == a ( 1 , indx ( j )) . and . & aval ( 2 ) < a ( 2 , indx ( j )))) then indx ( i ) = indx ( j ) i = j j = j + j else j = ir + 1 end if end do indx ( i ) = indxt end do end subroutine ! ------------------------------------------------------------------------------ subroutine r82vec_permute ( n , a , p ) !! Permutes an R82VEC in place, according to a given permutation. integer ( int32 ), intent ( in ) :: n !! The number of objects. real ( real64 ), intent ( inout ), dimension ( 2 , n ) :: a !! The array to be permuted. integer ( int32 ), intent ( inout ), dimension ( n ) :: p !! The permutation. P(I) = J means that the I-th element of !! the output array should be the J-th element of the input !! array. ! Local Variables real ( real64 ), dimension ( 2 ) :: a_temp integer ( int32 ) :: ierror , iget , iput , istart call perm_check ( n , p , ierror ) if ( ierror /= 0 ) then error stop & \"R82VEC_PERMUTE - Fatal error! P does not represent a permutation.\" end if do istart = 1 , n if ( p ( istart ) < 0 ) then cycle else if ( p ( istart ) == istart ) then p ( istart ) = - p ( istart ) cycle else a_temp = a (:, istart ) iget = istart do iput = iget iget = p ( iget ) p ( iput ) = - p ( iput ) if ( iget < 1 . or . n < iget ) then error stop & \"R82VEC_PERMUTE - Fatal error! Invalid permutation entry.\" end if if ( iget == istart ) then a (:, iput ) = a_temp exit end if a (:, iput ) = a (:, iget ) end do end if end do p = - p end subroutine ! ------------------------------------------------------------------------------ pure subroutine perm_check ( n , p , ierror ) !! Checks that a vector represents a permutation. integer ( int32 ), intent ( in ) :: n !! The number of entries. integer ( int32 ), intent ( in ), dimension ( n ) :: p !! The array to check. integer ( int32 ), intent ( out ) :: ierror !! 0 if the array represents a permutation; otherwise, the !! smallest missing value. ! Local Variables integer ( int32 ) :: ifind , iseek ierror = 0 do iseek = 1 , n ierror = iseek do ifind = 1 , n if ( p ( ifind ) == iseek ) then ierror = 0 exit end if end do if ( ierror /= 0 ) return end do end subroutine ! ------------------------------------------------------------------------------ subroutine perm_inverse ( n , p ) !! Inverts a permutation in-place. integer ( int32 ), intent ( in ) :: n !! The number of objects being permuted. integer ( int32 ), intent ( inout ), dimension ( n ) :: p !! The permutation, in standard index form. On output, P !! describes the inverse permutation. ! Local Variables integer ( int32 ) :: i , i0 , i1 , i2 , ierror , is if ( n <= 0 ) then error stop \"PERM_INVERSE - Fatal error! N <= 0.\" end if call perm_check ( n , p , ierror ) if ( ierror /= 0 ) then error stop & \"PERM_INVERSE - Fatal error! P does not represent a permutation.\" end if is = 1 do i = 1 , n i1 = p ( i ) do while ( i < i1 ) i2 = p ( i1 ) p ( i1 ) = - i2 i1 = i2 end do is = - sign ( 1 , p ( i )) p ( i ) = sign ( p ( i ), is ) end do do i = 1 , n i1 = - p ( i ) if ( 0 <= i1 ) then i0 = i do i2 = p ( i1 ) p ( i1 ) = i0 if ( i2 < 0 ) exit i0 = i1 i1 = i2 end do end if end do end subroutine ! ------------------------------------------------------------------------------ pure function lrline ( xu , yu , xv1 , yv1 , xv2 , yv2 , dv ) result ( rst ) !! Determines if a point is left of, right of, or on a directed !! line. !! !! The directed line is parallel to, and at a signed distance DV !! from a directed base line from (XV1,YV1) to (XV2,YV2). real ( real64 ), intent ( in ) :: xu !! The x-coordinate of the point whose position relative to !! the directed line is to be determined. real ( real64 ), intent ( in ) :: yu !! The y-coordinate of the point whose position relative to !! the directed line is to be determined. real ( real64 ), intent ( in ) :: xv1 !! The x-coordinate of the first point defining the base !! line. real ( real64 ), intent ( in ) :: yv1 !! The y-coordinate of the first point defining the base !! line. real ( real64 ), intent ( in ) :: xv2 !! The x-coordinate of the second point defining the base !! line. real ( real64 ), intent ( in ) :: yv2 !! The y-coordinate of the second point defining the base !! line. real ( real64 ), intent ( in ) :: dv !! The signed distance of the directed line from the !! directed base line. DV is positive for a line to the !! left of the base line. integer ( int32 ) :: rst !! +1 if the point is to the right of the directed line; 0 if !! the point is on the directed line; -1 if the point is to !! the left of the directed line. ! Local Variables real ( real64 ) :: dx , dxu , dy , dyu , t , tol , tolabs tol = 10 0.0d0 * epsilon ( tol ) dx = xv2 - xv1 dy = yv2 - yv1 dxu = xu - xv1 dyu = yu - yv1 tolabs = tol * max ( abs ( dx ), abs ( dy ), abs ( dxu ), abs ( dyu ), abs ( dv )) t = dy * dxu - dx * dyu + dv * sqrt ( dx * dx + dy * dy ) if ( tolabs < t ) then rst = 1 else if ( - tolabs <= t ) then rst = 0 else rst = - 1 end if end function ! ------------------------------------------------------------------------------ pure function diaedg ( x0 , y0 , x1 , y1 , x2 , y2 , x3 , y3 ) result ( rst ) !! Chooses a diagonal edge. !! !! The routine determines whether 0--2 or 1--3 is the diagonal !! edge that should be chosen, based on the circumcircle !! criterion, where (X0,Y0), (X1,Y1), (X2,Y2), (X3,Y3) are the !! vertices of a simple quadrilateral in counterclockwise order. real ( real64 ), intent ( in ) :: x0 , y0 , x1 , y1 , x2 , y2 , x3 , y3 !! The coordinates of the vertices of the quadrilateral. integer ( int32 ) :: rst !! +1 if diagonal edge 02 is chosen; -1 if diagonal edge 13 !! is chosen; 0 if the four vertices are cocircular. ! Local Variables real ( real64 ) :: ca , cb , dx10 , dx12 , dx30 , dx32 , dy10 , dy12 , dy30 , & dy32 , s , tol , tola , tolb tol = 10 0.0d0 * epsilon ( tol ) dx10 = x1 - x0 dy10 = y1 - y0 dx12 = x1 - x2 dy12 = y1 - y2 dx30 = x3 - x0 dy30 = y3 - y0 dx32 = x3 - x2 dy32 = y3 - y2 tola = tol * max ( abs ( dx10 ), abs ( dy10 ), abs ( dx30 ), abs ( dy30 )) tolb = tol * max ( abs ( dx12 ), abs ( dy12 ), abs ( dx32 ), abs ( dy32 )) ca = dx10 * dx30 + dy10 * dy30 cb = dx12 * dx32 + dy12 * dy32 if ( tola < ca . and . tolb < cb ) then rst = - 1 else if ( ca < - tola . and . cb < - tolb ) then rst = 1 else tola = max ( tola , tolb ) s = ( dx10 * dy30 - dx30 * dy10 ) * cb + & ( dx32 * dy12 - dx12 * dy32 ) * ca if ( tola < s ) then rst = - 1 else if ( s < - tola ) then rst = 1 else rst = 0 end if end if end function ! ------------------------------------------------------------------------------ pure function i4_modp ( i , j ) result ( rst ) !! Returns the nonnegative remainder of I4 division. integer ( int32 ), intent ( in ) :: i !! The number to be divided. integer ( int32 ), intent ( in ) :: j !! The number that divides I. integer ( int32 ) :: rst !! The nonnegative remainder when I is divided by J. rst = mod ( i , j ) if ( rst < 0 ) rst = rst + abs ( j ) end function ! ------------------------------------------------------------------------------ pure function i4_wrap ( ival , ilo , ihi ) result ( rst ) !! Forces an I4 to lie between given limits by wrapping. integer ( int32 ), intent ( in ) :: ival !! The value to wrap. integer ( int32 ), intent ( in ) :: ilo !! The lower bound. integer ( int32 ), intent ( in ) :: ihi !! The upper bound. integer ( int32 ) :: rst !! A \"wrapped\" version of IVAL. ! Local Variables integer ( int32 ) :: jhi , jlo , wide jlo = min ( ilo , ihi ) jhi = max ( ilo , ihi ) wide = jhi - jlo + 1 if ( wide == 1 ) then rst = jlo else rst = jlo + i4_modp ( ival - jlo , wide ) end if end function ! ------------------------------------------------------------------------------ pure subroutine vbedg ( x , y , node_num , node_xy , triangle_num , & triangle_node , triangle_neighbor , ltri , ledg , rtri , redg ) !! Determines which boundary edges are visible to a point. !! !! The point (X,Y) is assumed to be outside the convex hull of !! the region covered by the 2D triangulation. real ( real64 ), intent ( in ) :: x !! The x-coordinate of a point outside the convex hull of !! the current triangulation. real ( real64 ), intent ( in ) :: y !! The y-coordinate of a point outside the convex hull of !! the current triangulation. integer ( int32 ), intent ( in ) :: node_num !! The number of points. real ( real64 ), intent ( in ), dimension ( 2 , node_num ) :: node_xy !! The coordinates of the vertices. integer ( int32 ), intent ( in ) :: triangle_num !! The number of triangles. integer ( int32 ), intent ( in ), dimension ( 3 , triangle_num ) :: & triangle_node !! The triangle incidence list. integer ( int32 ), intent ( in ), dimension ( 3 , triangle_num ) :: & triangle_neighbor !! The triangle neighbor list; negative values are used for !! links of a counterclockwise linked list of boundary !! edges; LINK = -(3*I + J-1) where I, J = triangle, edge !! index. integer ( int32 ), intent ( inout ) :: ltri !! If LTRI /= 0 then this value is assumed to be already !! computed and is not changed, else it is updated. On !! output, LTRI is the index of the boundary triangle to the !! left of the leftmost boundary triangle visible from !! (X,Y). integer ( int32 ), intent ( inout ) :: ledg !! The boundary edge of triangle LTRI to the left of the !! leftmost boundary edge visible from (X,Y). 1 <= LEDG <= !! 3. integer ( int32 ), intent ( inout ) :: rtri !! On input, the index of the boundary triangle to begin the !! search at. On output, the index of the rightmost !! boundary triangle visible from (X,Y). integer ( int32 ), intent ( inout ) :: redg !! The edge of triangle RTRI that is visible from (X,Y). !! 1 <= REDG <= 3. ! Local Variables integer ( int32 ) :: a , b , e , l , lr , t logical :: ldone ! Find the rightmost visible boundary edge using links, then ! possibly the leftmost visible boundary edge using triangle ! neighbor information if ( ltri == 0 ) then ldone = . false . ltri = rtri ledg = redg else ldone = . true . end if do l = - triangle_neighbor ( redg , rtri ) t = l / 3 e = mod ( l , 3 ) + 1 a = triangle_node ( e , t ) if ( e <= 2 ) then b = triangle_node ( e + 1 , t ) else b = triangle_node ( 1 , t ) end if lr = lrline ( x , y , node_xy ( 1 , a ), node_xy ( 2 , a ), & node_xy ( 1 , b ), node_xy ( 2 , b ), 0.0d0 ) if ( lr <= 0 ) exit rtri = t redg = e end do if ( ldone ) return t = ltri e = ledg do b = triangle_node ( e , t ) e = i4_wrap ( e - 1 , 1 , 3 ) do while ( 0 < triangle_neighbor ( e , t )) t = triangle_neighbor ( e , t ) if ( triangle_node ( 1 , t ) == b ) then e = 3 else if ( triangle_node ( 2 , t ) == b ) then e = 1 else e = 2 end if end do a = triangle_node ( e , t ) lr = lrline ( x , y , node_xy ( 1 , a ), node_xy ( 2 , a ), & node_xy ( 1 , b ), node_xy ( 2 , b ), 0.0d0 ) if ( lr <= 0 ) exit end do ltri = t ledg = e end subroutine ! ------------------------------------------------------------------------------ pure subroutine swapec ( i , top , btri , bedg , node_num , node_xy , & triangle_num , triangle_node , triangle_neighbor , stack ) !! Swaps diagonal edges until all triangles are Delaunay. !! !! The routine swaps diagonal edges in a 2D triangulation, based !! on the empty circumcircle criterion, until all triangles are !! Delaunay, given that I is the index of the new vertex added !! to the triangulation. integer ( int32 ), intent ( in ) :: i !! The index of the new vertex. integer ( int32 ), intent ( inout ) :: top !! The index of the top of the stack. On output, TOP is !! zero. integer ( int32 ), intent ( inout ) :: btri !! On input, if positive, the triangle index of a boundary !! edge whose updated index must be recorded. On output, !! this may be updated because of swaps. integer ( int32 ), intent ( inout ) :: bedg !! On input, if positive, the edge index of a boundary edge !! whose updated index must be recorded. On output, this !! may be updated because of swaps. integer ( int32 ), intent ( in ) :: node_num !! The number of points. real ( real64 ), intent ( in ), dimension ( 2 , node_num ) :: node_xy !! The coordinates of the points. integer ( int32 ), intent ( in ) :: triangle_num !! The number of triangles. integer ( int32 ), intent ( inout ), dimension ( 3 , triangle_num ) :: & triangle_node !! The triangle incidence list. May be updated on output !! because of swaps. integer ( int32 ), intent ( inout ), dimension ( 3 , triangle_num ) :: & triangle_neighbor !! The triangle neighbor list; negative values are used for !! links of the counter-clockwise linked list of boundary !! edges. May be updated on output because of swaps. integer ( int32 ), intent ( inout ), dimension ( node_num ) :: stack !! On input, entries 1 through TOP contain the indices of !! initial triangles (involving vertex I) put in the stack; !! the edges opposite I should be in the interior; entries !! TOP+1 through NODE_NUM are used as a stack. ! Local Variables integer ( int32 ) :: a , b , c , e , ee , em1 , ep1 , f , fm1 , fp1 , l , r , s , & swap , t , tt , u real ( real64 ) :: x , y x = node_xy ( 1 , i ) y = node_xy ( 2 , i ) do if ( top <= 0 ) exit t = stack ( top ) top = top - 1 if ( triangle_node ( 1 , t ) == i ) then e = 2 b = triangle_node ( 3 , t ) else if ( triangle_node ( 2 , t ) == i ) then e = 3 b = triangle_node ( 1 , t ) else e = 1 b = triangle_node ( 2 , t ) end if a = triangle_node ( e , t ) u = triangle_neighbor ( e , t ) if ( triangle_neighbor ( 1 , u ) == t ) then f = 1 c = triangle_node ( 3 , u ) else if ( triangle_neighbor ( 2 , u ) == t ) then f = 2 c = triangle_node ( 1 , u ) else f = 3 c = triangle_node ( 2 , u ) end if swap = diaedg ( x , y , node_xy ( 1 , a ), node_xy ( 2 , a ), & node_xy ( 1 , c ), node_xy ( 2 , c ), node_xy ( 1 , b ), & node_xy ( 2 , b )) if ( swap == 1 ) then em1 = i4_wrap ( e - 1 , 1 , 3 ) ep1 = i4_wrap ( e + 1 , 1 , 3 ) fm1 = i4_wrap ( f - 1 , 1 , 3 ) fp1 = i4_wrap ( f + 1 , 1 , 3 ) triangle_node ( ep1 , t ) = c triangle_node ( fp1 , u ) = i r = triangle_neighbor ( ep1 , t ) s = triangle_neighbor ( fp1 , u ) triangle_neighbor ( ep1 , t ) = u triangle_neighbor ( fp1 , u ) = t triangle_neighbor ( e , t ) = s triangle_neighbor ( f , u ) = r if ( 0 < triangle_neighbor ( fm1 , u )) then top = top + 1 stack ( top ) = u end if if ( 0 < s ) then if ( triangle_neighbor ( 1 , s ) == u ) then triangle_neighbor ( 1 , s ) = t else if ( triangle_neighbor ( 2 , s ) == u ) then triangle_neighbor ( 2 , s ) = t else triangle_neighbor ( 3 , s ) = t end if top = top + 1 if ( node_num < top ) then error stop \"SWAPEC - Fatal error! Stack overflow.\" end if stack ( top ) = t else if ( u == btri . and . fp1 == bedg ) then btri = t bedg = e end if l = - ( 3 * t + e - 1 ) tt = t ee = em1 do while ( 0 < triangle_neighbor ( ee , tt )) tt = triangle_neighbor ( ee , tt ) if ( triangle_node ( 1 , tt ) == a ) then ee = 3 else if ( triangle_node ( 2 , tt ) == a ) then ee = 1 else ee = 2 end if end do triangle_neighbor ( ee , tt ) = l end if if ( 0 < r ) then if ( triangle_neighbor ( 1 , r ) == t ) then triangle_neighbor ( 1 , r ) = u else if ( triangle_neighbor ( 2 , r ) == t ) then triangle_neighbor ( 2 , r ) = u else triangle_neighbor ( 3 , r ) = u end if else if ( t == btri . and . ep1 == bedg ) then btri = u bedg = f end if l = - ( 3 * u + f - 1 ) tt = u ee = fm1 do while ( 0 < triangle_neighbor ( ee , tt )) tt = triangle_neighbor ( ee , tt ) if ( triangle_node ( 1 , tt ) == b ) then ee = 3 else if ( triangle_node ( 2 , tt ) == b ) then ee = 1 else ee = 2 end if end do triangle_neighbor ( ee , tt ) = l end if end if end do end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\delaunay.f90.html"},{"title":"fplot_plot_data_box_whisker.f90 – FPLOT","text":"Source Code module fplot_plot_data_box_whisker use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: plot_data_box_whisker type , extends ( plot_data_colored ) :: plot_data_box_whisker !! A container for box-whisker plot data. type ( string ), private , allocatable , dimension (:) :: m_x !! The x-coordinate data. real ( real64 ), private , allocatable , dimension (:) :: m_boxMin !! The minimum y-values for each box. real ( real64 ), private , allocatable , dimension (:) :: m_boxMax !! The maximum y-values for each box. real ( real64 ), private , allocatable , dimension (:) :: m_whiskerMin !! The minimum y-values for each whisker. real ( real64 ), private , allocatable , dimension (:) :: m_whiskerMax !! The maximum y-values for each whisker. real ( real64 ), private , allocatable , dimension (:) :: m_mid !! The mid-range y-values for each whisker. Typically the mean !! or median. logical , private :: m_useY2 = . false . !! Plot against the secondary y-axis? logical , private :: m_whiskerbars = . true . !! Use horizontal whisker bar caps? real ( real32 ), private :: m_whiskerWidth = 1.5 !! On a scale of 0 -> 1, the whiskerwidth. real ( real32 ), private :: m_lineWidth = 2.0 !! The line width. real ( real32 ), private :: m_boxWidth = 0.05 !! The box width. logical , private :: m_fillBoxes = . true . !! Fill the boxes? real ( real32 ), private :: m_boxOpacity = 1.0 !! Box opacity [0, 1.0]. logical , private :: m_drawBorder = . true . !! Draw the box border? real ( real32 ), private :: m_midLineWidth = 2.0 !! The mid-line width. type ( color ), private :: m_midLineColor = CLR_BLACK !! The mid-line color. contains procedure , public :: define_data => pdbw_define_data_xstring procedure , public :: get_command_string => pdbw_get_cmd procedure , public :: get_data_string => pdbw_get_data_cmd procedure , public :: get_draw_against_y2 => pdbw_get_use_y2 procedure , public :: set_draw_against_y2 => pdbw_set_use_y2 procedure , public :: get_use_whiskerbars => pdbw_get_use_whiskerbars procedure , public :: set_use_whiskerbars => pdbw_set_use_whiskerbars procedure , public :: get_whiskerbar_width => pdbw_get_whiskerbar_width procedure , public :: set_whiskerbar_width => pdbw_set_whiskerbar_width procedure , public :: get_line_width => pdbw_get_line_width procedure , public :: set_line_width => pdbw_set_line_width procedure , public :: get_box_width => pdbw_get_box_width procedure , public :: set_box_width => pdbw_set_box_width procedure , public :: get_fill_boxes => pdbw_get_fill_boxes procedure , public :: set_fill_boxes => pdbw_set_fill_boxes procedure , public :: get_box_fill_opacity => pdbw_get_opacity procedure , public :: set_box_fill_opacity => pdbw_set_opacity procedure , public :: clear_data => pdbw_clear_data procedure , public :: get_midline_width => pdbw_get_midline_width procedure , public :: set_midline_width => pdbw_set_midline_width procedure , public :: get_midline_color => pdbw_get_midline_color procedure , public :: set_midline_color => pdbw_set_midline_color end type contains ! ------------------------------------------------------------------------------ subroutine pdbw_define_data_xstring ( this , x , boxmin , boxmax , whiskermin , & whiskermax , mid , err ) !! Defines the data set to plot. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. type ( string ), intent ( in ), dimension (:) :: x !! The x-coordinate data. real ( real64 ), intent ( in ), dimension ( size ( x )) :: boxmin !! The minimum y-values for each box. real ( real64 ), intent ( in ), dimension ( size ( x )) :: boxmax !! The maximum y-values for each box. real ( real64 ), intent ( in ), dimension ( size ( x )) :: whiskermin !! The minimum y-values for each whisker. real ( real64 ), intent ( in ), dimension ( size ( x )) :: whiskermax !! The maximum y-values for each whisker. real ( real64 ), intent ( in ), optional , dimension ( size ( x )) :: mid !! The mid-range values for each whisker. Typically the mean or !! median of the data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Allocations if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_boxMin )) deallocate ( this % m_boxMin ) if ( allocated ( this % m_boxMax )) deallocate ( this % m_boxMax ) if ( allocated ( this % m_whiskerMin )) deallocate ( this % m_whiskerMin ) if ( allocated ( this % m_whiskerMax )) deallocate ( this % m_whiskerMax ) if ( allocated ( this % m_mid )) deallocate ( this % m_mid ) allocate ( this % m_x ( n ), source = x , stat = flag ) if ( flag == 0 ) allocate ( this % m_boxMin ( n ), source = boxmin , stat = flag ) if ( flag == 0 ) allocate ( this % m_boxMax ( n ), source = boxmax , stat = flag ) if ( flag == 0 ) allocate ( this % m_whiskerMin ( n ), source = whiskermin , stat = flag ) if ( flag == 0 ) allocate ( this % m_whiskerMax ( n ), source = whiskermax , stat = flag ) if ( flag == 0 . and . present ( mid )) allocate ( this % m_mid ( n ), source = mid , stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdbw_define_data_xstring\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function pdbw_get_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string for this object. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n , nname type ( color ) :: clr ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Style call str % append ( ' using ($0+1):2:3:4:5:(' ) call str % append ( to_string ( this % get_box_width ())) call str % append ( \"):xtic(1) with candlesticks\" ) ! Title nname = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Whisker bars if ( this % get_use_whiskerbars ()) then call str % append ( \" whiskerbars \" ) call str % append ( to_string ( this % get_whiskerbar_width ())) end if ! Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Fill Boxes if ( this % get_fill_boxes ()) then call str % append ( \" fill solid \" ) call str % append ( to_string ( this % get_box_fill_opacity ())) call str % append ( \" border\" ) end if ! Mid Values if ( allocated ( this % m_mid )) then call str % append ( \", $\" ) call str % append ( this % get_datablock_name ()) call str % append ( ' using ($0+1):6:6:6:6:(' ) call str % append ( to_string ( this % get_box_width ())) call str % append ( \"):xtic(1) with candlesticks\" ) call str % append ( \" lt -1\" ) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_midline_width ())) clr = this % get_midline_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) call str % append ( \" notitle\" ) end if ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdbw_get_data_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining the data for this object. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , n character :: delimiter , nl ! Initialization delimiter = achar ( 9 ) nl = new_line ( nl ) n = size ( this % m_x ) ! Process do i = 1 , n call str % append ( this % m_x ( i )) call str % append ( delimiter ) call str % append ( to_string ( this % m_boxMin ( i ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_whiskerMin ( i ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_whiskerMax ( i ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_boxMax ( i ))) if ( allocated ( this % m_mid )) then call str % append ( delimiter ) call str % append ( to_string ( this % m_mid ( i ))) end if call str % append ( nl ) end do ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdbw_get_axes_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining which axes the data is to be !! plotted against. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. character ( len = :), allocatable :: rst !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then rst = \"axes x1y2\" else rst = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ pure function pdbw_get_use_y2 ( this ) result ( rst ) !! Gets a value determining if the data is to be plotted against the !! secondary y axis. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. logical :: rst !! Returns true if the data is to be plotted against the secondary y !! axis; else, false for the primary y axis. rst = this % m_useY2 end function ! -------------------- subroutine pdbw_set_use_y2 ( this , x ) !! Sets a value determining if the data is to be plotted against the !! secondary y axis. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. logical , intent ( in ) :: x !! Set to true if the data is to be plotted against the secondary y !! axis; else, false for the primary y axis. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_use_whiskerbars ( this ) result ( rst ) !! Gets a value determining if whiskerbars should be used. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. logical :: rst !! True if whiskerbars should be used; else, false. rst = this % m_whiskerbars end function ! -------------------- subroutine pdbw_set_use_whiskerbars ( this , x ) !! Sets a value determining if whiskerbars should be used. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. logical , intent ( in ) :: x !! Set to true if whiskerbars should be used; else, false. this % m_whiskerbars = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_whiskerbar_width ( this ) result ( rst ) !! Gets the width of whiskerbar. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: rst !! The width of the whiskerbar on a scale of 0:1 with 1 being the full !! width. rst = this % m_whiskerWidth end function ! -------------------- subroutine pdbw_set_whiskerbar_width ( this , x ) !! Sets the width of the whiskerbar. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The width of the whiskerbar. This value is clamped to [0, 1] with !! 1 representing full width. if ( x < 0.0d0 ) then this % m_whiskerWidth = 0.0d0 else if ( x > 1.0d0 ) then this % m_whiskerWidth = 1.0d0 else this % m_whiskerWidth = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_line_width ( this ) result ( x ) !! Gets the width of the line, in pixels. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: x !! The line width. x = this % m_lineWidth end function ! -------------------- subroutine pdbw_set_line_width ( this , x ) !! Sets the width of the line, in pixels. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_lineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_box_width ( this ) result ( rst ) !! Gets the box width. By default the x-axis is incremented in units of 1; !! therefore, a box width of 1 will fully fill the space. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: rst !! The box width. rst = this % m_boxWidth end function ! -------------------- subroutine pdbw_set_box_width ( this , x ) !! Sets the box width. By default the x-axis is incremented in units of 1; !! therefore, a box width of 1 will fully fill the space. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The box width. this % m_boxWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_fill_boxes ( this ) result ( rst ) !! Gets a value determining if the boxes should be filled. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. logical :: rst !! True if the boxes are to be filled; else, false. rst = this % m_fillBoxes end function ! -------------------- subroutine pdbw_set_fill_boxes ( this , x ) !! Sets a value determining if the boxes should be filled. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. logical , intent ( in ) :: x !! Set to true if the boxes are to be filled; else, false. this % m_fillBoxes = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_opacity ( this ) result ( rst ) !! Gets the opacity of the box fill color. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: rst !! The opacity on a scale from 0 to 1. rst = this % m_boxOpacity end function ! -------------------- subroutine pdbw_set_opacity ( this , x ) !! Sets the opacity of the box fill color. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The opacity on a scale from 0 to 1. this % m_boxOpacity = x end subroutine ! ------------------------------------------------------------------------------ subroutine pdbw_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_boxMin )) deallocate ( this % m_boxMin ) if ( allocated ( this % m_boxMax )) deallocate ( this % m_boxMax ) if ( allocated ( this % m_whiskerMin )) deallocate ( this % m_whiskerMin ) if ( allocated ( this % m_whiskerMin )) deallocate ( this % m_whiskerMin ) if ( allocated ( this % m_mid )) deallocate ( this % m_mid ) end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_midline_width ( this ) result ( rst ) !! Gets the width of the midline. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. real ( real32 ) :: rst !! The line width. rst = this % m_midLineWidth end function ! -------------------- subroutine pdbw_set_midline_width ( this , x ) !! Sets the width of the midline. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_midLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function pdbw_get_midline_color ( this ) result ( rst ) !! Gets the color of the midline. class ( plot_data_box_whisker ), intent ( in ) :: this !! The plot_data_box_whisker object. type ( color ) :: rst !! The line color. rst = this % m_midLineColor end function ! -------------------- subroutine pdbw_set_midline_color ( this , x ) !! Sets the color of the midline. class ( plot_data_box_whisker ), intent ( inout ) :: this !! The plot_data_box_whisker object. type ( color ) , intent ( in ) :: x !! The line color. this % m_midLineColor = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_box_whisker.f90.html"},{"title":"fplot_svg_terminal.f90 – FPLOT","text":"Source Code module fplot_svg_terminal use iso_fortran_env use fplot_terminal use fplot_constants use strings implicit none private public :: svg_terminal type , extends ( file_terminal ) :: svg_terminal !! An SVG terminal. character ( len = 47 ), private :: m_id = 'svg enhanced background \"white\" dynamic mousing' !! The terminal ID string contains procedure , public :: get_id_string => svg_get_term_string end type contains ! ------------------------------------------------------------------------------ function svg_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( svg_terminal ), intent ( in ) :: this !! The svg_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_svg_terminal.f90.html"},{"title":"fplot_plot_object.f90 – FPLOT","text":"Source Code module fplot_plot_object use iso_fortran_env implicit none type , abstract :: plot_object !! The base type for all plot objects. contains procedure ( get_string_result ), deferred , public :: get_command_string end type interface function get_string_result ( this ) result ( x ) !! Returns a string from a plot_object. import plot_object class ( plot_object ), intent ( in ) :: this !! The plot_object object. character ( len = :), allocatable :: x !! The result string. end function end interface end module","tags":"","loc":"sourcefile\\fplot_plot_object.f90.html"},{"title":"fplot_delaunay_tri_surface.f90 – FPLOT","text":"Source Code ! fplot_delaunay_tri_surface.f90 module fplot_delaunay_tri_surface use iso_fortran_env use ieee_arithmetic use fplot_triangulations_delaunay_2d use fplot_errors implicit none private public :: delaunay_tri_surface type , extends ( delaunay_tri_2d ) :: delaunay_tri_surface !! Provides a type describing a triangulated surface. real ( real64 ), private , allocatable , dimension (:) :: m_z !! An array of the z-coordinates of each point. contains procedure , public :: define_function_values => dts_define_fcn procedure , public :: get_points_z => dts_get_z generic , public :: evaluate => dts_interp_1 , dts_interp_2 procedure , private :: dts_interp_1 procedure , private :: dts_interp_2 end type contains ! ------------------------------------------------------------------------------ subroutine dts_define_fcn ( this , z , err ) !! Defines the function values that correspond to the x and y !! data points. class ( delaunay_tri_surface ), intent ( inout ) :: this !! The delaunay_tri_surface object. real ( real64 ), intent ( in ), dimension (:) :: z !! An N-element array containing the function values for !! each x and y coordinate. Notice, the x and y coordinates must !! already be defined prior to calling this routine. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = this % get_point_count () ! Input Check if ( n == 0 ) then call errmgr % report_error ( \"dts_define_fcn\" , & \"No x-y coordinates have been defined.\" , & PLOT_INVALID_OPERATION_ERROR ) return end if if ( size ( z ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"dts_define_fcn\" , & \"z\" , n , size ( z )) return end if ! Store the data if ( allocated ( this % m_z )) deallocate ( this % m_z ) allocate ( this % m_z ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"dts_define_fcn\" , flag ) return end if this % m_z = z end subroutine ! ------------------------------------------------------------------------------ pure function dts_get_z ( this ) result ( rst ) !! Gets the z-coordinates of each point. class ( delaunay_tri_surface ), intent ( in ) :: this !! The delaunay_tri_surface object. real ( real64 ), allocatable , dimension (:) :: rst !! An array of the z-coordinates of each point. if ( allocated ( this % m_z )) then rst = this % m_z else allocate ( rst ( 0 )) end if end function ! ------------------------------------------------------------------------------ ! Interpolation Routine - Barycentric Coordinate Approach ! https://www.iue.tuwien.ac.at/phd/nentchev/node25.html ! https://academic.csuohio.edu/duffy_s/CVE_512_11.pdf pure function dts_interp_1 ( this , x , y ) result ( z ) !! Evaluates the function at the requested point by means of !! linear interpolation. class ( delaunay_tri_surface ), intent ( in ) :: this !! The delaunay_tri_surface object. real ( real64 ), intent ( in ) :: x !! The x-coordinate at which to evaluate the function. real ( real64 ), intent ( in ) :: y !! The y-coordinate at which to evaluate the function. real ( real64 ) :: z !! The function value. If the point (x, y) does not lie within the !! range of defined values, then a value of NaN is returned. ! Local Variables integer ( int32 ) :: i , n1 , n2 , n3 real ( real64 ) :: x1 , x2 , x3 , y1 , y2 , y3 , z1 , z2 , z3 integer ( int32 ), allocatable , dimension (:,:) :: indices real ( real64 ), allocatable , dimension (:) :: xc , yc , zc ! Initialization z = ieee_value ( z , ieee_quiet_nan ) indices = this % get_indices () xc = this % get_points_x () yc = this % get_points_y () zc = this % get_points_z () ! Quick Return if ( this % get_triangle_count () == 0 . or . & this % get_point_count () == 0 . or . & size ( zc ) == 0 ) return ! Locate the triangle to which the point (x, y) belongs. If no triangle ! is found, simply return NaN i = this % find_triangle ( x , y ) if ( i == - 1 ) return ! Get the triangle vertices n1 = indices ( i , 1 ) n2 = indices ( i , 2 ) n3 = indices ( i , 3 ) x1 = xc ( n1 ) y1 = yc ( n1 ) z1 = zc ( n1 ) x2 = xc ( n2 ) y2 = yc ( n2 ) z2 = zc ( n2 ) x3 = xc ( n3 ) y3 = yc ( n3 ) z3 = zc ( n3 ) ! Perform the interpolation z = linear_interp ( x1 , y1 , z1 , x2 , y2 , z2 , x3 , y3 , z3 , x , y ) end function ! -------------------- pure function dts_interp_2 ( this , x , y ) result ( z ) !! Evaluates the function at the requested point by means of !! linear interpolation. class ( delaunay_tri_surface ), intent ( in ) :: this !! The delaunay_tri_surface object. real ( real64 ), intent ( in ), dimension (:) :: x !! The x data coordinates. real ( real64 ), intent ( in ), dimension (:) :: y !! The x data coordinates. real ( real64 ), allocatable , dimension (:) :: z !! The interpolated z coordinate points. If the point (x, y) does !! not lie within the range of defined values, then a value of NaN !! is returned. ! Local Variables integer ( int32 ) :: i , j , n1 , n2 , n3 , nxy real ( real64 ) :: x1 , x2 , x3 , y1 , y2 , y3 , z1 , z2 , z3 , nan integer ( int32 ), allocatable , dimension (:,:) :: indices real ( real64 ), allocatable , dimension (:) :: xc , yc , zc ! Initialization nxy = min ( size ( x ), size ( y )) nan = ieee_value ( nan , ieee_quiet_nan ) allocate ( z ( nxy )) z = nan indices = this % get_indices () xc = this % get_points_x () yc = this % get_points_y () zc = this % get_points_z () ! Quick Return if ( this % get_triangle_count () == 0 . or . & this % get_point_count () == 0 . or . & size ( zc ) == 0 ) return ! Locate the triangle to which the point (x, y) belongs. If no triangle ! is found, simply return NaN do i = 1 , nxy ! Find the index of the triangle j = this % find_triangle ( x ( i ), y ( i )) if ( j == - 1 ) cycle ! Skip if we couldn't find a triangle ! Get the vertices n1 = indices ( j , 1 ) n2 = indices ( j , 2 ) n3 = indices ( j , 3 ) x1 = xc ( n1 ) y1 = yc ( n1 ) z1 = zc ( n1 ) x2 = xc ( n2 ) y2 = yc ( n2 ) z2 = zc ( n2 ) x3 = xc ( n3 ) y3 = yc ( n3 ) z3 = zc ( n3 ) ! Perform the interpolation z ( i ) = linear_interp ( x1 , y1 , z1 , x2 , y2 , z2 , x3 , y3 , z3 , x ( i ), y ( i )) end do end function ! ------------------------------------------------------------------------------ ! Utilizes linear shape functions to interpolate on a triangle given its ! vertex locations, and the desired interpolation location. Notice, the ! interpolation location is expected to lie within the triangle. This is ! not checked. pure elemental function linear_interp ( x1 , y1 , z1 , x2 , y2 , z2 , x3 , & y3 , z3 , x , y ) result ( z ) real ( real64 ), intent ( in ) :: x1 , y1 , z1 , x2 , y2 , z2 , x3 , y3 , z3 , x , y real ( real64 ) :: a1 , a2 , a3 , j , z j = ( x2 - x1 ) * y3 + ( x1 - x3 ) * y2 + ( x3 - x2 ) * y1 a1 = ( x2 * y3 - x3 * y2 + ( y2 - y3 ) * x + ( x3 - x2 ) * y ) a2 = ( x3 * y1 - x1 * y3 + ( y3 - y1 ) * x + ( x1 - x3 ) * y ) a3 = ( x1 * y2 - x2 * y1 + ( y1 - y2 ) * x + ( x2 - x1 ) * y ) z = ( a1 * z1 + a2 * z2 + a3 * z3 ) / j end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_delaunay_tri_surface.f90.html"},{"title":"fplot_errors.f90 – FPLOT","text":"Source Code module fplot_errors use iso_fortran_env implicit none type :: errors contains procedure :: report_error end type ! ****************************************************************************** ! ERROR CODES ! ------------------------------------------------------------------------------ integer ( int32 ), parameter :: PLOT_OUT_OF_MEMORY_ERROR = 1000 !! Occurs if there is insufficient memory available for the !! requested operation. integer ( int32 ), parameter :: PLOT_INVALID_INPUT_ERROR = 1001 !! Occurs if an invalid input is provided. integer ( int32 ), parameter :: PLOT_INVALID_OPERATION_ERROR = 1002 !! Occurs if an attempt is made to perform an invalid operation. integer ( int32 ), parameter :: PLOT_ARRAY_SIZE_MISMATCH_ERROR = 1003 !! Occurs if there is an array size mismatch error. integer ( int32 ), parameter :: PLOT_GNUPLOT_FILE_ERROR = 1004 !! Occurs if there is a GNUPLOT file error. contains ! ------------------------------------------------------------------------------ subroutine report_error ( this , fcn , msg , code ) class ( errors ), intent ( inout ) :: this character ( len = * ), intent ( in ) :: fcn character ( len = * ), intent ( in ) :: msg integer ( int32 ), intent ( in ) :: code write ( error_unit , '(A)' ) trim ( fcn ) // ': ' // trim ( msg ) error stop code end subroutine ! ------------------------------------------------------------------------------ subroutine report_memory_error ( err , fcn , flag ) !! Reports a memory allocation error. class ( errors ), intent ( inout ) :: err !! The error handling object. character ( len = * ), intent ( in ) :: fcn !! The name of the function or subroutine in which the error occurred. integer ( int32 ), intent ( in ) :: flag !! The error flag returned by the system. ! Local Variables character ( len = 256 ) :: msg ! Define the error message write ( msg , 100 ) \"Memory allocation error returning flag \" , flag , \".\" call err % report_error ( fcn , trim ( msg ), PLOT_OUT_OF_MEMORY_ERROR ) ! Formatting 100 format ( A , I0 , A ) end subroutine ! ------------------------------------------------------------------------------ subroutine report_file_create_error ( err , fcn , fname , flag ) !! Reports an I/O error related to file creating. class ( errors ), intent ( inout ) :: err !! The error handling object. character ( len = * ), intent ( in ) :: fcn !! The name of the function or subroutine in which the error occurred. character ( len = * ), intent ( in ) :: fname !! The filename. integer ( int32 ), intent ( in ) :: flag !! The error flag returned by the system. ! Local Variables character ( len = 2048 ) :: msg ! Define the error message write ( msg , 100 ) \"File \" , fname , \" could not be created. The error flag \" , & flag , \" was returned.\" call err % report_error ( fcn , trim ( msg ), PLOT_GNUPLOT_FILE_ERROR ) ! Formatting 100 format ( A , A , A , I0 , A ) end subroutine ! ------------------------------------------------------------------------------ subroutine report_array_size_mismatch_error ( err , fcn , name , expected , actual ) !! Reports an array size mismatch error. class ( errors ), intent ( inout ) :: err !! The error handling object. character ( len = * ), intent ( in ) :: fcn !! The name of the function or subroutine in which the error occurred. character ( len = * ), intent ( in ) :: name !! The variable name. integer ( int32 ), intent ( in ) :: expected !! The expected array size. integer ( int32 ), intent ( in ) :: actual !! The actual array size. ! Local Variables character ( len = 256 ) :: msg ! Define the message write ( msg , 100 ) \"Array \" , name , \" was found to be of length \" , actual , & \", but was expected to be of length \" , expected , \".\" call err % report_error ( fcn , trim ( msg ), PLOT_ARRAY_SIZE_MISMATCH_ERROR ) ! Formatting 100 format ( A , A , A , I0 , A , I0 , A ) end subroutine ! ------------------------------------------------------------------------------ subroutine report_matrix_size_mismatch_error ( err , fcn , name , mexp , nexp , & mact , nact ) !! Reports a matrix size mismatch error. class ( errors ), intent ( inout ) :: err !! The error handling object. character ( len = * ), intent ( in ) :: fcn !! The name of the function or subroutine in which the error occurred. character ( len = * ), intent ( in ) :: name !! The variable name. integer ( int32 ), intent ( in ) :: mexp !! The expected number of rows. integer ( int32 ), intent ( in ) :: nexp !! The expected number of columns. integer ( int32 ), intent ( in ) :: mact !! The actual number of rows. integer ( int32 ), intent ( in ) :: nact !! The actual number of columns. ! Local Variables character ( len = 256 ) :: msg ! Define the error write ( msg , 100 ) \"Matrix \" , name , \" was expected to be of size \" , mexp , & \"-by-\" , nexp , \", but was found to be of size \" , mact , \"-by-\" , nact , \".\" call err % report_error ( fcn , trim ( msg ), PLOT_ARRAY_SIZE_MISMATCH_ERROR ) ! Formatting 100 format ( A , A , A , I0 , A , I0 , A , I0 , A , I0 , A ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_errors.f90.html"},{"title":"fplot_simplify.f90 – FPLOT","text":"Source Code ! fplot_simplify.f90 ! References: ! - https://www.codeproject.com/Articles/114797/Polyline-Simplification ! - https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm module fplot_simplify use iso_fortran_env use fplot_errors implicit none private public :: simplify_polyline interface simplify_polyline module procedure :: simplify_polyline_2d1 module procedure :: simplify_polyline_3d1 module procedure :: simplify_polyline_mtx end interface contains function simplify_polyline_2d1 ( x , y , tol , err ) result ( ln ) !! Simplifies a 2D polyline by removing points too close to !! discern given a specified tolerance. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ) :: tol !! The distance tolerance to use when simplifying the polyline. !! This value must be positive, and larger than machine epsilon. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. real ( real64 ), allocatable , dimension (:,:) :: ln !! A matrix containing the simplified polyline vertices. The first !! column of the matrix contains the x-coordinates, and the second !! column contains the y-coordinates. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n real ( real64 ) :: eps ! Initialization n = size ( x ) eps = epsilon ( eps ) if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Input Check if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"simplify_polyline_2d1\" , \"y\" , n , size ( y )) return end if if ( tol < eps ) then call errmgr % report_error ( \"simplify_polyline_2d1\" , & \"The tolerance value is either negative or less \" // & \"than machine precision.\" , PLOT_INVALID_INPUT_ERROR ) return end if ! Process ln = radial_distance_2d ( x , y , tol , err ) end function function simplify_polyline_3d1 ( x , y , z , tol , err ) result ( ln ) !! Simplifies a 3D polyline by removing points too close to !! discern given a specified tolerance. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ), dimension (:) :: z !! An N-element array containing the z-coordinates of the vertices !! making up the polyline. real ( real64 ), intent ( in ) :: tol !! The distance tolerance to use when simplifying the polyline. !! This value must be positive, and larger than machine epsilon. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. real ( real64 ), allocatable , dimension (:,:) :: ln !! A matrix containing the simplified polyline vertices. The first !! column of the matrix contains the x-coordinates, the second !! column contains the y-coordinates, and the third column contains !! the z-coordinates. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n real ( real64 ) :: eps ! Initialization n = size ( x ) eps = epsilon ( eps ) if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Input Check if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"simplify_polyline_3d1\" , \"y\" , n , size ( y )) return end if if ( size ( z ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"simplify_polyline_3d1\" , \"z\" , n , size ( z )) return end if if ( tol < eps ) then call errmgr % report_error ( \"simplify_polyline_3d1\" , & \"The tolerance value is either negative or less \" // & \"than machine precision.\" , PLOT_INVALID_INPUT_ERROR ) return end if ! Process ln = radial_distance_3d ( x , y , z , tol , errmgr ) end function function simplify_polyline_mtx ( xy , tol , err ) result ( ln ) !! Simplifies a 2D or 3D polyline by removing points too close to !! discern given a specified tolerance. real ( real64 ), intent ( in ), dimension (:,:) :: xy !! An N-by-2 or N-by-3 matrix containing the polyline vertex data. real ( real64 ), intent ( in ) :: tol !! The distance tolerance to use when simplifying the polyline. !! This value must be positive, and larger than machine epsilon. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. real ( real64 ), allocatable , dimension (:,:) :: ln !! A matrix containing the simplified polyline vertices. The first !! column of the matrix contains the x-coordinates, the second !! column contains the y-coordinates, and if necessary, the third !! column contains the z-coordinates. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Ensure there are at least 2 columns of data in XY if ( size ( xy , 2 ) < 2 ) then call report_matrix_size_mismatch_error ( errmgr , & \"simplify_polyline_mtx\" , \"xy\" , size ( xy , 1 ), 2 , size ( xy , 1 ), & size ( xy , 2 )) return end if ! Process if ( size ( xy , 2 ) == 2 ) then ln = simplify_polyline_2d1 ( xy (:, 1 ), xy (:, 2 ), tol , errmgr ) else ln = simplify_polyline_3d1 ( xy (:, 1 ), xy (:, 2 ), xy (:, 3 ), tol , errmgr ) end if end function function radial_distance_2d ( x , y , tol , err ) result ( pts ) ! Arguments real ( real64 ), intent ( in ), dimension (:) :: x , y real ( real64 ), intent ( in ) :: tol class ( errors ), intent ( inout ) :: err real ( real64 ), allocatable , dimension (:,:) :: pts ! Local Variables integer ( int32 ) :: i , j , n , nvalid , flag logical , allocatable , dimension (:) :: valid real ( real64 ) :: r , xref , yref ! Initialization n = size ( x ) if ( n == 0 ) return i = 2 xref = x ( 1 ) yref = y ( 1 ) nvalid = 1 ! Local Memory Allocation allocate ( valid ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( err , \"radial_distance_2d\" , flag ) return end if valid ( 1 ) = . true . ! Cycle through and determine which points to keep do if ( i > n ) exit r = pythag2 ( x ( i ), y ( i ), xref , yref ) if ( r < tol ) then ! The point is too close, reject it valid ( i ) = . false . else ! The point is outside the tolerance, and is OK valid ( i ) = . true . nvalid = nvalid + 1 ! Move the reference point xref = x ( i ) yref = y ( i ) end if i = i + 1 end do ! Allocate space, and collect all valid points allocate ( pts ( nvalid , 2 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( err , \"radial_distance_2d\" , flag ) return end if j = 1 do i = 1 , n if ( valid ( i )) then pts ( j , 1 ) = x ( i ) pts ( j , 2 ) = y ( i ) j = j + 1 end if end do end function function radial_distance_3d ( x , y , z , tol , err ) result ( pts ) ! Arguments real ( real64 ), intent ( in ), dimension (:) :: x , y , z real ( real64 ), intent ( in ) :: tol class ( errors ), intent ( inout ) :: err real ( real64 ), allocatable , dimension (:,:) :: pts ! Local Variables integer ( int32 ) :: i , j , n , nvalid , flag logical , allocatable , dimension (:) :: valid real ( real64 ) :: r , xref , yref , zref ! Initialization n = size ( x ) if ( n == 0 ) return i = 2 xref = x ( 1 ) yref = y ( 1 ) zref = z ( 1 ) nvalid = 1 ! Local Memory Allocation allocate ( valid ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( err , \"radial_distance_3d\" , flag ) return end if valid ( 1 ) = . true . ! Cycle through and determine which points to keep do if ( i > n ) exit r = pythag3 ( x ( i ), y ( i ), z ( i ), xref , yref , zref ) if ( r < tol ) then ! The point is too close, reject it valid ( i ) = . false . else ! The point is outside the tolerance, and is OK valid ( i ) = . true . nvalid = nvalid + 1 ! Move the reference point xref = x ( i ) yref = y ( i ) zref = z ( i ) end if i = i + 1 end do ! Allocate space, and collect all valid points allocate ( pts ( nvalid , 3 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( err , \"radial_distance_3d\" , flag ) return end if j = 1 do i = 1 , n if ( valid ( i )) then pts ( j , 1 ) = x ( i ) pts ( j , 2 ) = y ( i ) pts ( j , 3 ) = z ( i ) j = j + 1 end if end do end function pure function pythag2 ( x , y , xo , yo ) result ( r ) ! Arguments real ( real64 ), intent ( in ) :: x , y , xo , yo real ( real64 ) :: r ! Local Variables real ( real64 ) :: w , xabs , yabs ! Process xabs = abs ( x - xo ) yabs = abs ( y - yo ) w = max ( xabs , yabs ) if ( w < epsilon ( w )) then r = xabs + yabs else r = w * sqrt (( xabs / w ) ** 2 + ( yabs / w ) ** 2 ) end if end function pure function pythag3 ( x , y , z , xo , yo , zo ) result ( r ) ! Arguments real ( real64 ), intent ( in ) :: x , y , z , xo , yo , zo real ( real64 ) :: r ! Local Variables real ( real64 ) :: w , xabs , yabs , zabs ! Process xabs = abs ( x - xo ) yabs = abs ( y - yo ) zabs = abs ( z - zo ) w = max ( xabs , yabs , zabs ) if ( w < epsilon ( w )) then r = xabs + yabs + zabs else r = w * sqrt (( xabs / w ) ** 2 + ( yabs / w ) ** 2 + ( zabs / w ) ** 2 ) end if end function end module","tags":"","loc":"sourcefile\\fplot_simplify.f90.html"},{"title":"fplot_qt_terminal.f90 – FPLOT","text":"Source Code ! fplot_qt_terminal.f90 module fplot_qt_terminal use iso_fortran_env use fplot_terminal implicit none private public :: qt_terminal type , extends ( terminal ) :: qt_terminal !! Defines a terminal that utilizes QT. character ( len = 2 ), private :: m_id = \"qt\" !! The terminal ID string contains procedure , public :: get_id_string => qt_get_term_string end type contains function qt_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( qt_terminal ), intent ( in ) :: this !! The qt_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function end module","tags":"","loc":"sourcefile\\fplot_qt_terminal.f90.html"},{"title":"fplot_multiplot.f90 – FPLOT","text":"Source Code ! fplot_multiplot.f90 module fplot_multiplot use iso_fortran_env use fplot_plot_object use fplot_plot use fplot_terminal use fplot_windows_terminal use fplot_qt_terminal use fplot_wxt_terminal use fplot_png_terminal use fplot_latex_terminal use fplot_svg_terminal use fplot_pdf_terminal use fplot_constants use fplot_errors use collections use strings implicit none private public :: multiplot type , extends ( plot_object ) :: multiplot !! Defines a multi-plot layout. type ( list ), private :: m_plots !! The collection of plot objects. integer ( int32 ), private :: m_rows = 0 !! The number of rows of plots. integer ( int32 ), private :: m_cols = 0 !! The number of columns of plots. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_title !! The page title. logical , private :: m_hasTitle = . false . !! Has a title? class ( terminal ), pointer :: m_terminal => null () !! The GNUPLOT terminal object to target. real ( real32 ), private :: m_leftMargin = 0.12 real ( real32 ), private :: m_rightMargin = 0.95 real ( real32 ), private :: m_bottomMargin = 0.10 real ( real32 ), private :: m_topMargin = 0.95 real ( real32 ), private :: m_horizontalSpacing = 0.0 real ( real32 ), private :: m_verticalSpacing = 0.0 logical , private :: m_useAutoMargins = . true . contains final :: mp_clean procedure , public :: get_command_string => mp_get_command procedure , public :: initialize => mp_init procedure , public :: get_row_count => mp_get_rows procedure , public :: get_column_count => mp_get_cols procedure , public :: get_plot_count => mp_get_count procedure , public :: get_title => mp_get_title procedure , public :: set_title => mp_set_title procedure , public :: draw => mp_draw procedure , public :: get => mp_get procedure , public :: set => mp_set procedure , public :: is_title_defined => mp_has_title procedure , public :: get_terminal => mp_get_term procedure , public :: save_file => mp_save procedure , public :: get_font_name => mp_get_font procedure , public :: set_font_name => mp_set_font procedure , public :: get_font_size => mp_get_font_size procedure , public :: set_font_size => mp_set_font_size procedure , public :: set_window_size => mp_set_window_size procedure , public :: get_left_margin => mp_get_left_margin procedure , public :: set_left_margin => mp_set_left_margin procedure , public :: get_right_margin => mp_get_right_margin procedure , public :: set_right_margin => mp_set_right_margin procedure , public :: get_top_margin => mp_get_top_margin procedure , public :: set_top_margin => mp_set_top_margin procedure , public :: get_bottom_margin => mp_get_bottom_margin procedure , public :: set_bottom_margin => mp_set_bottom_margin procedure , public :: get_horizontal_spacing => mp_get_horizontal_spacing procedure , public :: set_horizontal_spacing => mp_set_horizontal_spacing procedure , public :: get_vertical_spacing => mp_get_vertical_spacing procedure , public :: set_vertical_spacing => mp_set_vertical_spacing procedure , public :: get_use_auto_generated_margins => mp_get_use_auto_generated_margins procedure , public :: set_use_auto_generated_margins => mp_set_use_auto_generated_margins end type contains ! ------------------------------------------------------------------------------ function mp_get_command ( this ) result ( x ) !! Gets the GNUPLOT commands for this object. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , m , n class ( plot ), pointer :: ptr ! Initialization call str % initialize () m = this % get_row_count () n = this % get_column_count () ! Set up the multiplot call str % append ( \"set multiplot layout \" ) call str % append ( to_string ( m )) call str % append ( \",\" ) call str % append ( to_string ( n )) call str % append ( \" columnsfirst\" ) if ( this % is_title_defined ()) then call str % append ( \" title \" ) call str % append ( '\"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if if (. not . this % get_use_auto_generated_margins ()) then call str % append ( \" margins \" ) call str % append ( to_string ( this % get_left_margin ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_right_margin ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_bottom_margin ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_top_margin ())) end if call str % append ( \" spacing \" ) call str % append ( to_string ( this % get_horizontal_spacing ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_vertical_spacing ())) call str % append ( new_line ( 'a' )) ! Write commands for each plot object do j = 1 , n do i = 1 , m ptr => this % get ( i , j ) call str % append ( new_line ( 'a' )) call str % append ( ptr % get_command_string ()) end do end do ! Close out the multiplot call str % append ( new_line ( 'a' )) call str % append ( \"unset multiplot\" ) ! Get the string x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine mp_init ( this , m , n , term , width , height , fname , err ) !! Initializes the multiplot object. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: m !! The number of rows of plots. integer ( int32 ), intent ( in ) :: n !! The number of columns of plots. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. The !! default terminal is a WXT terminal. The acceptable inputs are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF integer ( int32 ), intent ( in ), optional :: width !! Optionally, the width of the plot window. integer ( int32 ), intent ( in ), optional :: height !! Optionally, the height of the plot window. character ( len = * ), intent ( in ), optional :: fname !! A filename to associate with terminals that print to file. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag , t , i class ( errors ), pointer :: errmgr type ( errors ), target :: deferr type ( wxt_terminal ), pointer :: wxt type ( windows_terminal ), pointer :: win type ( qt_terminal ), pointer :: qt type ( png_terminal ), pointer :: png type ( latex_terminal ), pointer :: latex type ( svg_terminal ), pointer :: svg type ( pdf_terminal ), pointer :: pdf ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( present ( term )) then t = term else t = GNUPLOT_TERMINAL_WXT end if ! Process call this % m_plots % clear () this % m_rows = m this % m_cols = n flag = 0 ! Populate the list with a dummy variable at the outset. This allows ! the list to be appropriately sized so the user may use the \"set\" ! subroutine appropriately do i = 1 , m * n call this % m_plots % push ( i ) end do ! Define the terminal if ( associated ( this % m_terminal )) deallocate ( this % m_terminal ) select case ( t ) case ( GNUPLOT_TERMINAL_PNG ) allocate ( png , stat = flag ) if ( present ( fname )) call png % set_filename ( fname ) this % m_terminal => png case ( GNUPLOT_TERMINAL_QT ) allocate ( qt , stat = flag ) this % m_terminal => qt case ( GNUPLOT_TERMINAL_WIN32 ) allocate ( win , stat = flag ) this % m_terminal => win case ( GNUPLOT_TERMINAL_LATEX ) allocate ( latex , stat = flag ) if ( present ( fname )) call latex % set_filename ( fname ) this % m_terminal => latex case ( GNUPLOT_TERMINAL_SVG ) allocate ( svg ) if ( present ( fname )) call svg % set_filename ( fname ) this % m_terminal => svg case ( GNUPLOT_TERMINAL_PDF ) allocate ( pdf , stat = flag ) if ( present ( fname )) call pdf % set_filename ( fname ) this % m_terminal => pdf case default ! WXT is the default allocate ( wxt , stat = flag ) this % m_terminal => wxt end select ! Error Checking if ( flag /= 0 ) then call report_memory_error ( errmgr , \"mp_init\" , flag ) return end if ! Size the window? if ( present ( width )) then call this % m_terminal % set_window_width ( width ) end if if ( present ( height )) then call this % m_terminal % set_window_height ( height ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine mp_clean ( this ) !! Cleans up resources held by the multiplot object. type ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. if ( associated ( this % m_terminal )) deallocate ( this % m_terminal ) nullify ( this % m_terminal ) end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_rows ( this ) result ( x ) !! Gets the number of rows of plots. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ) :: x !! The row count. x = this % m_rows end function ! -------------------- pure function mp_get_cols ( this ) result ( x ) !! Gets the number of columns of plots. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ) :: x !! The column count. x = this % m_cols end function ! -------------------- pure function mp_get_count ( this ) result ( x ) !! Gets the total number of plots. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ) :: x !! The plot count. x = this % m_plots % count () end function ! ------------------------------------------------------------------------------ function mp_get_title ( this ) result ( x ) !! Gets the multiplot's title. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. character ( len = :), allocatable :: x !! The title. x = this % m_title end function ! -------------------- subroutine mp_set_title ( this , x ) !! Sets the multiplot's title. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. character ( len = * ), intent ( in ) :: x !! The title. ! Local Variables integer ( int32 ) :: n ! Process n = min ( len ( x ), PLOTDATA_MAX_NAME_LENGTH ) this % m_title = \"\" if ( n /= 0 ) then this % m_title ( 1 : n ) = x ( 1 : n ) this % m_hasTitle = . true . else this % m_hasTitle = . false . end if end subroutine ! ------------------------------------------------------------------------------ subroutine mp_draw ( this , persist , err ) !! Launches GNUPLOT and draws the multiplot per the current state of !! the command list. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. logical , intent ( in ), optional :: persist !! An optional parameter that can be used to keep GNUPLOT open. !! Set to true to force GNUPLOT to remain open; else, set to false !! to allow GNUPLOT to close after drawing. The default is true. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Parameters character ( len = * ), parameter :: fname = \"temp_gnuplot_file.plt\" ! Local Variables logical :: p integer ( int32 ) :: fid , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr class ( terminal ), pointer :: term ! Initialization if ( present ( persist )) then p = persist else p = . true . end if if ( present ( err )) then errmgr => err else errmgr => deferr end if term => this % get_terminal () ! Open the file for writing, and write the contents to file open ( newunit = fid , file = fname , iostat = flag ) if ( flag > 0 ) then call report_file_create_error ( errmgr , \"mp_draw\" , fname , flag ) return end if write ( fid , '(A)' ) term % get_command_string () write ( fid , '(A)' ) new_line ( 'a' ) write ( fid , '(A)' ) this % get_command_string () close ( fid ) ! Launch GNUPLOT if ( p ) then call execute_command_line ( \"gnuplot --persist \" // fname ) else call execute_command_line ( \"gnuplot \" // fname ) end if ! Clean up by deleting the file open ( newunit = fid , file = fname ) close ( fid , status = \"delete\" ) end subroutine ! ------------------------------------------------------------------------------ function mp_get ( this , i , j ) result ( x ) !! Gets the requested plot object. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: i !! The row index of the plot to retrieve. integer ( int32 ), intent ( in ) :: j !! The column index of the plot to retrieve. class ( plot ), pointer :: x !! A pointer to the plot object. ! Local Variables class ( * ), pointer :: item integer ( int32 ) :: ind ! Process ind = this % m_rows * ( j - 1 ) + i item => this % m_plots % get ( ind ) select type ( item ) class is ( plot ) x => item class default nullify ( x ) end select end function ! -------------------- subroutine mp_set ( this , i , j , x ) !! Replaces the specified plot. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: i !! The row index of the plot to replace. integer ( int32 ), intent ( in ) :: j !! The column index of the plot to replace. class ( plot ), intent ( in ) :: x !! The new plot. ! Local Variables integer ( int32 ) :: ind ! Process ind = this % m_rows * ( j - 1 ) + i call this % m_plots % set ( ind , x ) end subroutine ! ------------------------------------------------------------------------------ pure function mp_has_title ( this ) result ( x ) !! Gets a value determining if a title has been defined for the !! multiplot object. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. logical :: x !! Returns true if a title has been defined for this multiplot; !! else, returns false. x = this % m_hasTitle end function ! ------------------------------------------------------------------------------ function mp_get_term ( this ) result ( x ) !! Gets the GNUPLOT terminal object. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. class ( terminal ), pointer :: x !! A pointer to the terminal object. x => this % m_terminal end function ! ------------------------------------------------------------------------------ subroutine mp_save ( this , fname , err ) !! Saves a GNUPLOT command file. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. character ( len = * ), intent ( in ) :: fname !! The filename. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: fid , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr class ( terminal ), pointer :: term ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if term => this % get_terminal () ! Open the file for writing, and write the contents to file open ( newunit = fid , file = fname , iostat = flag ) if ( flag > 0 ) then call report_file_create_error ( errmgr , \"mp_save\" , fname , flag ) return end if write ( fid , '(A)' ) term % get_command_string () write ( fid , '(A)' ) new_line ( 'a' ) write ( fid , '(A)' ) this % get_command_string () close ( fid ) end subroutine ! ------------------------------------------------------------------------------ function mp_get_font ( this ) result ( x ) !! Gets the name of the font used for plot text. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. character ( len = :), allocatable :: x !! The font name. class ( terminal ), pointer :: term term => this % get_terminal () x = term % get_font_name () end function ! -------------------- subroutine mp_set_font ( this , x ) !! Sets the name of the font used for plot text. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. character ( len = * ), intent ( in ) :: x !! The font name. class ( terminal ), pointer :: term term => this % get_terminal () call term % set_font_name ( x ) end subroutine ! ------------------------------------------------------------------------------ function mp_get_font_size ( this ) result ( x ) !! Gets the size of the font used by the plot. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. integer ( int32 ) :: x !! The font size. class ( terminal ), pointer :: term term => this % get_terminal () x = term % get_font_size () end function ! -------------------- subroutine mp_set_font_size ( this , x ) !! Sets the size of the font used by the plot. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: x !! The font size. class ( terminal ), pointer :: term term => this % get_terminal () call term % set_font_size ( x ) end subroutine ! ------------------------------------------------------------------------------ subroutine mp_set_window_size ( this , width , height ) !! Sets the height and width of the plot window. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. integer ( int32 ), intent ( in ) :: width !! The plot window width. integer ( int32 ), intent ( in ) :: height !! The plot window height. if ( associated ( this % m_terminal )) then call this % m_terminal % set_window_width ( width ) call this % m_terminal % set_window_height ( height ) end if end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_left_margin ( this ) result ( rst ) !! Gets the left margin. The value exists in the range [0, 1]. This !! margin is a global margin for the multiplot. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. real ( real32 ) :: rst !! The margin value. rst = this % m_leftMargin end function ! -------------------- subroutine mp_set_left_margin ( this , x ) !! Sets the left margin. The value exists in the range [0, 1]. This !! margin is a global margin for the multiplot. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. real ( real32 ), intent ( in ) :: x !! The margin value. This value will be clamped to the range !! [0, 1]. if ( x < 0.0 ) then this % m_leftMargin = 0.0 else if ( x > 1.0 ) then this % m_leftMargin = 1.0 else this % m_leftMargin = x end if this % m_useAutoMargins = . false . end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_right_margin ( this ) result ( rst ) !! Gets the right margin. The value exists in the range [0, 1]. This !! margin is a global margin for the multiplot. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. real ( real32 ) :: rst !! The margin value. rst = this % m_rightMargin end function ! -------------------- subroutine mp_set_right_margin ( this , x ) !! Sets the right margin. The value exists in the range [0, 1]. This !! margin is a global margin for the multiplot. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. real ( real32 ), intent ( in ) :: x !! The margin value. This value will be clamped to the range !! [0, 1]. if ( x < 0.0 ) then this % m_rightMargin = 0.0 else if ( x > 1.0 ) then this % m_rightMargin = 1.0 else this % m_rightMargin = x end if this % m_useAutoMargins = . false . end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_top_margin ( this ) result ( rst ) !! Gets the top margin. The value exists in the range [0, 1]. This !! margin is a global margin for the multiplot. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. real ( real32 ) :: rst !! The margin value. rst = this % m_topMargin end function ! -------------------- subroutine mp_set_top_margin ( this , x ) !! Sets the top margin. The value exists in the range [0, 1]. This !! margin is a global margin for the multiplot. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. real ( real32 ), intent ( in ) :: x !! The margin value. This value will be clamped to the range !! [0, 1]. if ( x < 0.0 ) then this % m_topMargin = 0.0 else if ( x > 1.0 ) then this % m_topMargin = 1.0 else this % m_topMargin = x end if this % m_useAutoMargins = . false . end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_bottom_margin ( this ) result ( rst ) !! Gets the bottom margin. The value exists in the range [0, 1]. This !! margin is a global margin for the multiplot. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. real ( real32 ) :: rst !! The margin value. rst = this % m_bottomMargin end function ! -------------------- subroutine mp_set_bottom_margin ( this , x ) !! Sets the bottom margin. The value exists in the range [0, 1]. This !! margin is a global margin for the multiplot. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. real ( real32 ), intent ( in ) :: x !! The margin value. This value will be clamped to the range !! [0, 1]. if ( x < 0.0 ) then this % m_bottomMargin = 0.0 else if ( x > 1.0 ) then this % m_bottomMargin = 1.0 else this % m_bottomMargin = x end if this % m_useAutoMargins = . false . end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_horizontal_spacing ( this ) result ( rst ) !! Gets the horizontal spacing between plots. The value must be !! zero or positive. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. real ( real32 ) :: rst !! The spacing value. rst = this % m_horizontalSpacing end function ! -------------------- subroutine mp_set_horizontal_spacing ( this , x ) !! Sets the horizontal spacing between plots. The value must be !! zero or positive. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. real ( real32 ), intent ( in ) :: x !! The spacing value. This value will be clamped to zero if !! a negative value is supplied. if ( x < 0.0 ) then this % m_horizontalSpacing = 0.0 else this % m_horizontalSpacing = x end if end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_vertical_spacing ( this ) result ( rst ) !! Gets the vertical spacing between plots. The value must be !! zero or positive. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. real ( real32 ) :: rst !! The spacing value. rst = this % m_verticalSpacing end function ! -------------------- subroutine mp_set_vertical_spacing ( this , x ) !! Sets the vertical spacing between plots. The value must be !! zero or positive. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. real ( real32 ), intent ( in ) :: x !! The spacing value. This value will be clamped to zero if !! a negative value is supplied. if ( x < 0.0 ) then this % m_verticalSpacing = 0.0 else this % m_verticalSpacing = x end if end subroutine ! ------------------------------------------------------------------------------ pure function mp_get_use_auto_generated_margins ( this ) result ( rst ) !! Gets a value determining if the global margins should be !! automatically calculated. class ( multiplot ), intent ( in ) :: this !! The [[multiplot]] object. logical :: rst !! True if the margins should be automatically calculated; else, !! false to use manually defined margins. rst = this % m_useAutoMargins end function ! -------------------- subroutine mp_set_use_auto_generated_margins ( this , x ) !! Sets a value determining if the global margins should be !! automatically calculated. class ( multiplot ), intent ( inout ) :: this !! The [[multiplot]] object. logical , intent ( in ) :: x !! True if the margins should be automatically calculated; else, !! false to use manually defined margins. this % m_useAutoMargins = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_multiplot.f90.html"},{"title":"fplot_vector_field_plot_data.f90 – FPLOT","text":"Source Code ! fplot_vector_field_plot_data.f90 ! REF: ! http://www.gnuplotting.org/vector-field-from-data-file/ ! http://gnuplot.sourceforge.net/demo_5.4/vector.html ! http://www.gnuplot.info/docs_5.4/Gnuplot_5_4.pdf (pg 79) module fplot_vector_field_plot_data use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: vector_field_plot_data type , extends ( plot_data_colored ) :: vector_field_plot_data !! Defines a two-dimensional vector-field plot data set. real ( real64 ), private , allocatable , dimension (:,:,:) :: m_data !! An M-by-N-by-4 array containing the x, y, dx, and dy plot !! data points. Optionally, a 5th page can be added to define the !! color for each arrow. real ( real64 ), private :: m_arrowSize = 1.0d0 !! The vector size (scaling factor). logical , private :: m_filledHeads = . false . !! Fill the arrow heads? contains procedure , public :: get_data_string => vfpd_get_data_cmd procedure , public :: get_command_string => vfpd_get_cmd procedure , public :: define_data => vfpd_define_data procedure , public :: get_arrow_size => vfpd_get_arrow_size procedure , public :: set_arrow_size => vfpd_set_arrow_size procedure , public :: get_fill_arrow => vfpd_get_fill_arrow procedure , public :: set_fill_arrow => vfpd_set_fill_arrow procedure , public :: get_use_data_dependent_colors => & vfpd_get_use_data_dependent_colors procedure , public :: clear_data => vfpd_clear_data end type contains ! ------------------------------------------------------------------------------ function vfpd_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data to plot. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , m , n character :: delimiter , nl real ( real64 ) :: scaling ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) scaling = this % get_arrow_size () ! Fix later if (. not . allocated ( this % m_data )) then x = \"\" return end if m = size ( this % m_data , 1 ) n = size ( this % m_data , 2 ) ! Need a quick return in the event no data exists ! Process if ( this % get_use_data_dependent_colors ()) then do j = 1 , n do i = 1 , m ! ORDER: X, Y, DX, DY call str % append ( to_string ( this % m_data ( i , j , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , j , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( scaling * this % m_data ( i , j , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( scaling * this % m_data ( i , j , 4 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , j , 5 ))) call str % append ( nl ) end do end do else do j = 1 , n do i = 1 , m ! ORDER: X, Y, DX, DY call str % append ( to_string ( this % m_data ( i , j , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , j , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( scaling * this % m_data ( i , j , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( scaling * this % m_data ( i , j , 4 ))) call str % append ( nl ) end do end do end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function vfpd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this !! vector_field_plot_data object. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Property Definition call str % append ( \" with vectors\" ) if ( this % get_fill_arrow ()) then call str % append ( \" filled head\" ) end if if ( this % get_use_data_dependent_colors ()) then call str % append ( \" lc palette\" ) else clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine vfpd_define_data ( this , x , y , dx , dy , c , err ) !! Defines the data set. class ( vector_field_plot_data ), intent ( inout ) :: this !! The vector_field_plot_data object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! An M-by-N matrix containing the x-locations of each arrow's !! origin. real ( real64 ), intent ( in ), dimension (:,:) :: y !! An M-by-N matrix containing the y-locations of each arrow's !! origin. real ( real64 ), intent ( in ), dimension (:,:) :: dx !! An M-by-N matrix containing the x-direction of each arrow. real ( real64 ), intent ( in ), dimension (:,:) :: dy !! An M-by-N matrix containing the y-direction of each arrow. real ( real64 ), intent ( in ), dimension (:,:), optional :: c !! An optional M-by-N matrix containing information on how to color !! the arrows. The colors are determined by the active colormap. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , j , m , n , flag type ( errors ), target :: deferr class ( errors ), pointer :: errmgr character ( len = 256 ) :: errmsg ! Set up error handling if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Input Checking m = size ( x , 1 ) n = size ( x , 2 ) if ( size ( y , 1 ) /= m . or . size ( y , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"vfpd_define_data\" , & \"y\" , m , n , size ( y , 1 ), size ( y , 2 )) return end if if ( size ( dx , 1 ) /= m . or . size ( dx , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"vfpd_define_data\" , & \"dx\" , m , n , size ( dx , 1 ), size ( dx , 2 )) return end if if ( size ( dy , 1 ) /= m . or . size ( dy , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"vfpd_define_data\" , & \"dy\" , m , n , size ( dy , 1 ), size ( dy , 2 )) return end if if ( present ( c )) then if ( size ( c , 1 ) /= m . or . size ( c , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , & \"vfpd_define_data\" , \"c\" , m , n , size ( c , 1 ), size ( c , 2 )) return end if end if ! Create a name if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Allocate space for the data if ( allocated ( this % m_data )) deallocate ( this % m_data ) if ( present ( c )) then allocate ( this % m_data ( m , n , 5 ), stat = flag ) else allocate ( this % m_data ( m , n , 4 ), stat = flag ) end if if ( flag /= 0 ) then call report_memory_error ( errmgr , \"vfpd_define_data\" , flag ) return end if ! Store the data if ( present ( c )) then do concurrent ( j = 1 : n ) do i = 1 , m this % m_data ( i , j , 1 ) = x ( i , j ) this % m_data ( i , j , 2 ) = y ( i , j ) this % m_data ( i , j , 3 ) = dx ( i , j ) this % m_data ( i , j , 4 ) = dy ( i , j ) this % m_data ( i , j , 5 ) = c ( i , j ) end do end do else do concurrent ( j = 1 : n ) do i = 1 , m this % m_data ( i , j , 1 ) = x ( i , j ) this % m_data ( i , j , 2 ) = y ( i , j ) this % m_data ( i , j , 3 ) = dx ( i , j ) this % m_data ( i , j , 4 ) = dy ( i , j ) end do end do end if ! End return end subroutine ! ------------------------------------------------------------------------------ pure function vfpd_get_arrow_size ( this ) result ( rst ) !! Gets the scaling factor used to determine the arrow size. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. real ( real64 ) :: rst !! The scaling factor. rst = this % m_arrowSize end function ! -------------------- subroutine vfpd_set_arrow_size ( this , x ) !! Sets the scaling factor used to determine the arrow size. class ( vector_field_plot_data ), intent ( inout ) :: this !! The vector_field_plot_data object. real ( real64 ), intent ( in ) :: x !! The scaling factor. this % m_arrowSize = x end subroutine ! ------------------------------------------------------------------------------ pure function vfpd_get_fill_arrow ( this ) result ( rst ) !! Gets a value determining if the arrow heads should be filled. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. logical :: rst !! True if the arrow heads should be filled; else, false. rst = this % m_filledHeads end function ! -------------------- subroutine vfpd_set_fill_arrow ( this , x ) !! Sets a value determining if the arrow heads should be filled. class ( vector_field_plot_data ), intent ( inout ) :: this !! The vector_field_plot_data object. logical , intent ( in ) :: x !! True if the arrow heads should be filled; else, false. this % m_filledHeads = x end subroutine ! ------------------------------------------------------------------------------ pure function vfpd_get_use_data_dependent_colors ( this ) result ( rst ) !! Gets a value indicating if data-dependent coloring should be !! used. This is defined by supplying information on how to scale the !! coloring when calling define_data. class ( vector_field_plot_data ), intent ( in ) :: this !! The vector_field_plot_data object. logical :: rst !! Returns true if data-dependent coloring is being used; else, !! false. rst = . false . if (. not . allocated ( this % m_data )) return rst = size ( this % m_data , 3 ) >= 5 end function ! ------------------------------------------------------------------------------ subroutine vfpd_clear_data ( this ) !! Clears the data from the data set. class ( vector_field_plot_data ), intent ( inout ) :: this !! The vector_field_plot_data object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_vector_field_plot_data.f90.html"},{"title":"fplot_surface_plot.f90 – FPLOT","text":"Source Code ! fplot_surface_plot.f90 module fplot_surface_plot use iso_fortran_env use fplot_plot_3d use fplot_errors use fplot_legend use fplot_surface_plot_data use strings implicit none private public :: surface_plot type , extends ( plot_3d ) :: surface_plot logical , private :: m_showHidden = . false . !! Show hidden lines? logical , private :: m_smooth = . true . !! Smooth the surface? logical , private :: m_contour = . false . !! Show a contour plot as well as the surface plot? logical , private :: m_useLighting = . false . !! Use lighting? real ( real32 ), private :: m_lightIntensity = 0.5 !! Lighting intensity (0 - 1) - default is 0.5 real ( real32 ), private :: m_specular = 0.5 !! Specular highlight intensity (0 - 1). real ( real32 ), private :: m_transparency = 1.0 !! Defines the translucency value. Must exist on (0, 1]. contains procedure , public :: initialize => surf_init procedure , public :: get_show_hidden => surf_get_show_hidden procedure , public :: set_show_hidden => surf_set_show_hidden procedure , public :: get_command_string => surf_get_cmd procedure , public :: get_allow_smoothing => surf_get_smooth procedure , public :: set_allow_smoothing => surf_set_smooth procedure , public :: get_show_contours => surf_get_show_contours procedure , public :: set_show_contours => surf_set_show_contours procedure , public :: get_use_lighting => surf_get_use_lighting procedure , public :: set_use_lighting => surf_set_use_lighting procedure , public :: get_light_intensity => surf_get_light_intensity procedure , public :: set_light_intensity => surf_set_light_intensity procedure , public :: get_specular_intensity => surf_get_specular_intensity procedure , public :: set_specular_intensity => surf_set_specular_intensity procedure , public :: get_transparency => surf_get_transparency procedure , public :: set_transparency => surf_set_transparency procedure , public :: surf_push_data generic , public :: push => surf_push_data end type contains ! ------------------------------------------------------------------------------ subroutine surf_init ( this , term , fname , err ) !! Initializes the surface_plot object. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables type ( legend ), pointer :: lgnd ! Initialize the base class call this % plot_3d % initialize ( term , fname , err ) ! Do not display the legend lgnd => this % get_legend () call lgnd % set_is_visible (. false .) end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_show_hidden ( this ) result ( x ) !! Gets a value indicating if hidden lines should be shown. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. logical :: x !! Returns true if hidden lines should be shown; else, false. x = this % m_showHidden end function ! ------------------------------------------------------------------------------ subroutine surf_set_show_hidden ( this , x ) !! Sets a value indicating if hidden lines should be shown. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. logical , intent ( in ) :: x !! Set to true if hidden lines should be shown; else, false. this % m_showHidden = x end subroutine ! ------------------------------------------------------------------------------ function surf_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot_3d !! object. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str ! class(colormap), pointer :: clr ! Initialization call str % initialize () ! Call the base routine call str % append ( this % plot % get_command_string ()) ! Hidden Stuff call str % append ( new_line ( 'a' )) if ( this % get_show_hidden ()) then call str % append ( \"unset hidden3d\" ) else call str % append ( \"set hidden3d\" ) end if ! Define the colormap ! clr => this%get_colormap() ! if (associated(clr)) then ! call str%append(new_line('a')) ! call str%append(clr%get_command_string()) ! end if ! Allow for smoothing interpolation if ( this % get_allow_smoothing ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set pm3d interpolate 0,0\" ) end if ! Draw a contour plot as well? if ( this % get_show_contours ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set contour\" ) end if ! Show colorbar ! if (.not.this%get_show_colorbar()) then ! call str%append(new_line('a')) ! call str%append(\"unset colorbox\") ! end if ! Lighting if ( this % get_use_lighting ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set pm3d lighting primary \" ) call str % append ( to_string ( this % get_light_intensity ())) call str % append ( \" specular \" ) call str % append ( to_string ( this % get_specular_intensity ())) end if ! Translucent if ( this % get_transparency () < 1.0 . and . this % get_transparency () > 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set style fill transparent solid \" ) call str % append ( to_string ( this % get_transparency ())) end if ! Call the base class to define the rest of the plot commands call str % append ( new_line ( 'a' )) call str % append ( this % plot_3d % get_command_string ()) ! Output x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ ! module function surf_get_colormap(this) result(x) ! class(surface_plot), intent(in) :: this ! class(colormap), pointer :: x ! x => this%m_colormap ! end function ! ! -------------------- ! module subroutine surf_set_colormap(this, x, err) ! ! Arguments ! class(surface_plot), intent(inout) :: this ! class(colormap), intent(in) :: x ! class(errors), intent(inout), optional, target :: err ! ! Local Variables ! integer(int32) :: flag ! class(errors), pointer :: errmgr ! type(errors), target :: deferr ! ! Initialization ! if (present(err)) then ! errmgr => err ! else ! errmgr => deferr ! end if ! ! Process ! if (associated(this%m_colormap)) deallocate(this%m_colormap) ! allocate(this%m_colormap, stat = flag, source = x) ! if (flag /= 0) then ! call errmgr%report_error(\"surf_set_colormap\", & ! \"Insufficient memory available.\", PLOT_OUT_OF_MEMORY_ERROR) ! return ! end if ! end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_smooth ( this ) result ( x ) !! Gets a value determining if the plotted surfaces should be !! smoothed. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. logical :: x !! Returns true if the surface should be smoothed; else, false. x = this % m_smooth end function ! -------------------- subroutine surf_set_smooth ( this , x ) !! Sets a value determining if the plotted surfaces should be !! smoothed. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. logical , intent ( in ) :: x !! Set to true if the surface should be smoothed; else, false. this % m_smooth = x end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_show_contours ( this ) result ( x ) !! Gets a value determining if a contour plot should be drawn in !! conjunction with the surface plot. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. logical :: x !! Returns true if the contour plot should be drawn; else, false to !! only draw the surface. x = this % m_contour end function ! -------------------- subroutine surf_set_show_contours ( this , x ) !! Sets a value determining if a contour plot should be drawn in !! conjunction with the surface plot. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. logical , intent ( in ) :: x !! Set to true if the contour plot should be drawn; else, false to !! only draw the surface. this % m_contour = x end subroutine ! ------------------------------------------------------------------------------ ! pure module function surf_get_show_colorbar(this) result(x) ! class(surface_plot), intent(in) :: this ! logical :: x ! x = this%m_showColorbar ! end function ! ! -------------------- ! module subroutine surf_set_show_colorbar(this, x) ! class(surface_plot), intent(inout) :: this ! logical, intent(in) :: x ! this%m_showColorbar = x ! end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_use_lighting ( this ) result ( x ) !! Gets a value indicating if lighting, beyond the ambient !! light source, is to be used. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. logical :: x !! True if lighting should be used; else, false. x = this % m_useLighting end function ! -------------------- subroutine surf_set_use_lighting ( this , x ) !! Sets a value indicating if lighting, beyond the ambient !! light source, is to be used. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. logical , intent ( in ) :: x !! True if lighting should be used; else, false. this % m_useLighting = x end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_light_intensity ( this ) result ( x ) !! Gets the ratio of the strength of the light source relative !! to the ambient light. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. real ( real32 ) :: x !! The light intensity ratio. x = this % m_lightIntensity end function ! -------------------- subroutine surf_set_light_intensity ( this , x ) !! Sets the ratio of the strength of the light source relative !! to the ambient light. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. real ( real32 ), intent ( in ) :: x !! The light intensity ratio. The value must exist in the !! set [0, 1]; else, it will be clipped to lie within the range. if ( x < 0.0 ) then this % m_lightIntensity = 0.0 else if ( x > 1.0 ) then this % m_lightIntensity = 1.0 else this % m_lightIntensity = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_specular_intensity ( this ) result ( x ) !! Gets the ratio of the strength of the specular light source !! relative to the ambient light. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. real ( real32 ) :: x !! The specular light intensity ratio. x = this % m_specular end function ! -------------------- subroutine surf_set_specular_intensity ( this , x ) !! Sets the ratio of the strength of the specular light source !! relative to the ambient light. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. real ( real32 ), intent ( in ) :: x !! The specular light intensity ratio. The value must exist in the !! set [0, 1]; else, it will be clipped to lie within the range. if ( x < 0.0 ) then this % m_specular = 0.0 else if ( x > 1.0 ) then this % m_specular = 1.0 else this % m_specular = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surf_get_transparency ( this ) result ( x ) !! Gets a factor defining the transparency of plotted surfaces. class ( surface_plot ), intent ( in ) :: this !! The [[surface_plot]] object. real ( real32 ) :: x !! A value existing on the set (0 1] defining the level of !! transparency. A value of 1 indicates a fully opaque surface. x = this % m_transparency end function ! -------------------- subroutine surf_set_transparency ( this , x ) !! Sets a factor defining the transparency of plotted surfaces. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. real ( real32 ), intent ( in ) :: x !! A value existing on the set (0 1] defining the level of !! transparency. A value of 1 indicates a fully opaque surface. !! Any values supplied outside of the set are clipped to fit within !! (0 1]. if ( x > 1.0 ) then this % m_transparency = 1.0 else if ( x <= 0.0 ) then this % m_transparency = 0.1 else this % m_transparency = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine surf_push_data ( this , x , y , z ) !! Adds a data set to the plot. class ( surface_plot ), intent ( inout ) :: this !! The [[surface_plot]] object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! An M-by-N matrix containing the x-coordinate data. real ( real64 ), intent ( in ), dimension ( size ( x , 1 ), size ( x , 2 )) :: y !! An M-by-N matrix containing the y-coordinate data. real ( real64 ), intent ( in ), dimension ( size ( x , 1 ), size ( x , 2 )) :: z !! An M-by-N matrix containing the z-coordinate data. type ( surface_plot_data ) :: pd call pd % define_data ( x , y , z ) call this % push ( pd ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_surface_plot.f90.html"},{"title":"fplot_plot_data.f90 – FPLOT","text":"Source Code ! fplot_plot_data.f90 module fplot_plot_data use iso_fortran_env use fplot_plot_object use fplot_constants use fplot_colors use strings use fplot_errors implicit none private public :: plot_data public :: pd_get_string_result public :: pd_clear_action public :: plot_data_colored public :: scatter_plot_data public :: line_plot_data public :: spd_get_int_value public :: spd_get_string_result public :: spd_get_value public :: spd_set_value public :: lpd_get_cmd public :: spd_get_cmd type , abstract , extends ( plot_object ) :: plot_data !! A container for plot data. private character ( len = PLOTDATA_MAX_NAME_LENGTH ) :: m_name = \"\" !! The name to associate with the data set. character ( len = PLOTDATA_MAX_NAME_LENGTH ) :: m_datablockName = \"\" !! The name to associate with the datablock used to store the data !! in the actual plot file. contains procedure , public :: get_name => pd_get_name procedure , public :: set_name => pd_set_name procedure , public :: get_datablock_name => pd_get_datablock_name procedure , public :: set_datablock_name => pd_set_datablock_name procedure , public :: create_unique_datablock_name => & pd_create_unique_datablock_name procedure , public :: clear_all => pd_clear procedure ( pd_get_string_result ), deferred , public :: get_data_string procedure ( pd_clear_action ), deferred , public :: clear_data end type interface function pd_get_string_result ( this ) result ( x ) !! Retrieves a string from a plot_data object. import plot_data class ( plot_data ), intent ( in ) :: this !! The plot_data object. character ( len = :), allocatable :: x !! The string. end function subroutine pd_clear_action ( this ) !! Performs a clearing operation. import plot_data class ( plot_data ), intent ( inout ) :: this !! The plot_data object. end subroutine end interface type , abstract , extends ( plot_data ) :: plot_data_colored !! Defines a colored plot data set. private type ( color ) :: m_color = CLR_BLUE !! The line color. logical :: m_useAutoColor = . true . !! Let the object choose colors automatically? integer ( int32 ) :: m_colorIndex = 1 !! The color index to use, assuming we're using auto color contains procedure , public :: get_line_color => pdc_get_line_color procedure , public :: set_line_color => pdc_set_line_color procedure , public :: get_color_index => pdc_get_color_index procedure , public :: set_color_index => pdc_set_color_index end type type , abstract , extends ( plot_data_colored ) :: line_plot_data !! A plot_data object for describing line series data. logical , private :: m_drawLine = . true . !! Draw a line connecting the dots? logical , private :: m_drawMarkers = . false . !! Draw the markers? real ( real32 ), private :: m_lineWidth = 2.0 !! Line width. integer ( int32 ), private :: m_lineStyle = LINE_SOLID !! Line style. integer ( int32 ), private :: m_markerType = MARKER_FILLED_CIRCLE !! Marker type. real ( real32 ), private :: m_markerSize = 1.5 !! Marker size multiplier. integer ( int32 ), private :: m_markerFrequency = 1 !! Marker frequency. logical , private :: m_impulses = . false . !! Draw the impulse lines? contains procedure , public :: get_command_string => lpd_get_cmd procedure , public :: get_line_width => lpd_get_line_width procedure , public :: set_line_width => lpd_set_line_width procedure , public :: get_line_style => lpd_get_line_style procedure , public :: set_line_style => lpd_set_line_style procedure , public :: get_draw_line => lpd_get_draw_line procedure , public :: set_draw_line => lpd_set_draw_line procedure , public :: get_draw_markers => lpd_get_draw_markers procedure , public :: set_draw_markers => lpd_set_draw_markers procedure , public :: get_marker_style => lpd_get_marker_style procedure , public :: set_marker_style => lpd_set_marker_style procedure , public :: get_marker_scaling => lpd_get_marker_scaling procedure , public :: set_marker_scaling => lpd_set_marker_scaling procedure , public :: get_marker_frequency => lpd_get_marker_frequency procedure , public :: set_marker_frequency => lpd_set_marker_frequency procedure , public :: get_draw_impulses => lpd_get_draw_impulse_lines procedure , public :: set_draw_impulses => lpd_set_draw_impulse_lines end type type , abstract , extends ( line_plot_data ) :: scatter_plot_data !! A plot_data object for describing scatter plot data sets. logical , private :: m_simplifyData = . true . !! True if large data sets should be simplified before sending to !! GNUPLOT. real ( real64 ), private :: m_simplifyFactor = 1.0d-3 !! A scaling factor used to establish the simplification tolerance. !! The simplification tolerance is established by multiplying this !! factor by the range in the dependent variable data. logical , private :: m_dataDependentColors = . false . !! Determines if the data should utilize data-dependent colors. logical , private :: m_filledCurve = . false . !! Fill the curve? logical , private :: m_useVariableSizePoints = . false . !! Use variable size data points? contains procedure , public :: get_command_string => spd_get_cmd procedure ( spd_get_int_value ), deferred , public :: get_count procedure ( spd_get_value ), deferred , public :: get_x procedure ( spd_set_value ), deferred , public :: set_x procedure ( spd_get_value ), deferred , public :: get_y procedure ( spd_set_value ), deferred , public :: set_y procedure ( spd_get_string_result ), deferred , public :: get_axes_string procedure , public :: get_simplify_data => spd_get_simplify_data procedure , public :: set_simplify_data => spd_set_simplify_data procedure , public :: get_simplification_factor => spd_get_simplify_factor procedure , public :: set_simplification_factor => spd_set_simplify_factor procedure , public :: get_use_data_dependent_colors => & spd_get_data_dependent_colors procedure , public :: set_use_data_dependent_colors => & spd_set_data_dependent_colors procedure , public :: get_fill_curve => spd_get_filled procedure , public :: set_fill_curve => spd_set_filled procedure , public :: get_use_variable_size_points => spd_get_use_var_point_size procedure , public :: set_use_variable_size_points => spd_set_use_var_point_size end type interface pure function spd_get_value ( this , index ) result ( x ) !! Gets an indexed value from the scatter_plot_data object. use , intrinsic :: iso_fortran_env , only : int32 , real64 import scatter_plot_data class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. integer ( int32 ), intent ( in ) :: index !! The index. real ( real64 ) :: x !! The value. end function subroutine spd_set_value ( this , index , x ) !! Sets an indexed value from the scatter_plot_data object. use , intrinsic :: iso_fortran_env , only : int32 , real64 import scatter_plot_data class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. integer ( int32 ), intent ( in ) :: index !! The index. real ( real64 ), intent ( in ) :: x !! The value. end subroutine pure function spd_get_int_value ( this ) result ( x ) !! Gets an integer value from the scatter_plot_data object. use , intrinsic :: iso_fortran_env , only : int32 import scatter_plot_data class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. integer ( int32 ) :: x !! The value. end function function spd_get_string_result ( this ) result ( x ) !! Gets a string value from the scatter_plot_data object. import scatter_plot_data class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. character ( len = :), allocatable :: x !! The string. end function end interface contains ! ------------------------------------------------------------------------------ pure function pd_get_name ( this ) result ( txt ) !! Gets the name to associate with this data set. class ( plot_data ), intent ( in ) :: this !! The plot_data object. character ( len = :), allocatable :: txt !! The name. txt = trim ( this % m_name ) end function ! -------------------- subroutine pd_set_name ( this , txt ) !! Sets the name to associate with this data set. class ( plot_data ), intent ( inout ) :: this !! The plot_data object. character ( len = * ), intent ( in ) :: txt !! The name. integer ( int32 ) :: n n = min ( len ( txt ), PLOTDATA_MAX_NAME_LENGTH ) this % m_name = \"\" if ( n /= 0 ) then this % m_name ( 1 : n ) = txt ( 1 : n ) end if end subroutine ! ------------------------------------------------------------------------------ pure function pd_get_datablock_name ( this ) result ( rst ) !! Gets the name to associate with the datablock in the actual GNUPLOT !! plot file. class ( plot_data ), intent ( in ) :: this !! The plot_data object. character ( len = :), allocatable :: rst !! The name. rst = trim ( this % m_datablockName ) end function ! -------------------- subroutine pd_set_datablock_name ( this , x ) !! Sets the name to associate with the datablock in the actual GNUPLOT !! plot file. class ( plot_data ), intent ( inout ) :: this !! The plot_data object. character ( len = * ), intent ( in ) :: x !! The name. integer ( int32 ) :: n n = min ( len ( x ), PLOTDATA_MAX_NAME_LENGTH ) this % m_datablockName = \"\" if ( n /= 0 ) then this % m_datablockName ( 1 : n ) = x ( 1 : n ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine pd_create_unique_datablock_name ( this ) !! Creates a unique name for the GNUPLOT datablock representing this !! data set. class ( plot_data ), intent ( inout ) :: this !! The plot_data object. type ( string ) :: str real ( real64 ) :: r , rng integer ( int32 ) :: count call random_seed () call random_number ( r ) r = r * huge ( count ) count = floor ( r ) str = \"PlotData\" // to_string ( count ) call this % set_datablock_name ( char ( str )) end subroutine ! ------------------------------------------------------------------------------ subroutine pd_clear ( this ) !! Clears the data set by removing stored data and clearing the !! GNUPLOT datablock name. This routine also calls clear_data to !! ensure the data is cleared from the data set as well as the datablock !! name. class ( plot_data ), intent ( inout ) :: this !! The plot_data object. call this % set_datablock_name ( \"\" ) call this % clear_data () end subroutine ! ****************************************************************************** ! PLOT_DATA_COLORED ! ------------------------------------------------------------------------------ pure function pdc_get_line_color ( this ) result ( x ) !! Gets the object color. class ( plot_data_colored ), intent ( in ) :: this !! The plot_data_colored object. type ( color ) :: x !! The color. if ( this % m_useAutoColor ) then x = color_list ( this % get_color_index ()) else x = this % m_color end if end function ! -------------------- subroutine pdc_set_line_color ( this , x ) !! Sets the object color. class ( plot_data_colored ), intent ( inout ) :: this !! The plot_data_colored object. type ( color ), intent ( in ) :: x !! The color. this % m_color = x this % m_useAutoColor = . false . end subroutine ! ------------------------------------------------------------------------------ pure function pdc_get_color_index ( this ) result ( x ) !! Gets the color index. class ( plot_data_colored ), intent ( in ) :: this !! The plot_data_colored object. integer ( int32 ) :: x !! The index value. x = this % m_colorIndex end function ! -------------------- subroutine pdc_set_color_index ( this , x ) !! Sets the color index. class ( plot_data_colored ), intent ( inout ) :: this !! The plot_data_colored object. integer ( int32 ), intent ( in ) :: x !! The index value. this % m_colorIndex = x end subroutine ! ****************************************************************************** ! LINE_PLOT_DATA ! ------------------------------------------------------------------------------ pure function lpd_get_line_width ( this ) result ( x ) !! Gets the width of the line, in pixels. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. real ( real32 ) :: x !! The line width. x = this % m_lineWidth end function ! -------------------- subroutine lpd_set_line_width ( this , x ) !! Sets the width of the line, in pixels. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_lineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_line_style ( this ) result ( x ) !! Gets the line style. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_lineStyle end function ! -------------------- subroutine lpd_set_line_style ( this , x ) !! Sets the line style. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_lineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_draw_line ( this ) result ( x ) !! Gets a value determining if a line should be drawn. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. logical :: x !! Returns true if the line should be drawn; else, false. x = this % m_drawLine end function ! -------------------- subroutine lpd_set_draw_line ( this , x ) !! Sets a value determining if a line should be drawn. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. logical , intent ( in ) :: x !! Set to true if the line should be drawn; else, false. this % m_drawLine = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_draw_markers ( this ) result ( x ) !! Gets a value determining if data point markers should be drawn. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. logical :: x !! Returns true if the markers should be drawn; else, false. x = this % m_drawMarkers end function ! -------------------- subroutine lpd_set_draw_markers ( this , x ) !! Sets a value determining if data point markers should be drawn. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. logical , intent ( in ) :: x !! Set to true if the markers should be drawn; else, false. this % m_drawMarkers = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_marker_style ( this ) result ( x ) !! Gets the marker style. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. integer ( int32 ) :: x !! The marker type. The marker type must be one of the following: !! !! - MARKER_ASTERISK !! !! - MARKER_EMPTY_CIRCLE !! !! - MARKER_EMPTY_NABLA !! !! - MARKER_EMPTY_RHOMBUS !! !! - MARKER_EMPTY_SQUARE !! !! - MARKER_EMPTY_TRIANGLE !! !! - MARKER_FILLED_CIRCLE !! !! - MARKER_FILLED_NABLA !! !! - MARKER_FILLED_RHOMBUS !! !! - MARKER_FILLED_SQUARE !! !! - MARKER_FILLED_TRIANGLE !! !! - MARKER_PLUS !! !! - MARKER_X x = this % m_markerType end function ! -------------------- subroutine lpd_set_marker_style ( this , x ) !! Sets the marker style. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. integer ( int32 ), intent ( in ) :: x !! The marker type. The marker type must be one of the following: !! !! - MARKER_ASTERISK !! !! - MARKER_EMPTY_CIRCLE !! !! - MARKER_EMPTY_NABLA !! !! - MARKER_EMPTY_RHOMBUS !! !! - MARKER_EMPTY_SQUARE !! !! - MARKER_EMPTY_TRIANGLE !! !! - MARKER_FILLED_CIRCLE !! !! - MARKER_FILLED_NABLA !! !! - MARKER_FILLED_RHOMBUS !! !! - MARKER_FILLED_SQUARE !! !! - MARKER_FILLED_TRIANGLE !! !! - MARKER_PLUS !! !! - MARKER_X if ( x == MARKER_ASTERISK . or . & x == MARKER_EMPTY_CIRCLE . or . & x == MARKER_EMPTY_NABLA . or . & x == MARKER_EMPTY_RHOMBUS . or . & x == MARKER_EMPTY_SQUARE . or . & x == MARKER_EMPTY_TRIANGLE . or . & x == MARKER_FILLED_CIRCLE . or . & x == MARKER_FILLED_NABLA . or . & x == MARKER_FILLED_RHOMBUS . or . & x == MARKER_FILLED_SQUARE . or . & x == MARKER_FILLED_TRIANGLE . or . & x == MARKER_PLUS . or . & x == MARKER_X ) then ! Only alter the value if the marker is a known type this % m_markerType = x end if end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_marker_scaling ( this ) result ( x ) !! Gets the marker scaling. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. real ( real32 ) :: x !! The scaling factor. x = this % m_markerSize end function ! -------------------- subroutine lpd_set_marker_scaling ( this , x ) !! Sets the marker scaling. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. real ( real32 ), intent ( in ) :: x !! The scaling factor. this % m_markerSize = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_marker_frequency ( this ) result ( x ) !! Gets the marker frequency. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. integer ( int32 ) :: x !! The marker frequency. x = this % m_markerFrequency end function ! -------------------- subroutine lpd_set_marker_frequency ( this , x ) !! Sets the marker frequency. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. integer ( int32 ), intent ( in ) :: x !! The marker frequency. this % m_markerFrequency = x end subroutine ! ------------------------------------------------------------------------------ pure function lpd_get_draw_impulse_lines ( this ) result ( x ) !! Gets a value determining if impulse lines should be drawn. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. logical :: x !! True if impulse lines should be drawn; else, false. x = this % m_impulses end function ! -------------------- subroutine lpd_set_draw_impulse_lines ( this , x ) !! Sets a value determining if impulse lines should be drawn. class ( line_plot_data ), intent ( inout ) :: this !! The line_plot_data object. logical , intent ( in ) :: x !! True if impulse lines should be drawn; else, false. this % m_impulses = x end subroutine ! ------------------------------------------------------------------------------ function lpd_get_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string to represent this line_plot_data !! object. class ( line_plot_data ), intent ( in ) :: this !! The line_plot_data object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Lines or points if ( this % get_draw_impulses ()) then call str % append ( \" with impulses\" ) else if ( this % get_draw_line () . and . this % get_draw_markers ()) then call str % append ( \" with linespoints\" ) else if (. not . this % get_draw_line () . and . this % get_draw_markers ()) then call str % append ( \" with points\" ) else call str % append ( \" with lines\" ) end if end if ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Line Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Define other properties specific to the lines and points if ( this % get_draw_line ()) then call str % append ( \" lt \" ) call str % append ( to_string ( this % get_line_style ())) if ( this % get_line_style () /= LINE_SOLID ) then call str % append ( \" dashtype \" ) call str % append ( to_string ( this % get_line_style ())) end if end if if ( this % get_draw_markers ()) then call str % append ( \" pi \" ) call str % append ( to_string ( this % get_marker_frequency ())) call str % append ( \" pt \" ) call str % append ( to_string ( this % get_marker_style ())) call str % append ( \" ps \" ) call str % append ( to_string ( this % get_marker_scaling ())) end if ! End rst = char ( str % to_string ()) end function ! ****************************************************************************** ! SCATTER_PLOT_DATA ! ------------------------------------------------------------------------------ function spd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this !! scatter_plot_data object. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Lines, points, or filled if ( this % get_fill_curve ()) then call str % append ( \" with filledcurves\" ) else if ( this % get_draw_impulses ()) then call str % append ( \" with impulses\" ) else if ( this % get_draw_line () . and . this % get_draw_markers ()) then call str % append ( \" with linespoints\" ) else if (. not . this % get_draw_line () . and . this % get_draw_markers ()) then call str % append ( \" with points\" ) else call str % append ( \" with lines\" ) end if end if ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Line Color if ( this % get_use_data_dependent_colors ()) then ! http://www.gnuplotting.org/using-a-palette-as-line-color/ call str % append ( \" lc palette\" ) else clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) end if ! Define other properties specific to the lines and points if ( this % get_draw_line ()) then call str % append ( \" lt \" ) call str % append ( to_string ( this % get_line_style ())) if ( this % get_line_style () /= LINE_SOLID ) then call str % append ( \" dashtype \" ) call str % append ( to_string ( this % get_line_style ())) end if end if if ( this % get_draw_markers ()) then call str % append ( \" pi \" ) call str % append ( to_string ( this % get_marker_frequency ())) call str % append ( \" pt \" ) call str % append ( to_string ( this % get_marker_style ())) call str % append ( \" ps \" ) if ( this % get_use_variable_size_points ()) then call str % append ( \"variable\" ) else call str % append ( to_string ( this % get_marker_scaling ())) end if end if ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function spd_get_simplify_data ( this ) result ( x ) !! Gets a value determining if the stored data should be !! simplified (reduced) before passing to GNUPLOT. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: x !! True if the data should be simplified prior to sending !! to GNUPLOT; else, false to leave the data alone. x = this % m_simplifyData end function ! -------------------- subroutine spd_set_simplify_data ( this , x ) !! Sets a value determining if the stored data should be !! simplified (reduced) before passing to GNUPLOT. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. logical , intent ( in ) :: x !! True if the data should be simplified prior to sending !! to GNUPLOT; else, false to leave the data alone. this % m_simplifyData = x end subroutine ! ------------------------------------------------------------------------------ pure function spd_get_simplify_factor ( this ) result ( x ) !! Gets a factor used to establish the simplification tolerance. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. real ( real64 ) :: x !! The scaling factor. x = this % m_simplifyFactor end function ! -------------------- subroutine spd_set_simplify_factor ( this , x ) !! Sets a factor used to establish the simplification tolerance. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. real ( real64 ), intent ( in ) :: x !! The scaling factor. this % m_simplifyFactor = x end subroutine ! ------------------------------------------------------------------------------ pure function spd_get_data_dependent_colors ( this ) result ( rst ) !! Gets a value determing if data-dependent colors should be used. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: rst !! True if data-dependent colors should be used; else, false. rst = this % m_dataDependentColors end function ! -------------------- subroutine spd_set_data_dependent_colors ( this , x ) !! Sets a value determing if data-dependent colors should be used. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. logical , intent ( in ) :: x !! True if data-dependent colors should be used; else, false. this % m_dataDependentColors = x end subroutine ! ****************************************************************************** ! ADDED: JUNE 28, 2021 - JAC ! ------------------------------------------------------------------------------ pure function spd_get_filled ( this ) result ( rst ) !! Gets a logical value determining if a filled curve should be drawn. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: rst !! True if the curve should be filled; else, false. rst = this % m_filledCurve end function ! -------------------- subroutine spd_set_filled ( this , x ) !! Sets a logical value determining if a filled curve should be drawn. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. logical , intent ( in ) :: x !! True if the curve should be filled; else, false. this % m_filledCurve = x end subroutine ! ****************************************************************************** ! ADDED: JAN 12, 2024 - JAC ! ------------------------------------------------------------------------------ pure function spd_get_use_var_point_size ( this ) result ( rst ) !! Gets a logical value determining if variable sized data points !! should be used. The default is false, such that points will be of !! a constant size. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: rst !! True if variable size points should be used; else, false. rst = this % m_useVariableSizePoints end function ! -------------------- subroutine spd_set_use_var_point_size ( this , x ) !! Sets a logical value determining if variable sized data points !! should be used. The default is false, such that points will be of !! a constant size. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. logical , intent ( in ) :: x !! True if variable size points should be used; else, false. this % m_useVariableSizePoints = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data.f90.html"},{"title":"fplot_plot_axis.f90 – FPLOT","text":"Source Code ! fplot_plot_axis.f90 module fplot_plot_axis use iso_fortran_env use fplot_plot_object use fplot_constants use strings implicit none private public :: plot_axis public :: pa_get_string_result public :: x_axis public :: y_axis public :: y2_axis public :: z_axis public :: name_value_pair type name_value_pair !! Defines a name-value pair. character ( len = :), allocatable :: name !! The name. real ( real64 ) :: value !! The associated value. end type type , abstract , extends ( plot_object ) :: plot_axis !! Defines a plot axis object. logical , private :: m_hasTitle = . false . !! Has a title? character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_title = \"\" !! Axis title. logical , private :: m_autoscale = . true . !! Autoscale? real ( real64 ), private , dimension ( 2 ) :: m_limits = [ 0.0d0 , 1.0d0 ] !! Display limits. logical , private :: m_logScale = . false . !! Log scaled? logical , private :: m_zeroAxis = . false . !! Has a zero axis? real ( real32 ), private :: m_axisWidth = 1.5 !! The width, in pixels, of the zero-axis line. logical , private :: m_defaultTicLabels = . true . !! Use default tic label format? character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_ticLabelFmt = \"%g\" !! The tic lablel format. logical , private :: m_showTicLabels = . true . !! Show tic labels? integer ( int32 ), private :: m_ticXOffset = 0 !! The tic label x-offset, in characters. integer ( int32 ), private :: m_ticYOffset = 0 !! The tic label y-offset, in characters. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: & m_ticLabelAlignment = GNUPLOT_HORIZONTAL_ALIGN_CENTER !! The tic label alignment. !! !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT !! !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER !! !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT logical , private :: m_offsetTics = . false . !! Offset tics? real ( real32 ), private :: m_ticLabelAngle = 0.0 !! The tic label angle, in degrees. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_ticRotationOrigin = & GNUPLOT_ROTATION_ORIGIN_CENTER !! The tic label rotation origin. !! !! - GNUPLOT_ROTATION_ORIGIN_RIGHT !! !! - GNUPLOT_ROTATION_ORIGIN_LEFT !! !! - GNUPLOT_ROTATION_ORIGIN_CENTER integer ( int32 ), private :: m_titleXOffset = 0 !! The axis title x offset, in characters. integer ( int32 ), private :: m_titleYOffset = 0 !! The axis title y offset, in characters. logical , private :: m_useManualTicLabels = . false . !! Use manual (user-defined) tic labels? type ( name_value_pair ), private , allocatable , dimension (:) :: m_ticLabels !! A list of user-defined tic labels. real ( real32 ), private :: m_titleAngle = 0.0 !! The angle at which to rotate the axis title. logical , private :: m_autoCalcTitleAngle = . true . !! True if GNUPLOT should automatically rotate the title; else, !! false if the m_titleAngle property should determine the angle. contains procedure , public :: get_title => pa_get_title procedure , public :: set_title => pa_set_title procedure , public :: is_title_defined => pa_has_title procedure , public :: get_autoscale => pa_get_autoscale procedure , public :: set_autoscale => pa_set_autoscale procedure , public :: get_limits => pa_get_axis_limits procedure , public :: set_limits => pa_set_axis_limits procedure , public :: get_is_log_scaled => pa_get_log_scale procedure , public :: set_is_log_scaled => pa_set_log_scale procedure , public :: get_command_string => pa_get_cmd_string procedure , public :: get_zero_axis => pa_get_zero_axis procedure , public :: set_zero_axis => pa_set_zero_axis procedure , public :: get_zero_axis_line_width => pa_get_zero_axis_width procedure , public :: set_zero_axis_line_width => pa_set_zero_axis_width procedure ( pa_get_string_result ), deferred , public :: get_id_string procedure , public :: get_use_default_tic_label_format => & pa_get_use_dft_tic_lbl_fmt procedure , public :: set_use_default_tic_label_format => & pa_set_use_dft_tic_lbl_fmt procedure , public :: get_tic_label_format => pa_get_tic_label_fmt procedure , public :: set_tic_label_format => pa_set_tic_label_fmt procedure , public :: get_show_tic_labels => pa_get_show_tic_labels procedure , public :: set_show_tic_labels => pa_set_show_tic_labels procedure , public :: get_tic_label_x_offset => pa_get_tic_x_offset procedure , public :: set_tic_label_x_offset => pa_set_tic_x_offset procedure , public :: get_tic_label_y_offset => pa_get_tic_y_offset procedure , public :: set_tic_label_y_offset => pa_set_tic_y_offset procedure , public :: get_tic_label_angle => pa_get_tic_label_angle procedure , public :: set_tic_label_angle => pa_set_tic_label_angle procedure , public :: get_tic_label_rotation_origin => & pa_get_tic_rotation_origin procedure , public :: set_tic_label_rotation_origin => & pa_set_tic_rotation_origin procedure , public :: get_tic_label_alignment => & pa_get_tic_label_alignment procedure , public :: set_tic_label_alignment => & pa_set_tic_label_alignment procedure , public :: get_offset_tics => pa_get_offset_tics procedure , public :: set_offset_tics => pa_set_offset_tics procedure , public :: get_title_x_offset => pa_get_title_x_offset procedure , public :: set_title_x_offset => pa_set_title_x_offset procedure , public :: get_title_y_offset => pa_get_title_y_offset procedure , public :: set_title_y_offset => pa_set_title_y_offset procedure , public :: get_title_angle => pa_get_title_angle procedure , public :: set_title_angle => pa_set_title_angle procedure , public :: get_auto_calculate_title_angle => & pa_get_auto_calc_title_angle procedure , public :: set_auto_calculate_title_angle => & pa_set_auto_calc_title_angle procedure , public :: get_use_manual_tic_labels => & pa_get_use_manual_tic_labels procedure , public :: set_use_manual_tic_labels => & pa_set_use_manual_tic_labels procedure , public :: get_manual_tic_labels => pa_get_manual_tic_labels procedure , public :: set_manual_tic_labels => pa_set_manual_tic_labels end type interface function pa_get_string_result ( this ) result ( x ) !! Retrieves a string from a plot_axis. import plot_axis class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: x !! The string. end function end interface type , extends ( plot_axis ) :: x_axis !! Defines an x-axis object. character , private :: m_id = \"x\" !! The ID character. contains procedure , public :: get_id_string => xa_get_id end type type , extends ( plot_axis ) :: y_axis !! Defines a y-axis object. character , private :: m_id = \"y\" !! The ID character. contains procedure , public :: get_id_string => ya_get_id end type type , extends ( plot_axis ) :: y2_axis !! Defines a secondary y-axis object. character ( len = 2 ), private :: m_id = \"y2\" !! The ID character. contains procedure , public :: get_id_string => y2a_get_id end type type , extends ( plot_axis ) :: z_axis !! Defines a z-axis object. character , private :: m_id = \"z\" !! The ID character. contains procedure , public :: get_id_string => za_get_id end type contains ! ------------------------------------------------------------------------------ function pa_get_title ( this ) result ( txt ) !! Gets the axis title. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: txt !! The title. integer ( int32 ) :: n n = len_trim ( this % m_title ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_title ) end function ! -------------------- subroutine pa_set_title ( this , txt ) !! Sets the axis title. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. character ( len = * ), intent ( in ) :: txt !! The title. ! Local Variables integer ( int32 ) :: n ! Process n = min ( len_trim ( txt ), PLOTDATA_MAX_NAME_LENGTH ) this % m_title = \"\" if ( n /= 0 ) then this % m_title ( 1 : n ) = txt ( 1 : n ) this % m_hasTitle = . true . else this % m_hasTitle = . false . end if end subroutine ! ------------------------------------------------------------------------------ pure function pa_has_title ( this ) result ( x ) !! Gets a value determining if a title has been defined for this axis. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true if a title has been defined; else, false. x = this % m_hasTitle end function ! ------------------------------------------------------------------------------ pure function pa_get_autoscale ( this ) result ( x ) !! Gets a value determining if the axis should be automatically scaled !! to fit the data. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true if the axis should be automatically scaled; else, !! false. x = this % m_autoscale end function ! -------------------- subroutine pa_set_autoscale ( this , x ) !! Sets a value determining if the axis should be automatically scaled !! to fit the data. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true if the axis should be automatically scaled; else, !! set to false. this % m_autoscale = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_axis_limits ( this ) result ( x ) !! Gets the axis display limits, assuming autoscaling is not !! active for this axis. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. real ( real64 ), dimension ( 2 ) :: x !! A two-element array containing the limits as follows: !! [lower, upper]. x ( 1 ) = minval ( this % m_limits ) x ( 2 ) = maxval ( this % m_limits ) end function ! -------------------- subroutine pa_set_axis_limits ( this , lower , upper ) !! Gets the axis display limits, assuming autoscaling is not !! active for this axis. This routine also calls set_autoscale and !! sets the property value to false. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. real ( real64 ), intent ( in ) :: lower !! The lower display limit. real ( real64 ), intent ( in ) :: upper !! The upper display limit. this % m_limits ( 1 ) = min ( lower , upper ) this % m_limits ( 2 ) = max ( lower , upper ) call this % set_autoscale (. false .) end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_log_scale ( this ) result ( x ) !! Gets a logical value defining if the axis should be log scaled. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true if log scaling is applied to the axis; else, false. x = this % m_logScale end function ! -------------------- subroutine pa_set_log_scale ( this , x ) !! Sets a logical value defining if the axis should be log scaled. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true if log scaling is applied to the axis; else, false. this % m_logScale = x end subroutine ! ------------------------------------------------------------------------------ function pa_get_cmd_string ( this ) result ( txt ) !! Returns the appropriate GNUPLOT command string to define the !! plot_axis properties. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: txt !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str real ( real32 ) :: angle character ( len = :), allocatable :: axis , fmt real ( real64 ) :: lim ( 2 ) integer ( int32 ) :: i type ( name_value_pair ), allocatable , dimension (:) :: ticLabels ! Process axis = this % get_id_string () fmt = this % get_tic_label_format () lim = this % get_limits () call str % initialize () ! Formatting if (. not . this % get_use_default_tic_label_format ()) then call str % append ( \"set format \" ) call str % append ( axis ) call str % append ( '\"' ) call str % append ( fmt ) call str % append ( '\"' ) call str % append ( new_line ( 'a' )) end if ! Show Tic Labels? if ( this % get_show_tic_labels ()) then call str % append ( \"set \" ) else call str % append ( \"unset \" ) end if call str % append ( axis ) call str % append ( \"tics\" ) call str % append ( new_line ( 'a' )) ! Tic Label Offsets if ( this % get_show_tic_labels () . and . this % get_offset_tics ()) then call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"tics \" ) call str % append ( this % get_tic_label_alignment ()) call str % append ( \" offset \" ) call str % append ( to_string ( this % get_tic_label_x_offset ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_tic_label_y_offset ())) call str % append ( new_line ( 'a' )) end if ! Tic Label Rotation angle = this % get_tic_label_angle () if ( this % get_show_tic_labels () . and . angle /= 0.0 ) then call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"tics rotate by \" ) call str % append ( to_string ( angle )) call str % append ( \" \" ) call str % append ( this % get_tic_label_rotation_origin ()) call str % append ( new_line ( 'a' )) end if ! Axis Limits if ( this % get_autoscale ()) then call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"range [*:*]\" ) else call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"range [\" ) call str % append ( to_string ( lim ( 1 ))) call str % append ( \":\" ) call str % append ( to_string ( lim ( 2 ))) call str % append ( \"]\" ) end if ! Titles call str % append ( new_line ( 'a' )) if ( this % is_title_defined ()) then ! Title call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"label \" ) call str % append ( '\"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) ! Rotation if (. not . this % get_auto_calculate_title_angle ()) then call str % append ( \" rotate by \" ) call str % append ( to_string ( this % get_title_angle ())) end if ! Offsets if ( this % get_title_x_offset () /= 0 . or . & this % get_title_y_offset () /= 0 ) & then call str % append ( \" offset \" ) call str % append ( to_string ( this % get_title_x_offset ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_title_y_offset ())) end if else call str % append ( \"set \" ) call str % append ( axis ) call str % append ( \"label \" ) call str % append ( '\"\"' ) end if call str % append ( new_line ( 'a' )) ! Scaling call str % append ( new_line ( 'a' )) if ( this % get_is_log_scaled ()) then call str % append ( \"set log \" ) call str % append ( axis ) else call str % append ( \"unset log \" ) call str % append ( axis ) end if ! Zero Axis if ( this % get_zero_axis ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set \" ) call str % append ( this % get_id_string ()) call str % append ( \"zeroaxis linestyle -1 linewidth \" ) call str % append ( to_string ( this % get_zero_axis_line_width ())) end if ! Use manual labels ticLabels = this % get_manual_tic_labels () if ( this % get_use_manual_tic_labels () . and . size ( ticLabels ) > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set \" ) call str % append ( this % get_id_string () // \"tics(\" ) do i = 1 , size ( ticLabels ) call str % append ( '\"' ) call str % append ( ticLabels ( i )% name ) call str % append ( '\" ' ) call str % append ( to_string ( ticLabels ( i )% value )) if ( i /= size ( ticLabels )) call str % append ( \", \" ) end do call str % append ( \")\" ) end if ! Output txt = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function pa_get_zero_axis ( this ) result ( x ) !! Gets a value determining if the axis should be drawn through !! zero of opposing axes. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true to draw as a zero axis; else, set to false. x = this % m_zeroAxis end function ! -------------------- subroutine pa_set_zero_axis ( this , x ) !! Sets a value determining if the axis should be drawn through !! zero of opposing axes. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true to draw as a zero axis; else, set to false. this % m_zeroAxis = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_zero_axis_width ( this ) result ( x ) !! Gets the width of the line used to represent the zero axis line, if !! active. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. real ( real32 ) :: x !! The width of the line, in pixels. x = this % m_axisWidth end function ! -------------------- subroutine pa_set_zero_axis_width ( this , x ) !! Sets the width of the line used to represent the zero axis line, if !! active. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. real ( real32 ), intent ( in ) :: x !! The width of the line, in pixels. this % m_axisWidth = x end subroutine ! ADDED March 29, 2023 - JAC ! ------------------------------------------------------------------------------ pure function pa_get_use_dft_tic_lbl_fmt ( this ) result ( rst ) !! Gets a value determining if the default tic label format will be !! used. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: rst !! Returns true if the default tic label format will be used; else, !! false. rst = this % m_defaultTicLabels end function ! -------------------- subroutine pa_set_use_dft_tic_lbl_fmt ( this , x ) !! Sets a value determining if the default tic label format will be !! used. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true if the default tic label format will be used; else, !! false. this % m_defaultTicLabels = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_label_fmt ( this ) result ( rst ) !! Gets the tic label format. The format string can be any format !! string accepted by the C command 'printf.' class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: rst !! The tic label format string. rst = trim ( this % m_ticLabelFmt ) end function ! -------------------- subroutine pa_set_tic_label_fmt ( this , x ) !! Sets the tic label format. The format string can be any format !! string accepted by the C command 'printf.' class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. character ( len = * ), intent ( in ) :: x !! The tic label format string. this % m_ticLabelFmt = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_show_tic_labels ( this ) result ( x ) !! Gets a value determining if tic labels should be shown. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true to show tic labels; else, set to false. x = this % m_showTicLabels end function ! -------------------- subroutine pa_set_show_tic_labels ( this , x ) !! Sets a value determining if tic labels should be shown. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true to show tic labels; else, set to false. this % m_showTicLabels = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_x_offset ( this ) result ( x ) !! Gets the tic label x-offset, in characters. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. integer ( int32 ) :: x !! The tic label x-offset, in characters. x = this % m_ticXOffset end function ! -------------------- subroutine pa_set_tic_x_offset ( this , x ) !! Sets the tic label x-offset, in characters. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. integer ( int32 ), intent ( in ) :: x !! The tic label x-offset, in characters. this % m_ticXOffset = x call this % set_offset_tics (. true .) end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_y_offset ( this ) result ( x ) !! Gets the tic label y-offset, in characters. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. integer ( int32 ) :: x !! The tic label y-offset, in characters. x = this % m_ticYOffset end function ! -------------------- subroutine pa_set_tic_y_offset ( this , x ) !! Sets the tic label y-offset, in characters. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. integer ( int32 ), intent ( in ) :: x !! The tic label y-offset, in characters. this % m_ticYOffset = x call this % set_offset_tics (. true .) end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_label_angle ( this ) result ( x ) !! Gets the tic label angle, in degrees. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. real ( real32 ) :: x !! The tic label angle, in degrees. x = this % m_ticLabelAngle end function ! -------------------- subroutine pa_set_tic_label_angle ( this , x ) !! Sets the tic label angle, in degrees. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. real ( real32 ), intent ( in ) :: x !! The tic label angle, in degrees. this % m_ticLabelAngle = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_rotation_origin ( this ) result ( x ) !! Gets the tic label rotation origin. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: x !! The tic label rotation origin. The tic label rotation origin !! must be one of the following: !! !! - GNUPLOT_ROTATION_ORIGIN_RIGHT !! !! - GNUPLOT_ROTATION_ORIGIN_LEFT !! !! - GNUPLOT_ROTATION_ORIGIN_CENTER integer ( int32 ) :: n n = len_trim ( this % m_ticRotationOrigin ) allocate ( character ( len = n ) :: x ) x = trim ( this % m_ticRotationOrigin ) end function ! -------------------- subroutine pa_set_tic_rotation_origin ( this , x ) !! Sets the tic label rotation origin. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. character ( len = * ), intent ( in ) :: x !! The tic label rotation origin. The tic label rotation origin !! must be one of the following: !! !! - GNUPLOT_ROTATION_ORIGIN_RIGHT !! !! - GNUPLOT_ROTATION_ORIGIN_LEFT !! !! - GNUPLOT_ROTATION_ORIGIN_CENTER this % m_ticRotationOrigin = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_tic_label_alignment ( this ) result ( x ) !! Gets the tic label alignment. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. character ( len = :), allocatable :: x !! The tic label alignment. The tic label alignment must be one of !! the following: !! !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT !! !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER !! !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT integer ( int32 ) :: n n = len_trim ( this % m_ticLabelAlignment ) allocate ( character ( len = n ) :: x ) x = trim ( this % m_ticLabelAlignment ) end function ! -------------------- subroutine pa_set_tic_label_alignment ( this , x ) !! Sets the tic label alignment. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. character ( len = * ), intent ( in ) :: x !! The tic label alignment. The tic label alignment must be one of !! the following: !! !! - GNUPLOT_HORIZONTAL_ALIGN_LEFT !! !! - GNUPLOT_HORIZONTAL_ALIGN_CENTER !! !! - GNUPLOT_HORIZONTAL_ALIGN_RIGHT this % m_ticLabelAlignment = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_offset_tics ( this ) result ( x ) !! Gets a value determining if the tics should be offset. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! Returns true to offset the tics; else, set to false. x = this % m_offsetTics end function ! -------------------- subroutine pa_set_offset_tics ( this , x ) !! Sets a value determining if the tics should be offset. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true to offset the tics; else, set to false. this % m_offsetTics = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_title_x_offset ( this ) result ( x ) !! Gets the axis title x-offset, in characters. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. integer ( int32 ) :: x !! The axis title x-offset, in characters. x = this % m_titleXOffset end function ! -------------------- subroutine pa_set_title_x_offset ( this , x ) !! Sets the axis title x-offset, in characters. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. integer ( int32 ), intent ( in ) :: x !! The axis title x-offset, in characters. this % m_titleXOffset = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_title_y_offset ( this ) result ( x ) !! Gets the axis title y-offset, in characters. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. integer ( int32 ) :: x !! The axis title y-offset, in characters. x = this % m_titleYOffset end function ! -------------------- subroutine pa_set_title_y_offset ( this , x ) !! Sets the axis title y-offset, in characters. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. integer ( int32 ), intent ( in ) :: x !! The axis title y-offset, in characters. this % m_titleYOffset = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_title_angle ( this ) result ( x ) !! Gets the axis title angle, in degrees. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. real ( real32 ) :: x !! The axis title angle, in degrees. x = this % m_titleAngle end function ! -------------------- subroutine pa_set_title_angle ( this , x ) !! Sets the axis title angle, in degrees. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. real ( real32 ), intent ( in ) :: x !! The axis title angle, in degrees. this % m_titleAngle = x this % m_autoCalcTitleAngle = . false . end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_auto_calc_title_angle ( this ) result ( x ) !! Gets whether GNUPLOT should automatically calculate the axis !! title angle. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: x !! True if GNUPLOT should automatically calculate the title !! angle; else, false. x = this % m_autoCalcTitleAngle end function ! -------------------- subroutine pa_set_auto_calc_title_angle ( this , x ) !! Sets whether GNUPLOT should automatically calculate the axis !! title angle. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true to automatically calculate the title angle; !! else, set to false. this % m_autoCalcTitleAngle = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_use_manual_tic_labels ( this ) result ( rst ) !! Gets a value determining if manual tic labels should be used. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. logical :: rst !! True if manual tic labels should be used; else, false. rst = this % m_useManualTicLabels end function ! -------------------- subroutine pa_set_use_manual_tic_labels ( this , x ) !! Sets a value determining if manual tic labels should be used. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. logical , intent ( in ) :: x !! Set to true if manual tic labels should be used; else, false. this % m_useManualTicLabels = x end subroutine ! ------------------------------------------------------------------------------ pure function pa_get_manual_tic_labels ( this ) result ( rst ) !! Gets a list of manual tic labels. class ( plot_axis ), intent ( in ) :: this !! The plot_axis object. type ( name_value_pair ), allocatable , dimension (:) :: rst !! A list of name-value pairs where the name defines the label !! shown with the corresponding axis value. if ( allocated ( this % m_ticLabels )) then rst = this % m_ticLabels else allocate ( rst ( 0 )) end if end function ! -------------------- subroutine pa_set_manual_tic_labels ( this , x ) !! Sets a list of manual tic labels. This routine also sets !! set_use_manual_tic_labels to true. class ( plot_axis ), intent ( inout ) :: this !! The plot_axis object. type ( name_value_pair ), intent ( in ), dimension (:) :: x !! The list of tic values with the name component representing the !! displayed label text and the value is the associated axis value. if ( allocated ( this % m_ticLabels )) deallocate ( this % m_ticLabels ) allocate ( this % m_ticLabels ( size ( x )), source = x ) call this % set_use_manual_tic_labels (. true .) end subroutine ! ****************************************************************************** ! X_AXIS MEMBERS ! ------------------------------------------------------------------------------ function xa_get_id ( this ) result ( x ) !! Gets the axis identification string. class ( x_axis ), intent ( in ) :: this !! The x_axis object. character ( len = :), allocatable :: x !! The identification string. x = this % m_id end function ! ****************************************************************************** ! Y_AXIS MEMBERS ! ------------------------------------------------------------------------------ function ya_get_id ( this ) result ( x ) !! Gets the axis identification string. class ( y_axis ), intent ( in ) :: this !! The y_axis object. character ( len = :), allocatable :: x !! The identification string. x = this % m_id end function ! ****************************************************************************** ! Y2_AXIS MEMBERS ! ------------------------------------------------------------------------------ function y2a_get_id ( this ) result ( x ) !! Gets the axis identification string. class ( y2_axis ), intent ( in ) :: this !! The y2_axis object. character ( len = :), allocatable :: x !! The identification string. x = this % m_id end function ! ****************************************************************************** ! Z_AXIS MEMBERS ! ------------------------------------------------------------------------------ function za_get_id ( this ) result ( x ) !! Gets the axis identification string. class ( z_axis ), intent ( in ) :: this !! The z_axis object. character ( len = :), allocatable :: x !! The identification string. x = this % m_id end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_axis.f90.html"},{"title":"fplot_plot_2d.f90 – FPLOT","text":"Source Code ! fplot_plot_2d.f90 module fplot_plot_2d use iso_fortran_env use fplot_plot_data use fplot_plot use fplot_errors use fplot_plot_axis use fplot_legend use fplot_plot_data_2d use fplot_colors use strings implicit none private public :: plot_2d type , extends ( plot ) :: plot_2d !! A plot object defining a 2D plot. type ( x_axis ), private , pointer :: m_xAxis => null () !! The x-axis. type ( y_axis ), private , pointer :: m_yAxis => null () !! The y-axis. type ( y2_axis ), private , pointer :: m_y2Axis => null () !! The secondary y-axis. logical , private :: m_useY2 = . false . !! Display the secondary y axis? logical , private :: m_set2square = . false . !! Set to square scaling. logical , private :: m_useJitter = . false . !! Allow jittering? real ( real32 ), private :: m_jitterOverlap = 1.0 !! Jitter overlap. real ( real32 ), private :: m_jitterSpread = 1.0 !! Jitter horizontal spread. contains final :: p2d_clean_up procedure , public :: initialize => p2d_init procedure , public :: get_command_string => p2d_get_cmd procedure , public :: get_x_axis => p2d_get_x_axis procedure , public :: get_y_axis => p2d_get_y_axis procedure , public :: get_y2_axis => p2d_get_y2_axis procedure , public :: get_use_y2_axis => p2d_get_use_y2 procedure , public :: set_use_y2_axis => p2d_set_use_y2 procedure , public :: get_square_axes => p2d_get_square_axes procedure , public :: set_square_axes => p2d_set_square_axes procedure , public :: get_use_jittering => p2d_get_use_jitter procedure , public :: set_use_jittering => p2d_set_use_jitter procedure , public :: get_jitter_overlap => p2d_get_jitter_overlap procedure , public :: set_jitter_overlap => p2d_set_jitter_overlap procedure , public :: get_jitter_spread => p2d_get_jitter_spread procedure , public :: set_jitter_spread => p2d_set_jitter_spread procedure , public :: set_x_axis_title => p2d_set_x_axis_title procedure , public :: set_y_axis_title => p2d_set_y_axis_title procedure , public :: set_y2_axis_title => p2d_set_y2_axis_title procedure , public :: p2d_push_data generic , public :: push => p2d_push_data end type contains ! ------------------------------------------------------------------------------ subroutine p2d_clean_up ( this ) !! Cleans up resources held by the plot_2d object. type ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. call this % free_resources () if ( associated ( this % m_xAxis )) then deallocate ( this % m_xAxis ) nullify ( this % m_xAxis ) end if if ( associated ( this % m_yAxis )) then deallocate ( this % m_yAxis ) nullify ( this % m_yAxis ) end if if ( associated ( this % m_y2Axis )) then deallocate ( this % m_y2Axis ) nullify ( this % m_y2Axis ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_init ( this , term , fname , err ) !! Initializes the plot_2d object. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Initialize the base class ! call plt_init(this, term, fname, errmgr) call this % plot % initialize ( term , fname , errmgr ) ! Process flag = 0 if (. not . associated ( this % m_xAxis )) then allocate ( this % m_xAxis , stat = flag ) end if if ( flag == 0 . and . . not . associated ( this % m_yAxis )) then allocate ( this % m_yAxis , stat = flag ) end if if ( flag == 0 . and . . not . associated ( this % m_y2Axis )) then allocate ( this % m_y2Axis , stat = flag ) end if ! Error Checking if ( flag /= 0 ) then call report_memory_error ( errmgr , \"p2d_init\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function p2d_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot_2d object. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , n real ( real32 ) :: lmargin , rmargin , tmargin , bmargin class ( plot_data ), pointer :: ptr class ( plot_axis ), pointer :: axis , xAxis , yAxis type ( legend ), pointer :: leg type ( color ) :: clr ! class(plot_label), pointer :: lbl ! Initialization call str % initialize () ! Call the base routine call str % append ( this % plot % get_command_string ()) ! Grid if ( this % get_show_x_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid xtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_x_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mxtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_y_major_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid ytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_y_minor_grid ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid mytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_minor_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_minor_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_minor_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if if ( this % get_show_gridlines ()) then ! X call str % append ( new_line ( 'a' )) call str % append ( 'set grid xtics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) ! Y call str % append ( new_line ( 'a' )) call str % append ( 'set grid ytics' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_y_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_y_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_y_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if ! Title n = len_trim ( this % get_title ()) if ( n > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( 'set title \"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if ! Margin lmargin = this % get_left_margin () rmargin = this % get_right_margin () tmargin = this % get_top_margin () bmargin = this % get_bottom_margin () if ( lmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set lmargin at screen \" ) call str % append ( to_string ( lmargin )) end if if ( rmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set rmargin at screen \" ) call str % append ( to_string ( rmargin )) end if if ( tmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set tmargin at screen \" ) call str % append ( to_string ( tmargin )) end if if ( bmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set bmargin at screen \" ) call str % append ( to_string ( bmargin )) end if ! Axes call str % append ( new_line ( 'a' )) xAxis => this % get_x_axis () if ( associated ( xAxis )) call str % append ( xAxis % get_command_string ()) call str % append ( new_line ( 'a' )) yAxis => this % get_y_axis () if ( associated ( yAxis )) call str % append ( yAxis % get_command_string ()) ! Secondary Axes if ( this % get_use_y2_axis ()) then call str % append ( new_line ( 'a' )) axis => this % get_y2_axis () if ( associated ( axis )) then call str % append ( axis % get_command_string ()) call str % append ( new_line ( 'a' )) call str % append ( \"set y2tics\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set ytics nomirror\" ) end if end if ! Tic Marks if (. not . this % get_tics_inward ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set tics out\" ) end if if ( xAxis % get_zero_axis ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set xtics axis\" ) end if if ( yAxis % get_zero_axis ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set ytics axis\" ) end if ! Border call str % append ( new_line ( 'a' )) call str % append ( \"set border back\" ) if ( this % get_draw_border ()) then n = 31 else n = 0 if (. not . xAxis % get_zero_axis ()) n = n + 1 if (. not . yAxis % get_zero_axis ()) n = n + 2 call str % append ( new_line ( 'a' )) call str % append ( \"set xtics nomirror\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set ytics nomirror\" ) if ( this % get_use_y2_axis ()) then n = n + 8 end if end if call str % append ( new_line ( 'a' )) if ( n > 0 ) then call str % append ( \"set border \" ) call str % append ( to_string ( n )) else call str % append ( \"unset border\" ) end if call str % append ( new_line ( 'a' )) call str % append ( \"set border linewidth \" ) call str % append ( to_string ( this % get_border_line_width ())) ! Scaling if ( this % get_axis_equal ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set view equal xy\" ) end if if ( this % get_square_axes ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set size square\" ) end if ! Legend call str % append ( new_line ( 'a' )) leg => this % get_legend () if ( associated ( leg )) call str % append ( leg % get_command_string ()) ! ! Labels ! do i = 1, this%get_label_count() ! lbl => this%get_label(i) ! if (.not.associated(lbl)) cycle ! call str%append(new_line('a')) ! call str%append(lbl%get_command_string()) ! end do ! Jittering call str % append ( new_line ( 'a' )) if ( this % get_use_jittering ()) then call str % append ( \"set jitter overlap \" ) call str % append ( to_string ( this % get_jitter_overlap ())) call str % append ( \" spread \" ) call str % append ( to_string ( this % get_jitter_spread ())) else call str % append ( \"unset jitter\" ) end if ! Define the datablock n = this % get_count () do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) if ( is_plot_data_function ( ptr )) then call str % append ( ptr % get_data_string ()) else call str % append ( \"$\" ) call str % append ( ptr % get_datablock_name ()) call str % append ( \" << EOD\" ) call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"EOD\" ) end if end do ! Define the plot function and data formatting commands call str % append ( new_line ( 'a' )) call str % append ( \"plot \" ) do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( ptr % get_command_string ()) if ( i /= n ) call str % append ( \", \" ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function p2d_get_x_axis ( this ) result ( ptr ) !! Gets the x-axis object. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. class ( plot_axis ), pointer :: ptr !! A pointer to the x-axis object. ptr => this % m_xAxis end function ! ------------------------------------------------------------------------------ function p2d_get_y_axis ( this ) result ( ptr ) !! Gets the y-axis object. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. class ( plot_axis ), pointer :: ptr !! A pointer to the y-axis object. ptr => this % m_yAxis end function ! ------------------------------------------------------------------------------ function p2d_get_y2_axis ( this ) result ( ptr ) !! Gets the secondary y-axis object. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. class ( plot_axis ), pointer :: ptr !! A pointer to the secondary y-axis object. ptr => this % m_y2Axis end function ! ------------------------------------------------------------------------------ pure function p2d_get_use_y2 ( this ) result ( x ) !! Gets a flag determining if the secondary y-axis should be !! displayed. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. logical :: x !! Returns true if the axis should be displayed; else, false. x = this % m_useY2 end function ! -------------------- subroutine p2d_set_use_y2 ( this , x ) !! Sets a flag determining if the secondary y-axis should be !! displayed. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. logical , intent ( in ) :: x !! Set to true if the axis should be displayed; else, false. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ pure function p2d_get_square_axes ( this ) result ( rst ) !! Gets a logical flag determining if the axes size should be squared !! off. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. logical :: rst !! Returns true if the axes are to be sized to a square; else, !! false. rst = this % m_set2square end function ! -------------------- subroutine p2d_set_square_axes ( this , x ) !! Sets a logical flag determining if the axes size should be !! squared off. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. logical , intent ( in ) :: x !! Set to true if the axes are to be sized to a square; else, !! false. this % m_set2square = x end subroutine ! ------------------------------------------------------------------------------ pure function p2d_get_use_jitter ( this ) result ( rst ) !! Gets a logical value determining if jittering should be used. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. logical :: rst !! True if jittering should be used; else, false. rst = this % m_useJitter end function ! -------------------- subroutine p2d_set_use_jitter ( this , x ) !! Sets a logical value determining if jittering should be used. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. logical , intent ( in ) :: x !! Set to true if jittering should be used; else, false. this % m_useJitter = x end subroutine ! ------------------------------------------------------------------------------ pure function p2d_get_jitter_overlap ( this ) result ( rst ) !! Gets the jitter overalp. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. real ( real32 ) :: rst !! The jitter overlap. rst = this % m_jitterOverlap end function ! -------------------- subroutine p2d_set_jitter_overlap ( this , x ) !! Sets the jitter overlap. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. real ( real32 ), intent ( in ) :: x !! The jitter overlap. this % m_jitterOverlap = x end subroutine ! ------------------------------------------------------------------------------ pure function p2d_get_jitter_spread ( this ) result ( rst ) !! Gets the jitter horizontal spread. class ( plot_2d ), intent ( in ) :: this !! The [[plot_2d]] object. real ( real32 ) :: rst !! The jitter horizontal spread. rst = this % m_jitterSpread end function ! -------------------- subroutine p2d_set_jitter_spread ( this , x ) !! Sets the jitter horizontal spread. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. real ( real32 ), intent ( in ) :: x !! The jitter horizontal spread. this % m_jitterSpread = x end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_set_x_axis_title ( this , x ) !! Sets the title associated with the plot's x-axis. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_xAxis )) then call this % m_xAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_set_y_axis_title ( this , x ) !! Sets the title associated with the plot's y-axis. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_yAxis )) then call this % m_yAxis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_set_y2_axis_title ( this , x ) !! Sets the title associated with the plot's secondary y-axis. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. character ( len = * ), intent ( in ) :: x !! The title. if ( associated ( this % m_y2Axis )) then call this % m_y2Axis % set_title ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine p2d_push_data ( this , x , y , lw , name , ls , lc ) !! Adds a data set to the plot. class ( plot_2d ), intent ( inout ) :: this !! The [[plot_2d]] object. real ( real64 ), intent ( in ), dimension (:) :: x !! The x-values. real ( real64 ), intent ( in ), dimension ( size ( x )) :: y !! The y-values. real ( real32 ), intent ( in ), optional :: lw !! The line width. character ( len = * ), intent ( in ), optional :: name !! A name to associate with the data set. integer ( int32 ), intent ( in ), optional :: ls !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID type ( color ), intent ( in ), optional :: lc !! The line color. type ( plot_data_2d ) :: pd call pd % define_data ( x , y ) if ( present ( lw )) call pd % set_line_width ( lw ) if ( present ( name )) call pd % set_name ( name ) if ( present ( ls )) call pd % set_line_style ( ls ) if ( present ( lc )) call pd % set_line_color ( lc ) call this % push ( pd ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_2d.f90.html"},{"title":"fplot_triangulations_delaunay_2d.f90 – FPLOT","text":"Source Code module fplot_triangulations_delaunay_2d use iso_fortran_env use delaunay use fplot_errors implicit none private public :: delaunay_tri_2d type delaunay_tri_2d !! Provides a container for a 2D Delaunay triangulation. real ( real64 ), private , allocatable , dimension (:) :: m_x !! An array of the x-coordinates of each point. real ( real64 ), private , allocatable , dimension (:) :: m_y !! An array of the y-coordinates of each point. integer ( int32 ), private , allocatable , dimension (:,:) :: m_indices !! A 3-column matrix containing the indices of each triangle's !! vertex. contains procedure , public :: create => d2d_init procedure , public :: get_point_count => d2d_get_pt_count procedure , public :: get_triangle_count => d2d_get_tri_count procedure , public :: get_points_x => d2d_get_x_pts procedure , public :: get_points_y => d2d_get_y_pts procedure , public :: get_indices => d2d_get_tris procedure , public :: find_triangle => d2d_get_tri_with_pt end type contains ! ------------------------------------------------------------------------------ subroutine d2d_init ( this , x , y , err ) !! Creates an unconstrained 2D Delaunay triangulation given a !! set of x-y points. class ( delaunay_tri_2d ), intent ( inout ) :: this !! The delaunay_tri_2d object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x-coordinates of each !! data point. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y-coordinates of each !! data point. class ( errors ), intent ( inout ), target , optional :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: i , npts , ntri , flag real ( real64 ), allocatable , dimension (:,:) :: nodexy integer ( int32 ), allocatable , dimension (:,:) :: trinode , trinbr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if npts = size ( x ) ! Input Check if ( size ( y ) /= npts ) then call report_array_size_mismatch_error ( errmgr , \"d2d_init\" , \"y\" , & npts , size ( y )) return end if ! Clean up incase of an existing triangulation if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_indices )) deallocate ( this % m_indices ) ! Allocate workspace arrays for the triangulation allocate ( nodexy ( 2 , npts ), stat = flag ) if ( flag == 0 ) allocate ( trinode ( 3 , 2 * npts ), stat = flag ) if ( flag == 0 ) allocate ( trinbr ( 3 , 2 * npts ), stat = flag ) if ( flag /= 0 ) go to 100 ! Generate the points list do i = 1 , npts nodexy ( 1 , i ) = x ( i ) nodexy ( 2 , i ) = y ( i ) end do ! Compute the triangulation call r8tris2 ( npts , nodexy , ntri , trinode , trinbr ) ! Populate the remainder of the object allocate ( this % m_x ( npts ), stat = flag ) if ( flag == 0 ) allocate ( this % m_y ( npts ), stat = flag ) if ( flag == 0 ) allocate ( this % m_indices ( ntri , 3 ), stat = flag ) do i = 1 , npts this % m_x ( i ) = nodexy ( 1 , i ) this % m_y ( i ) = nodexy ( 2 , i ) end do do i = 1 , ntri this % m_indices ( i ,:) = trinode (:, i ) end do ! End return ! Memory Error Handler 100 continue call report_memory_error ( errmgr , \"d2d_init\" , flag ) return end subroutine ! ------------------------------------------------------------------------------ pure function d2d_get_pt_count ( this ) result ( rst ) !! Gets the number of points in the triangulation. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. integer ( int32 ) :: rst !! The number of points in the triangulation. if ( allocated ( this % m_x )) then rst = size ( this % m_x ) else rst = 0 end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_tri_count ( this ) result ( rst ) !! Gets the number of triangles in the triangulation. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. integer ( int32 ) :: rst !! The number of triangles in the triangulation. if ( allocated ( this % m_indices )) then rst = size ( this % m_indices , 1 ) else rst = 0 end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_x_pts ( this ) result ( rst ) !! Gets the x-coordinates of each point. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. real ( real64 ), allocatable , dimension (:) :: rst !! An array of the x-coordinates of each point. if ( allocated ( this % m_x )) then rst = this % m_x else allocate ( rst ( 0 )) end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_y_pts ( this ) result ( rst ) !! Gets the y-coordinates of each point. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. real ( real64 ), allocatable , dimension (:) :: rst !! An array of the y-coordinates of each point. if ( allocated ( this % m_y )) then rst = this % m_y else allocate ( rst ( 0 )) end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_tris ( this ) result ( rst ) !! Gets a list of the indices of each triangle vertex. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. integer ( int32 ), allocatable , dimension (:,:) :: rst !! An N-by-3 matrix with each column containing the index of the !! vertex of each triangle where N is the number of triangles. if ( allocated ( this % m_indices )) then rst = this % m_indices else allocate ( rst ( 0 , 0 )) end if end function ! ------------------------------------------------------------------------------ pure function d2d_get_tri_with_pt ( this , x , y ) result ( rst ) !! Finds the triangle that contains the specified point. class ( delaunay_tri_2d ), intent ( in ) :: this !! The delaunay_tri_2d object. real ( real64 ), intent ( in ) :: x !! The x-coordinate of the point. real ( real64 ), intent ( in ) :: y !! The y-coordinate of the point. integer ( int32 ) :: rst !! Returns the index of the triangle containing the specified !! point. If no triangle contains the specified point, a value of !! -1 is returned. ! Local Variables integer ( int32 ) :: i , j real ( real64 ) :: x1 , y1 , x2 , y2 , x3 , y3 logical :: check ! Initialization rst = - 1 ! Process do i = 1 , this % get_triangle_count () j = this % m_indices ( i , 1 ) x1 = this % m_x ( j ) y1 = this % m_y ( j ) j = this % m_indices ( i , 2 ) x2 = this % m_x ( j ) y2 = this % m_y ( j ) j = this % m_indices ( i , 3 ) x3 = this % m_x ( j ) y3 = this % m_y ( j ) check = point_inside_triangle ( x1 , y1 , x2 , y2 , x3 , y3 , x , y ) if ( check ) then rst = i end if end do end function ! ------------------------------------------------------------------------------ ! Determine if a point lies within a triangle. ! https://stackoverflow.com/questions/2049582/how-to-determine-if-a-point-is-in-a-2d-triangle ! https://en.wikipedia.org/wiki/Barycentric_coordinate_system pure elemental function point_inside_triangle ( x1 , y1 , x2 , y2 , x3 , y3 , & x , y ) result ( rst ) ! Arguments real ( real64 ), intent ( in ) :: x1 , y1 , x2 , y2 , x3 , y3 , x , y logical :: rst ! Local Variables real ( real64 ) :: lambda1 , lambda2 , dT ! Initialization dT = ( y2 - y3 ) * ( x1 - x3 ) + ( x3 - x2 ) * ( y1 - y3 ) lambda1 = (( y2 - y3 ) * ( x - x3 ) + ( x3 - x2 ) * ( y - y3 )) / dT lambda2 = (( y3 - y1 ) * ( x - x3 ) + ( x1 - x3 ) * ( y - y3 )) / dT ! The point is within the triangle if: ! 0 <= lambda1 <= 1 ! 0 <= lambda2 <= 1 ! 0 <= lambda1 + lambda2 <= 1 rst = ( lambda1 <= 1.0d0 . and . lambda1 >= 0.0d0 ) . and . & ( lambda2 <= 1.0d0 . and . lambda2 >= 0.0d0 ) . and . & ( lambda1 + lambda2 >= 0.0d0 . and . lambda1 + lambda2 <= 1.0d0 ) end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_triangulations_delaunay_2d.f90.html"},{"title":"fplot_core_routines.f90 – FPLOT","text":"Source Code ! fplot_core_routines.f90 module fplot_core_routines use iso_fortran_env implicit none private public :: linspace public :: logspace public :: meshgrid contains ! ------------------------------------------------------------------------------ pure function linspace ( start , finish , npts ) result ( x ) !! Constructs a linearly spaced array. real ( real64 ), intent ( in ) :: start !! The first value in the array. real ( real64 ), intent ( in ) :: finish !! The last value in the array. integer ( int32 ), intent ( in ) :: npts !! The number of values in the array. real ( real64 ), allocatable , dimension (:) :: x !! The resulting array. ! Local Variables integer ( int32 ) :: i real ( real64 ) :: dx ! Process allocate ( x ( npts )) dx = ( finish - start ) / ( npts - 1.0d0 ) x ( 1 ) = start do i = 2 , npts x ( i ) = x ( i - 1 ) + dx end do end function ! ------------------------------------------------------------------------------ pure function logspace ( start , finish , npts ) result ( x ) !! Construcst a logarithmically spaced array. real ( real64 ), intent ( in ) :: start !! The exponent of the first value in the array. real ( real64 ), intent ( in ) :: finish !! The exponent of the final value in the array. integer ( int32 ), intent ( in ) :: npts !! The number of values in the array. real ( real64 ), allocatable , dimension (:) :: x !! The resulting array. ! Local Variables integer ( int32 ) :: i real ( real64 ) :: dx , exponent ! Process allocate ( x ( npts )) dx = ( finish - start ) / ( npts - 1.0d0 ) exponent = start do i = 1 , npts x ( i ) = 1.0d1 ** exponent exponent = exponent + dx end do end function ! ------------------------------------------------------------------------------ pure function meshgrid ( x , y ) result ( xy ) !! Constructs two matrices (X and Y) from x and y data arrays. real ( real64 ), intent ( in ), dimension (:) :: x !! An M-element array of x data points. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array of y data points. real ( real64 ), allocatable , dimension (:,:,:) :: xy !! An N-by-M-by-2 array containing the x data matrix on the first !! page of the array, and the y data matrix on the second page. ! Local Variables integer ( int32 ) :: i , nx , ny ! Process nx = size ( x ) ny = size ( y ) allocate ( xy ( ny , nx , 2 )) do i = 1 , ny xy ( i ,:, 1 ) = x end do do i = 1 , nx xy (:, i , 2 ) = y end do end function end module","tags":"","loc":"sourcefile\\fplot_core_routines.f90.html"},{"title":"fplot_stats_plots.f90 – FPLOT","text":"Source Code module fplot_stats_plots use iso_fortran_env use fplot_plot_object use fplot_plot use fplot_plot_data_2d use fplot_plot_data_histogram use fplot_plot_2d use fplot_multiplot use fplot_terminal use fplot_constants use fplot_errors use fplot_colors use fplot_plot_axis use collections use strings implicit none private public :: correlation_plot type , extends ( plot_object ) :: correlation_plot !! Defines a multiplot arrangement designed to illustrate correlation !! between data sets. type ( multiplot ), private :: m_plt !! The multiplot object. contains procedure , public :: get_command_string => cp_get_command procedure , public :: initialize => cp_init procedure , public :: get_row_count => cp_get_rows procedure , public :: get_column_count => cp_get_cols procedure , public :: get_plot_count => cp_get_count procedure , public :: draw => cp_draw procedure , public :: save_file => cp_save procedure , public :: get => cp_get procedure , public :: get_terminal => cp_get_term procedure , public :: get_font_name => cp_get_font procedure , public :: set_font_name => cp_set_font procedure , public :: get_font_size => cp_get_font_size procedure , public :: set_font_size => cp_set_font_size end type contains ! ------------------------------------------------------------------------------ function cp_get_command ( this ) result ( x ) !! Gets the GNUPLOT commands for this object. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. character ( len = :), allocatable :: x !! The command string. end function ! ------------------------------------------------------------------------------ subroutine cp_init ( this , x , labels , term , width , height , err ) !! Initializes the correlation_plot object. class ( correlation_plot ), intent ( inout ) :: this !! The correlation_plot object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data to plot with each column representing a data set. type ( string ), intent ( in ), optional , dimension (:) :: labels !! An optional array containing a label to associate with each !! data set in x. If supplied, this array must have the same length !! as x has columns. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. The !! default terminal is a WXT terminal. The acceptable inputs are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF integer ( int32 ), intent ( in ), optional :: width !! Optionally, the width of the plot window. integer ( int32 ), intent ( in ), optional :: height !! Optionally, the height of the plot window. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , j , k , t , n , flag real ( real64 ) :: m , b real ( real64 ), allocatable , dimension (:) :: mdl class ( errors ), pointer :: errmgr type ( errors ), target :: deferr type ( plot_2d ), allocatable , dimension (:) :: plts type ( plot_data_2d ) :: pdata , mdata type ( plot_data_histogram ) :: hdata class ( plot_axis ), pointer :: xAxis , yAxis ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x , 2 ) call this % m_plt % initialize ( n , n , term = term , width = width , & height = height , err = errmgr ) allocate ( plts ( n * n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"cp_init\" , flag ) return end if call this % m_plt % set_font_size ( 11 ) ! use a small font size ! Input Checking if ( present ( labels )) then if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"cp_init\" , & \"labels\" , n , size ( labels )) return end if end if ! Create plots k = 0 call pdata % set_draw_line (. false .) call pdata % set_draw_markers (. true .) call pdata % set_marker_style ( MARKER_FILLED_CIRCLE ) call pdata % set_marker_scaling ( 0.5 ) call mdata % set_line_width ( 2.0 ) call mdata % set_line_color ( CLR_BLACK ) do j = 1 , n do i = 1 , n k = k + 1 call plts ( k )% initialize ( err = errmgr ) if ( i == j ) then ! Plot a histogram of the data call hdata % define_data ( x (:, i ), err = errmgr ) call plts ( k )% push ( hdata ) else ! Plot a scatter plot call pdata % define_data ( x (:, j ), x (:, i ), err = errmgr ) call plts ( k )% push ( pdata ) ! Fit a line to the data call compute_linear_fit ( x (:, j ), x (:, i ), m , b ) mdl = m * x (:, j ) + b ! Plot the fitted line call mdata % define_data ( x (:, j ), mdl , err = err ) call plts ( k )% push ( mdata ) end if ! Deal with axis labels if ( j == 1 ) then ! Display y axis labels for these plots yAxis => plts ( k )% get_y_axis () if ( present ( labels )) then call yAxis % set_title ( char ( labels ( i ))) else call yAxis % set_title ( char ( \"x_{\" // to_string ( i ) // \"}\" )) end if end if ! Get an x-axis object for the plot xAxis => plts ( k )% get_x_axis () ! Define axis labels if ( i == n ) then ! Display x axis labels for these plots if ( present ( labels )) then call xAxis % set_title ( char ( labels ( j ))) else call xAxis % set_title ( char ( \"x_{\" // to_string ( j ) // \"}\" )) end if end if ! Rotate histogram tic labels call xAxis % set_tic_label_angle ( 4 5.0 ) call xAxis % set_tic_label_rotation_origin ( GNUPLOT_ROTATION_ORIGIN_RIGHT ) ! Store the plot - the collection makes a copy of the plot and ! manages it's lifetime call this % m_plt % set ( i , j , plts ( k )) end do end do end subroutine ! ------------------------------------------------------------------------------ pure function cp_get_rows ( this ) result ( x ) !! Gets the number of rows of plots. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ) :: x !! The row count. x = this % m_plt % get_row_count () end function ! -------------------- pure function cp_get_cols ( this ) result ( x ) !! Gets the number of columns of plots. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ) :: x !! The column count. x = this % m_plt % get_column_count () end function ! -------------------- pure function cp_get_count ( this ) result ( x ) !! Gets the total number of plots. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ) :: x !! The plot count. x = this % m_plt % get_plot_count () end function ! ------------------------------------------------------------------------------ subroutine cp_draw ( this , persist , err ) !! Launches GNUPLOT and draws the correlation_plot per the current !! state of the command list. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. logical , intent ( in ), optional :: persist !! An optional parameter that can be used to keep GNUPLOT open. !! Set to true to force GNUPLOT to remain open; else, set to false !! to allow GNUPLOT to close after drawing. The default is true. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. call this % m_plt % draw ( persist , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine cp_save ( this , fname , err ) !! Saves a GNUPLOT command file. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. character ( len = * ), intent ( in ) :: fname !! The filename. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. call this % m_plt % save_file ( fname , err ) end subroutine ! ------------------------------------------------------------------------------ function cp_get ( this , i , j ) result ( x ) !! Gets the requested plot object. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ), intent ( in ) :: i !! The row index of the plot to retrieve. integer ( int32 ), intent ( in ) :: j !! The column index of the plot to retrieve. class ( plot ), pointer :: x !! A pointer to the plot object. x => this % m_plt % get ( i , j ) end function ! ------------------------------------------------------------------------------ function cp_get_term ( this ) result ( x ) !! Gets the GNUPLOT terminal object. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. class ( terminal ), pointer :: x !! A pointer to the terminal object. x => this % m_plt % get_terminal () end function ! ------------------------------------------------------------------------------ function cp_get_font ( this ) result ( x ) !! Gets the name of the font used for plot text. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. character ( len = :), allocatable :: x !! The font name. x = this % m_plt % get_font_name () end function ! -------------------- subroutine cp_set_font ( this , x ) !! Sets the name of the font used for plot text. class ( correlation_plot ), intent ( inout ) :: this !! The correlation_plot object. character ( len = * ), intent ( in ) :: x !! The font name. call this % m_plt % set_font_name ( x ) end subroutine ! ------------------------------------------------------------------------------ function cp_get_font_size ( this ) result ( x ) !! Gets the size of the font used by the plot. class ( correlation_plot ), intent ( in ) :: this !! The correlation_plot object. integer ( int32 ) :: x !! The font size. x = this % m_plt % get_font_size () end function ! -------------------- subroutine cp_set_font_size ( this , x ) !! Sets the size of the font used by the plot. class ( correlation_plot ), intent ( inout ) :: this !! The correlation_plot object. integer ( int32 ), intent ( in ) :: x !! The font size. call this % m_plt % set_font_size ( x ) end subroutine ! ****************************************************************************** ! PRIVATE HELPER ROUTINES ! ------------------------------------------------------------------------------ subroutine compute_linear_fit ( x , y , m , b ) !! Computes the coefficients of a linear equation (y = m * x + b) using a !! least-squares approach. real ( real64 ), intent ( in ), dimension (:) :: x !! The x-coordinate data. real ( real64 ), intent ( in ), dimension (:) :: y !! The y-coordinate data. real ( real64 ), intent ( out ) :: m !! The slope term. real ( real64 ), intent ( out ) :: b !! The intercept term. ! Local Variables integer ( int32 ) :: i , n real ( real64 ) :: sumX , sumY , sumX2 , sumY2 , sumXY ! Initialization n = size ( x ) sumX = 0.0d0 sumY = 0.0d0 sumX2 = 0.0d0 sumY2 = 0.0d0 sumXY = 0.0d0 ! Process do i = 1 , n sumX = sumX + x ( i ) sumY = sumY + y ( i ) sumXY = sumXY + x ( i ) * y ( i ) sumX2 = sumX2 + ( x ( i )) ** 2 sumY2 = sumY2 + ( y ( i )) ** 2 end do m = ( n * sumXY - sumX * sumY ) / ( n * sumX2 - sumX ** 2 ) b = ( sumY * sumX2 - sumX * sumXY ) / ( n * sumX2 - sumX ** 2 ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_stats_plots.f90.html"},{"title":"fplot_wxt_terminal.f90 – FPLOT","text":"Source Code ! fplot_wxt_terminal.f90 module fplot_wxt_terminal use iso_fortran_env use fplot_terminal implicit none private public :: wxt_terminal type , extends ( terminal ) :: wxt_terminal !! A WXT terminal. character ( len = 3 ), private :: m_id = \"wxt\" !! The terminal ID string contains procedure , public :: get_id_string => wxt_get_term_string end type contains function wxt_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( wxt_terminal ), intent ( in ) :: this !! The wxt_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function end module","tags":"","loc":"sourcefile\\fplot_wxt_terminal.f90.html"},{"title":"fplot_latex_terminal.f90 – FPLOT","text":"Source Code module fplot_latex_terminal use iso_fortran_env use fplot_terminal use fplot_constants use strings implicit none private public :: latex_terminal type , extends ( file_terminal ) :: latex_terminal !! A LATEX terminal. character ( len = 14 ), private :: m_id = \"epslatex color\" !! The terminal ID string contains procedure , public :: get_id_string => tex_get_term_string end type contains ! ------------------------------------------------------------------------------ function tex_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( latex_terminal ), intent ( in ) :: this !! The latex_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_latex_terminal.f90.html"},{"title":"fplot_terminal.f90 – FPLOT","text":"Source Code ! fplot_terminal.f90 module fplot_terminal use iso_fortran_env use fplot_plot_object use fplot_constants use strings implicit none private public :: terminal public :: file_terminal public :: term_get_string_result type , abstract , extends ( plot_object ) :: terminal !! A GNUPLOT terminal object. private integer ( int32 ) :: m_windowHeight = GNUPLOT_DEFAULT_WINDOW_HEIGHT !! The window height, in pixels. integer ( int32 ) :: m_windowWidth = GNUPLOT_DEFAULT_WINDOW_WIDTH !! The window width, in pixels. integer ( int32 ) :: m_termID = 0 !! The terminal ID number. character ( len = GNUPLOT_MAX_LABEL_LENGTH ) :: m_title = \"\" !! The plot window title. logical :: m_hasTitle = . false . !! Determines if the plot title is defined. character ( len = GNUPLOT_MAX_LABEL_LENGTH ) :: m_fontName = & GNUPLOT_DEFAULT_FONTNAME !! The font used by the graph. integer ( int32 ) :: m_fontSize = GNUPLOT_DEFAULT_FONT_SIZE !! The size of the font used by the graph. contains procedure , public :: get_window_width => term_get_window_width procedure , public :: set_window_width => term_set_window_width procedure , public :: get_window_height => term_get_window_height procedure , public :: set_window_height => term_set_window_height procedure , public :: get_command_string => term_get_command_string procedure , public :: get_plot_window_number => & term_get_plot_window_number procedure , public :: set_plot_window_number => & term_set_plot_window_number procedure , public :: get_title => term_get_title procedure , public :: set_title => term_set_title procedure , public :: get_font_name => term_get_font_name procedure , public :: set_font_name => term_set_font_name procedure , public :: get_font_size => term_get_font_size procedure , public :: set_font_size => term_set_font_size procedure ( term_get_string_result ), deferred , public :: get_id_string end type interface function term_get_string_result ( this ) result ( x ) !! Retrieves a string from a terminal. import terminal class ( terminal ), intent ( in ) :: this !! The terminal object. character ( len = :), allocatable :: x !! The string. end function end interface type , abstract , extends ( terminal ) :: file_terminal !! Defines a terminal meant to save results directly to file !! (e.g. PNG, SVG, etc.). character ( len = GNUPLOT_MAX_PATH_LENGTH ), private :: m_fname = \"default.plt\" !! The filename. contains procedure , public :: get_filename => fterm_get_filename procedure , public :: set_filename => fterm_set_filename procedure , public :: get_command_string => fterm_get_command_string end type contains ! ------------------------------------------------------------------------------ pure function term_get_window_width ( this ) result ( x ) !! Gets the width of the plot window. class ( terminal ), intent ( in ) :: this !! The terminal object. integer :: x !! The width of the plot window. x = this % m_windowWidth end function ! -------------------- subroutine term_set_window_width ( this , x ) !! Sets the width of the plot window. class ( terminal ), intent ( inout ) :: this !! The terminal object. integer , intent ( in ) :: x !! The width of the plot window. if ( x == 0 ) then this % m_windowWidth = GNUPLOT_DEFAULT_WINDOW_WIDTH else this % m_windowWidth = abs ( x ) end if end subroutine ! ------------------------------------------------------------------------------ pure function term_get_window_height ( this ) result ( x ) !! Gets the height of the plot window. class ( terminal ), intent ( in ) :: this !! The terminal object. integer :: x !! The height of the plot window. x = this % m_windowHeight end function ! -------------------- subroutine term_set_window_height ( this , x ) !! Sets the height of the plot window. class ( terminal ), intent ( inout ) :: this !! The terminal object. integer , intent ( in ) :: x !! The height of the plot window. if ( x == 0 ) then this % m_windowHeight = GNUPLOT_DEFAULT_WINDOW_HEIGHT else this % m_windowHeight = abs ( x ) end if end subroutine ! ------------------------------------------------------------------------------ pure function term_get_plot_window_number ( this ) result ( x ) !! Gets the targeted plot window number. class ( terminal ), intent ( in ) :: this !! The terminal object. integer ( int32 ) :: x !! The plot window number. x = this % m_termID end function ! -------------------- subroutine term_set_plot_window_number ( this , x ) !! Sets the targeted plot window number. class ( terminal ), intent ( inout ) :: this !! The terminal object. integer ( int32 ), intent ( in ) :: x !! The plot window number. this % m_termID = x end subroutine ! ------------------------------------------------------------------------------ function term_get_title ( this ) result ( str ) !! Gets the plot window's title. class ( terminal ), intent ( in ) :: this !! The terminal object. character ( len = :), allocatable :: str !! The title. integer ( int32 ) :: n n = len_trim ( str ) allocate ( character ( len = n ) :: str ) str = trim ( this % m_title ) end function ! -------------------- subroutine term_set_title ( this , txt ) !! Sets the plot window's title. class ( terminal ), intent ( inout ) :: this !! The terminal object. character ( len = * ), intent ( in ) :: txt !! The title. integer ( int32 ) :: n n = min ( len_trim ( txt ), GNUPLOT_MAX_LABEL_LENGTH ) this % m_title = \"\" if ( n /= 0 ) then this % m_title ( 1 : n ) = txt ( 1 : n ) this % m_hasTitle = . true . else this % m_hasTitle = . false . end if end subroutine ! ------------------------------------------------------------------------------ function term_get_font_name ( this ) result ( name ) !! Gets the name of the font used for text displayed by the graph. class ( terminal ), intent ( in ) :: this !! The terminal object. character ( len = :), allocatable :: name !! The font name. integer ( int32 ) :: n n = len_trim ( this % m_fontName ) allocate ( character ( len = n ) :: name ) name = trim ( this % m_fontName ) end function ! -------------------- subroutine term_set_font_name ( this , name ) !! Sets the name of the font used for text displayed by the graph. class ( terminal ), intent ( inout ) :: this !! The terminal object. character ( len = * ), intent ( in ) :: name !! The font name. integer ( int32 ) :: n n = min ( len_trim ( name ), GNUPLOT_MAX_LABEL_LENGTH ) this % m_fontName = \"\" if ( n == 0 ) then this % m_fontName = GNUPLOT_DEFAULT_FONTNAME else this % m_fontName ( 1 : n ) = name ( 1 : n ) end if end subroutine ! ------------------------------------------------------------------------------ pure function term_get_font_size ( this ) result ( sz ) !! Gets the size of the font used by the graph. class ( terminal ), intent ( in ) :: this !! The terminal object. integer ( int32 ) :: sz !! The font size, in points. sz = this % m_fontSize end function ! -------------------- subroutine term_set_font_size ( this , sz ) !! Sets the size of the font used by the graph. class ( terminal ), intent ( inout ) :: this !! The terminal object. integer ( int32 ), intent ( in ) :: sz !! The font size, in points. if ( sz == 0 ) then this % m_fontSize = GNUPLOT_DEFAULT_FONT_SIZE else this % m_fontSize = abs ( sz ) end if end subroutine ! ------------------------------------------------------------------------------ function term_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( terminal ), intent ( in ) :: this !! The terminal object. character ( len = :), allocatable :: x !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str ! Process call str % initialize () call str % append ( \"set term \" ) call str % append ( this % get_id_string ()) call str % append ( \" enhanced \" ) call str % append ( to_string ( this % get_plot_window_number ())) call str % append ( \" font \" ) call str % append ( '\"' ) call str % append ( this % get_font_name ()) call str % append ( ',' ) call str % append ( to_string ( this % get_font_size ())) call str % append ( '\"' ) call str % append ( \" size \" ) call str % append ( to_string ( this % get_window_width ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_window_height ())) if ( this % m_hasTitle ) then call str % append ( ' title \"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if x = char ( str % to_string ()) end function ! ****************************************************************************** ! FILE_TERMINAL ! ------------------------------------------------------------------------------ pure function fterm_get_filename ( this ) result ( txt ) !! Gets the filename for the output file. class ( file_terminal ), intent ( in ) :: this !! The file_terminal object. character ( len = :), allocatable :: txt !! The filename. integer ( int32 ) :: n n = len_trim ( this % m_fname ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_fname ) end function ! -------------------- subroutine fterm_set_filename ( this , txt ) !! Sets the filename for the output file. class ( file_terminal ), intent ( inout ) :: this !! The file_terminal object. character ( len = * ), intent ( in ) :: txt !! The filename. integer ( int32 ) :: n n = min ( len_trim ( txt ), GNUPLOT_MAX_PATH_LENGTH ) this % m_fname = \"\" if ( n /= 0 ) then this % m_fname ( 1 : n ) = txt ( 1 : n ) else this % m_fname = \"default.plt\" end if end subroutine ! ------------------------------------------------------------------------------ function fterm_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( file_terminal ), intent ( in ) :: this !! The file_terminal object. character ( len = :), allocatable :: x !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str ! Process call str % initialize () call str % append ( \"set term \" ) call str % append ( this % get_id_string ()) call str % append ( \" font \" ) call str % append ( '\"' ) call str % append ( this % get_font_name ()) call str % append ( ',' ) call str % append ( to_string ( this % get_font_size ())) call str % append ( '\"' ) call str % append ( \" size \" ) call str % append ( to_string ( this % get_window_width ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_window_height ())) call str % append ( new_line ( 'a' )) call str % append ( \"set output \" ) call str % append ( '\"' ) call str % append ( this % get_filename ()) call str % append ( '\"' ) x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_terminal.f90.html"},{"title":"fplot_plot_data_2d.f90 – FPLOT","text":"Source Code module fplot_plot_data_2d use iso_fortran_env use fplot_plot_data use fplot_simplify use fplot_errors use strings implicit none private public :: plot_data_2d type , extends ( scatter_plot_data ) :: plot_data_2d !! Defines a two-dimensional plot data set. real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! An N-by-2 matrix containing the x and y data points. !> Draw against the secondary y axis? logical , private :: m_useY2 = . false . !! Draw against the secondary y axis? contains procedure , public :: get_axes_string => pd2d_get_axes_cmd procedure , public :: get_data_string => pd2d_get_data_cmd procedure , public :: get_count => pd2d_get_data_count procedure , public :: get_x => pd2d_get_x_data procedure , public :: set_x => pd2d_set_x_data procedure , public :: get_y => pd2d_get_y_data procedure , public :: set_y => pd2d_set_y_data procedure , public :: get_draw_against_y2 => pd2d_get_draw_against_y2 procedure , public :: set_draw_against_y2 => pd2d_set_draw_against_y2 generic , public :: define_data => pd2d_set_data_1 , pd2d_set_data_2 procedure :: pd2d_set_data_1 procedure :: pd2d_set_data_2 procedure , public :: get_x_data => pd2d_get_x_array procedure , public :: get_y_data => pd2d_get_y_array procedure , public :: get_color_data => pd2d_get_c_array procedure , public :: get_point_size_data => pd2d_get_ps_array procedure , public :: clear_data => pd2d_clear_data end type contains ! ------------------------------------------------------------------------------ function pd2d_get_axes_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string defining which axes the data !! is to be plotted against. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. character ( len = :), allocatable :: x !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then x = \"axes x1y2\" else x = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ function pd2d_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data !! to plot. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i character :: delimiter , nl real ( real64 ), allocatable , dimension (:) :: xv , yv , cv , ps real ( real64 ), allocatable , dimension (:,:) :: pts real ( real64 ) :: tol , maxy , miny , eps logical :: usecolors , usevarpoints ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) usecolors = this % get_use_data_dependent_colors () usevarpoints = this % get_use_variable_size_points () ! Process xv = this % get_x_data () yv = this % get_y_data () if ( usecolors . and . usevarpoints ) then cv = this % get_color_data () ps = this % get_point_size_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( ps ( i ))) call str % append ( delimiter ) call str % append ( to_string ( cv ( i ))) call str % append ( nl ) end do else if ( usecolors . and . . not . usevarpoints ) then cv = this % get_color_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( cv ( i ))) call str % append ( nl ) end do else if (. not . usecolors . and . usevarpoints ) then ps = this % get_point_size_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( ps ( i ))) call str % append ( nl ) end do else if ( this % get_simplify_data ()) then maxy = maxval ( yv ) miny = minval ( yv ) tol = abs ( this % get_simplification_factor () * ( maxy - miny )) eps = 1 0.0d0 * epsilon ( eps ) if ( tol < eps ) tol = eps pts = simplify_polyline ( xv , yv , tol ) do i = 1 , size ( pts , 1 ) call str % append ( to_string ( pts ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( pts ( i , 2 ))) call str % append ( nl ) end do else do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( nl ) end do end if end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function pd2d_get_data_count ( this ) result ( x ) !! Gets the number of data points. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. integer ( int32 ) :: x !! The number of data points. if ( allocated ( this % m_data )) then x = size ( this % m_data , 1 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pd2d_get_x_data ( this , index ) result ( x ) !! Gets the requested X data point. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 1 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd2d_set_x_data ( this , index , x ) !! Sets the requested X data point. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 1 ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pd2d_get_y_data ( this , index ) result ( x ) !! Gets the requested Y data point. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 2 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd2d_set_y_data ( this , index , x ) !! Sets the requested Y data point. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 2 ) = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine pd2d_set_data_1 ( this , x , y , c , ps , err ) !! Defines the data set to plot. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinate data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinate data. real ( real64 ), intent ( in ), dimension (:), optional :: c !! An N-element array defining how color should vary with the !! current colormap for each value. real ( real64 ), intent ( in ), dimension (:), optional :: ps !! An N-element array defining the size of each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error-handling object. ! Local Variables integer ( int32 ) :: i , n , flag , ncols class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) ncols = 2 if ( present ( c )) ncols = ncols + 1 if ( present ( ps )) ncols = ncols + 1 if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pd2d_set_data_1\" , & \"y\" , n , size ( y )) return end if if ( present ( c )) then if ( size ( c ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pd2d_set_data_1\" , \"c\" , n , size ( c )) return end if end if if ( present ( ps )) then if ( size ( ps ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pd2d_set_data_1\" , \"ps\" , n , size ( ps )) return end if end if ! Process if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , ncols ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pd2d_set_data_1\" , flag ) return end if ! if (present(c)) then ! call this%set_use_data_dependent_colors(.true.) ! do concurrent (i = 1:n) ! this%m_data(i, 1) = x(i) ! this%m_data(i, 2) = y(i) ! this%m_data(i, 3) = c(i) ! end do ! else ! call this%set_use_data_dependent_colors(.false.) ! do concurrent (i = 1:n) ! this%m_data(i, 1) = x(i) ! this%m_data(i, 2) = y(i) ! end do ! end if if ( present ( c ) . and . present ( ps )) then call this % set_use_data_dependent_colors (. true .) call this % set_use_variable_size_points (. true .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = ps ( i ) this % m_data ( i , 4 ) = c ( i ) end do else if ( present ( c ) . and . . not . present ( ps )) then call this % set_use_data_dependent_colors (. true .) call this % set_use_variable_size_points (. false .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = c ( i ) end do else if (. not . present ( c ) . and . present ( ps )) then call this % set_use_data_dependent_colors (. false .) call this % set_use_variable_size_points (. true .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = ps ( i ) end do else call this % set_use_data_dependent_colors (. false .) call this % set_use_variable_size_points (. false .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) end do end if end subroutine ! ------------------------------------------------------------------------------ pure function pd2d_get_draw_against_y2 ( this ) result ( x ) !! Gets a value determining if the data should be plotted against !! the secondary y-axis. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. logical :: x !! Returns true if the data should be plotted against the secondary !! y-axis; else, false to plot against the primary y-axis. x = this % m_useY2 end function ! -------------------- subroutine pd2d_set_draw_against_y2 ( this , x ) !! Sets a value determining if the data should be plotted against !! the secondary y-axis. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. logical , intent ( in ) :: x !! Set to true if the data should be plotted against the !! secondary y-axis; else, false to plot against the primary y-axis. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ subroutine pd2d_set_data_2 ( this , y , err ) !! Defines the data set to plot. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y-coordinate data. This !! data will be plotted against its own index. class ( errors ), intent ( inout ), optional , target :: err !! An error-handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( y ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Process if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 2 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pd2d_set_data_2\" , flag ) return end if do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = real ( i , real64 ) this % m_data ( i , 2 ) = y ( i ) end do end subroutine ! ------------------------------------------------------------------------------ function pd2d_get_x_array ( this ) result ( x ) !! Gets the stored X data array. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 1 ) end if end function ! ------------------------------------------------------------------------------ function pd2d_get_y_array ( this ) result ( x ) !! Gets the stored Y data array. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 2 ) end if end function ! ****************************************************************************** ! ADDED: OCT. 8, 2020 - JAC ! ------------------------------------------------------------------------------ function pd2d_get_c_array ( this ) result ( x ) !! Gets the stored color scaling data array. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then if ( size ( this % m_data , 2 ) == 3 ) then x = this % m_data (:, 3 ) else if ( size ( this % m_data , 2 ) == 4 ) then x = this % m_data (:, 4 ) end if end if end function ! ------------------------------------------------------------------------------ function pd2d_get_ps_array ( this ) result ( x ) !! Gets the stored point size data array. class ( plot_data_2d ), intent ( in ) :: this !! The plot_data_2d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then if ( size ( this % m_data , 2 ) > 2 ) then x = this % m_data (:, 3 ) end if end if end function ! ------------------------------------------------------------------------------ subroutine pd2d_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_2d ), intent ( inout ) :: this !! The plot_data_2d object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_2d.f90.html"},{"title":"fplot_plot_data_3d.f90 – FPLOT","text":"Source Code module fplot_plot_data_3d use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_simplify use strings implicit none private public :: plot_data_3d type , extends ( scatter_plot_data ) :: plot_data_3d !! Defines a three-dimensional plot data set. real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! An N-by-3 matrix containing the x, y, and z data points. contains procedure , public :: get_count => pd3d_get_data_count procedure , public :: get_x => pd3d_get_x_data procedure , public :: set_x => pd3d_set_x_data procedure , public :: get_y => pd3d_get_y_data procedure , public :: set_y => pd3d_set_y_data procedure , public :: get_z => pd3d_get_z_data procedure , public :: set_z => pd3d_set_z_data procedure , public :: get_axes_string => pd3d_get_axes_cmd procedure , public :: get_data_string => pd3d_get_data_cmd procedure , public :: define_data => pd3d_set_data_1 procedure , public :: get_x_data => pd3d_get_x_array procedure , public :: get_y_data => pd3d_get_y_array procedure , public :: get_z_data => pd3d_get_z_array procedure , public :: get_color_data => pd3d_get_c_array procedure , public :: get_point_size_data => pd3d_get_c_array procedure , public :: clear_data => pd3d_clear_data end type contains ! ------------------------------------------------------------------------------ pure function pd3d_get_data_count ( this ) result ( x ) !! Gets the number of data points. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. integer ( int32 ) :: x !! The number of data points. if ( allocated ( this % m_data )) then x = size ( this % m_data , 1 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pd3d_get_x_data ( this , index ) result ( x ) !! Gets the requested X data point. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 1 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd3d_set_x_data ( this , index , x ) !! Sets the requested X data point. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 1 ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pd3d_get_y_data ( this , index ) result ( x ) !! Gets the requested Y data point. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 2 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd3d_set_y_data ( this , index , x ) !! Sets the requested Y data point. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 2 ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pd3d_get_z_data ( this , index ) result ( x ) !! Gets the requested Z data point. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to retrieve. real ( real64 ) :: x !! The requested data point. if ( allocated ( this % m_data )) then x = this % m_data ( index , 3 ) else x = 0.0d0 end if end function ! -------------------- subroutine pd3d_set_z_data ( this , index , x ) !! Sets the requested Z data point. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. integer ( int32 ), intent ( in ) :: index !! The index of the data point to replace. real ( real64 ), intent ( in ) :: x !! The data point. if ( allocated ( this % m_data )) then this % m_data ( index , 3 ) = x end if end subroutine ! ------------------------------------------------------------------------------ function pd3d_get_axes_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string defining which axes the data !! is to be plotted against. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. character ( len = :), allocatable :: x !! The command string. ! Output x = \"\" end function ! ------------------------------------------------------------------------------ function pd3d_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data to plot. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i character :: delimiter , nl real ( real64 ), allocatable , dimension (:) :: xv , yv , zv , cv , ps real ( real64 ), allocatable , dimension (:,:) :: pts real ( real64 ) :: tol , maxz , minz , eps logical :: usecolors , usevarpoints ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) usecolors = this % get_use_data_dependent_colors () usevarpoints = this % get_use_variable_size_points () ! Process xv = this % get_x_data () yv = this % get_y_data () zv = this % get_z_data () if ( usecolors . and . usevarpoints ) then cv = this % get_color_data () ps = this % get_point_size_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( zv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( ps ( i ))) call str % append ( delimiter ) call str % append ( to_string ( cv ( i ))) call str % append ( nl ) end do else if ( usecolors . and . . not . usevarpoints ) then cv = this % get_color_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( zv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( cv ( i ))) call str % append ( nl ) end do else if (. not . usecolors . and . usevarpoints ) then ps = this % get_point_size_data () do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( zv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( ps ( i ))) call str % append ( nl ) end do else if ( this % get_simplify_data ()) then maxz = maxval ( zv ) minz = minval ( zv ) tol = abs ( this % get_simplification_factor () * ( maxz - minz )) eps = 1 0.0d0 * epsilon ( eps ) if ( tol < eps ) tol = eps pts = simplify_polyline ( xv , yv , zv , tol ) do i = 1 , size ( pts , 1 ) call str % append ( to_string ( pts ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( pts ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( pts ( i , 3 ))) call str % append ( nl ) end do else do i = 1 , size ( xv ) call str % append ( to_string ( xv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( yv ( i ))) call str % append ( delimiter ) call str % append ( to_string ( zv ( i ))) call str % append ( nl ) end do end if end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine pd3d_set_data_1 ( this , x , y , z , c , ps , err ) !! Defines the data set. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinate data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinate data. real ( real64 ), intent ( in ), dimension (:) :: z !! An N-element array containing the z coordinate data. real ( real64 ), intent ( in ), dimension (:), optional :: c !! An N-element array defining how color should vary with the !! current colormap for each value. real ( real64 ), intent ( in ), dimension (:), optional :: ps !! An N-element array defining the size of each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag , ncols class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) ncols = 3 if ( present ( c )) ncols = ncols + 1 if ( present ( ps )) ncols = ncols + 1 if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pd3d_set_data_1\" , & \"y\" , n , size ( y )) return end if if ( size ( z ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pd3d_set_data_1\" , & \"z\" , n , size ( z )) return end if if ( present ( c )) then if ( size ( c ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pd3d_set_data_1\" , \"c\" , n , size ( c )) return end if end if if ( present ( ps )) then if ( size ( ps ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pd3d_set_data_1\" , \"ps\" , n , size ( ps )) end if end if ! Process if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , ncols ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pd3d_set_data_1\" , flag ) return end if if ( present ( c ) . and . present ( ps )) then call this % set_use_data_dependent_colors (. true .) call this % set_use_variable_size_points (. true .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = z ( i ) this % m_data ( i , 4 ) = ps ( i ) this % m_data ( i , 5 ) = c ( i ) end do else if ( present ( c ) . and . . not . present ( ps )) then call this % set_use_data_dependent_colors (. true .) call this % set_use_variable_size_points (. false .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = z ( i ) this % m_data ( i , 4 ) = c ( i ) end do else if (. not . present ( c ) . and . present ( ps )) then call this % set_use_data_dependent_colors (. false .) call this % set_use_variable_size_points (. true .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = z ( i ) this % m_data ( i , 4 ) = ps ( i ) end do else call this % set_use_data_dependent_colors (. false .) call this % set_use_variable_size_points (. false .) do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = z ( i ) end do end if end subroutine ! ------------------------------------------------------------------------------ function pd3d_get_x_array ( this ) result ( x ) !! Gets the stored X data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 1 ) end if end function ! ------------------------------------------------------------------------------ function pd3d_get_y_array ( this ) result ( x ) !! Gets the stored Y data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 2 ) end if end function ! ------------------------------------------------------------------------------ function pd3d_get_z_array ( this ) result ( x ) !! Gets the stored Z data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then x = this % m_data (:, 3 ) end if end function ! ****************************************************************************** ! ADDED: OCT. 9, 2020 - JAC ! ------------------------------------------------------------------------------ function pd3d_get_c_array ( this ) result ( x ) !! Gets the stored color scaling data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then if ( size ( this % m_data , 2 ) == 4 ) then x = this % m_data (:, 4 ) else if ( size ( this % m_data , 2 ) == 5 ) then x = this % m_data (:, 5 ) end if end if end function ! ------------------------------------------------------------------------------ function pd3d_get_ps_array ( this ) result ( x ) !! Gets the stored point scaling data array. class ( plot_data_3d ), intent ( in ) :: this !! The plot_data_3d object. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the stored data array. ! Process if ( allocated ( this % m_data )) then if ( size ( this % m_data , 2 ) > 3 ) then x = this % m_data (:, 4 ) end if end if end function ! ------------------------------------------------------------------------------ subroutine pd3d_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_3d ), intent ( inout ) :: this !! The plot_data_3d object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_3d.f90.html"},{"title":"fplot_colors.f90 – FPLOT","text":"Source Code ! fplot_colors.f90 module fplot_colors use iso_fortran_env implicit none private public :: color public :: operator ( == ) public :: operator ( /= ) public :: CLR_BLACK public :: CLR_WHITE public :: CLR_RED public :: CLR_LIME public :: CLR_BLUE public :: CLR_YELLOW public :: CLR_CYAN public :: CLR_MAGENTA public :: CLR_SILVER public :: CLR_GRAY public :: CLR_MAROON public :: CLR_OLIVE public :: CLR_GREEN public :: CLR_PURPLE public :: CLR_TEAL public :: CLR_NAVY public :: CLR_ORANGE public :: color_list type color !! Describes an RGB color. integer ( int32 ), public :: red = 0 !! The red component of the color (must be between 0 and 255). integer ( int32 ), public :: green = 0 !! The green component of the color (must be between 0 and 255). integer ( int32 ), public :: blue = 255 !! The blue component of the color (must be between 0 and 255). integer ( int32 ), public :: alpha = 0 !! The alpha component of the color (must be between 0 and 255). !! Notice, 0 is fully opaque and 255 is fully transparent. contains procedure , public , pass :: to_hex_string => clr_to_hex_string procedure , public , pass :: rgb_to_hex_string => clr_rgb_to_hex_string procedure , public , pass :: copy_from => clr_copy_from end type interface operator ( == ) module procedure :: clr_equals end interface interface operator ( /= ) module procedure :: clr_not_equals end interface type ( color ), parameter :: CLR_BLACK = color ( 0 , 0 , 0 , 0 ) !! Black. type ( color ), parameter :: CLR_WHITE = color ( 255 , 255 , 255 , 0 ) !! White. type ( color ), parameter :: CLR_RED = color ( 255 , 0 , 0 , 0 ) !! Red. type ( color ), parameter :: CLR_LIME = color ( 0 , 255 , 0 , 0 ) !! Lime. type ( color ), parameter :: CLR_BLUE = color ( 0 , 0 , 255 , 0 ) !! Blue. type ( color ), parameter :: CLR_YELLOW = color ( 255 , 255 , 0 , 0 ) !! Yellow. type ( color ), parameter :: CLR_CYAN = color ( 0 , 255 , 255 , 0 ) !! Cyan. type ( color ), parameter :: CLR_MAGENTA = color ( 255 , 0 , 255 , 0 ) !! Magenta. type ( color ), parameter :: CLR_SILVER = color ( 192 , 192 , 192 , 0 ) !! Silver. type ( color ), parameter :: CLR_GRAY = color ( 128 , 128 , 128 , 0 ) !! Gray. type ( color ), parameter :: CLR_MAROON = color ( 128 , 0 , 0 , 0 ) !! Maroon. type ( color ), parameter :: CLR_OLIVE = color ( 128 , 128 , 0 , 0 ) !! Olive. type ( color ), parameter :: CLR_GREEN = color ( 0 , 128 , 0 , 0 ) !! Green. type ( color ), parameter :: CLR_PURPLE = color ( 128 , 0 , 128 , 0 ) !! Purple. type ( color ), parameter :: CLR_TEAL = color ( 0 , 128 , 128 , 0 ) !! Teal. type ( color ), parameter :: CLR_NAVY = color ( 0 , 0 , 128 , 0 ) !! Navy. type ( color ), parameter :: CLR_ORANGE = color ( 255 , 165 , 0 , 0 ) !! Orange. ! A list of colors that can be cycled through by plotting code type ( color ), parameter , dimension ( 7 ) :: color_list = [ & color ( 0 , int ( 0.447 * 255 ), int ( 0.741 * 255 ), 0 ), & color ( int ( 0.85 * 255 ), int ( 0.325 * 255 ), int ( 0.098 * 255 ), 0 ), & color ( int ( 0.929 * 255 ), int ( 0.694 * 255 ), int ( 0.125 * 255 ), 0 ), & color ( int ( 0.494 * 255 ), int ( 0.184 * 255 ), int ( 0.556 * 255 ), 0 ), & color ( int ( 0.466 * 255 ), int ( 0.674 * 255 ), int ( 0.188 * 255 ), 0 ), & color ( int ( 0.301 * 255 ), int ( 0.745 * 255 ), int ( 0.933 * 255 ), 0 ), & color ( int ( 0.635 * 255 ), int ( 0.078 * 255 ), int ( 0.184 * 255 ), 0 )] contains ! ------------------------------------------------------------------------------ pure function clr_to_hex_string ( this ) result ( txt ) !! Returns the color in hexadecimal format. class ( color ), intent ( in ) :: this !! The color object. character ( 8 ) :: txt !! A string containing the hexadecimal equivalent. ! Local Variables integer ( int32 ) :: r , g , b , a , clr ! Clip each color if necessary if ( this % red < 0 ) then r = 0 else if ( this % red > 255 ) then r = 255 else r = this % red end if if ( this % green < 0 ) then g = 0 else if ( this % green > 255 ) then g = 255 else g = this % green end if if ( this % blue < 0 ) then b = 0 else if ( this % blue > 255 ) then b = 255 else b = this % blue end if if ( this % alpha < 0 ) then a = 0 else if ( this % alpha > 255 ) then a = 255 else a = this % alpha end if ! Build the color information clr = ishft ( a , 24 ) + ishft ( r , 16 ) + ishft ( g , 8 ) + b ! Convert the integer to a hexadecimal string write ( txt , '(Z8.8)' ) clr end function ! ------------------------------------------------------------------------------ pure function clr_rgb_to_hex_string ( this ) result ( txt ) !! Returns the color in hexadecimal format ignoring any alpha channel. class ( color ), intent ( in ) :: this !! The color object. character ( 6 ) :: txt !! A string containing the hexadecimal equivalent. ! Local Variables integer ( int32 ) :: r , g , b , clr ! Clip each color if necessary if ( this % red < 0 ) then r = 0 else if ( this % red > 255 ) then r = 255 else r = this % red end if if ( this % green < 0 ) then g = 0 else if ( this % green > 255 ) then g = 255 else g = this % green end if if ( this % blue < 0 ) then b = 0 else if ( this % blue > 255 ) then b = 255 else b = this % blue end if ! Build the color information clr = ishft ( r , 16 ) + ishft ( g , 8 ) + b ! Convert the integer to a hexadecimal string write ( txt , '(Z6.6)' ) clr end function ! ------------------------------------------------------------------------------ subroutine clr_copy_from ( this , clr ) !! Copies another color to this color. class ( color ), intent ( inout ) :: this !! The color object. class ( color ), intent ( in ) :: clr !! The color to copy. this % red = clr % red this % green = clr % green this % blue = clr % blue end subroutine ! ****************************************************************************** ! ADDED: JAN. 09, 2024 - JAC ! ------------------------------------------------------------------------------ ! pure subroutine clr_assign(x, y) ! type(color), intent(out) :: x ! class(color), intent(in) :: y ! call x%copy_from(y) ! end subroutine ! ------------------------------------------------------------------------------ pure function clr_equals ( x , y ) result ( rst ) type ( color ), intent ( in ) :: x , y logical :: rst rst = . true . if ( x % red /= y % red . or . & x % green /= y % green . or . & x % blue /= y % blue & ) then rst = . false . end if end function ! ------------------------------------------------------------------------------ pure function clr_not_equals ( x , y ) result ( rst ) type ( color ), intent ( in ) :: x , y logical :: rst rst = . not . clr_equals ( x , y ) end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_colors.f90.html"},{"title":"fplot_plot_polar.f90 – FPLOT","text":"Source Code ! fplot_polar.f90 module fplot_plot_polar use iso_fortran_env use fplot_plot use fplot_terminal use fplot_errors use fplot_constants use fplot_legend use fplot_plot_data use fplot_plot_data_2d use fplot_colors use strings implicit none private public :: plot_polar type , extends ( plot ) :: plot_polar private !> @brief Allow the plot to autoscale? logical :: m_autoscale = . true . !> @brief The minimum radius value - only applicable if m_autoscale is !! false. real ( real64 ) :: m_minrad = 0.0d0 !> @brief The maximum radius value - only applicable if m_autoscale is !! false. real ( real64 ) :: m_maxrad = 1.0d0 !> @brief The location for theta = 0 character ( len = :), allocatable :: m_thetaStart !> @brief The direction for theta character ( len = :), allocatable :: m_thetaDirection contains final :: plr_clean_up procedure , public :: initialize => plr_init procedure , public :: get_command_string => plr_get_cmd procedure , public :: get_autoscale => plr_get_autoscale procedure , public :: set_autoscale => plr_set_autoscale procedure , public :: get_radial_limits => plr_get_limits procedure , public :: set_radial_limits => plr_set_limits procedure , public :: get_theta_start_position => plr_get_theta_start procedure , public :: set_theta_start_position => plr_set_theta_start procedure , public :: get_theta_direction => plr_get_theta_direction procedure , public :: set_theta_direction => plr_set_theta_direction procedure , public :: plr_push_data generic , public :: push => plr_push_data end type contains ! ------------------------------------------------------------------------------ subroutine plr_clean_up ( this ) !! Cleans up resources held by the plot_polar object. type ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. call this % free_resources () end subroutine ! ------------------------------------------------------------------------------ subroutine plr_init ( this , term , fname , err ) !! Initializes the plot_polar object. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Initialize the base class ! call plt_init(this, term, fname, errmgr) call this % plot % initialize ( term , fname , errmgr ) ! Initialize the rest of the object this % m_thetaStart = POLAR_THETA_RIGHT this % m_thetaDirection = POLAR_THETA_CCW end subroutine ! ------------------------------------------------------------------------------ function plr_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot_polar object. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. character ( len = :), allocatable :: x !! The command string. ! Local Variables integer ( int32 ) :: i , n type ( string_builder ) :: str type ( legend ), pointer :: leg real ( real64 ) :: lmargin , rmargin , tmargin , bmargin real ( real64 ) :: lim ( 2 ) ! class(plot_label), pointer :: lbl class ( plot_data ), pointer :: ptr type ( color ) :: clr ! Initialization call str % initialize () ! Call the base routine call str % append ( this % plot % get_command_string ()) ! Margin lmargin = this % get_left_margin () rmargin = this % get_right_margin () tmargin = this % get_top_margin () bmargin = this % get_bottom_margin () if ( lmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set lmargin at screen \" ) call str % append ( to_string ( lmargin )) end if if ( rmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set rmargin at screen \" ) call str % append ( to_string ( rmargin )) end if if ( tmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set tmargin at screen \" ) call str % append ( to_string ( tmargin )) end if if ( bmargin >= 0.0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set bmargin at screen \" ) call str % append ( to_string ( bmargin )) end if ! Polar-Specific Settings call str % append ( new_line ( 'a' )) call str % append ( \"unset border\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set polar\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set size square\" ) call str % append ( new_line ( 'a' )) call str % append ( \"unset xtics\" ) call str % append ( new_line ( 'a' )) call str % append ( \"unset ytics\" ) call str % append ( new_line ( 'a' )) call str % append ( 'set ttics 0, 30 format \"%g\".GPVAL_DEGREE_SIGN' ) call str % append ( new_line ( 'a' )) call str % append ( \"set mttics 3\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set theta \" ) call str % append ( this % get_theta_start_position ()) call str % append ( \" \" ) call str % append ( this % get_theta_direction ()) ! Radial Limits if (. not . this % get_autoscale ()) then lim = this % get_radial_limits () call str % append ( new_line ( 'a' )) call str % append ( \"set rrange [\" ) call str % append ( to_string ( lim ( 1 ))) call str % append ( \":\" ) call str % append ( to_string ( lim ( 2 ))) call str % append ( \"]\" ) end if ! Grid if ( this % get_show_gridlines ()) then call str % append ( new_line ( 'a' )) call str % append ( 'set grid r polar' ) call str % append ( \" lt \" ) call str % append ( to_string ( this % get_x_major_grid_line_style ())) call str % append ( \" lw \" ) call str % append ( to_string ( this % get_x_major_grid_line_width ())) call str % append ( ' lc rgb \"#' ) clr = this % get_x_major_grid_color () call str % append ( clr % rgb_to_hex_string ()) call str % append ( '\"' ) end if ! Title n = len_trim ( this % get_title ()) if ( n > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( 'set title \"' ) call str % append ( this % get_title ()) call str % append ( '\"' ) end if ! Border call str % append ( new_line ( 'a' )) if ( this % get_draw_border ()) then call str % append ( \"set border polar\" ) else call str % append ( \"set border 0\" ) end if call str % append ( new_line ( 'a' )) call str % append ( \"set border linewidth \" ) call str % append ( to_string ( this % get_border_line_width ())) ! Legend call str % append ( new_line ( 'a' )) leg => this % get_legend () if ( associated ( leg )) call str % append ( leg % get_command_string ()) ! ! Labels ! do i = 1, this%get_label_count() ! lbl => this%get_label(i) ! if (.not.associated(lbl)) cycle ! call str%append(new_line('a')) ! call str%append(lbl%get_command_string()) ! end do ! Define the datablock n = this % get_count () do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) call str % append ( \"$\" ) call str % append ( ptr % get_datablock_name ()) call str % append ( \" << EOD\" ) call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"EOD\" ) end do ! Define the plot function and data formatting commands call str % append ( new_line ( 'a' )) call str % append ( \"plot \" ) do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( ptr % get_command_string ()) if ( i /= n ) call str % append ( \", \" ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function plr_get_autoscale ( this ) result ( rst ) !! Gets a logical value determining if the axis should be !! automatically scaled to fit the data. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. logical :: rst !! Returns true if the plot will autoscale; else, false. rst = this % m_autoscale end function ! -------------------- subroutine plr_set_autoscale ( this , x ) !! Sets a logical value determining if the axis should be !! automatically scaled to fit the data. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. logical , intent ( in ) :: x !! Set to true if the plot will autoscale; else, false. this % m_autoscale = x end subroutine ! ------------------------------------------------------------------------------ pure function plr_get_limits ( this ) result ( rst ) !! Gets the radial axis limits if autoscaling is inactive. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. real ( real64 ) :: rst ( 2 ) !! A 2-element array containing the minimum and maximum limit !! values in that order. rst = [ this % m_minrad , this % m_maxrad ] end function ! -------------------- subroutine plr_set_limits ( this , x ) !! Sets the radial axis limits if autoscaling is inactive. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. real ( real64 ), intent ( in ) :: x ( 2 ) !! A 2-element array containing the minimum and maximum limit !! values in that order. this % m_minrad = minval ( x ) this % m_maxrad = maxval ( x ) end subroutine ! ------------------------------------------------------------------------------ pure function plr_get_theta_start ( this ) result ( rst ) !! Gets the position for \\theta = 0. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. character ( len = :), allocatable :: rst !! The starting position. It is one of the following flags. !! !! - POLAR_THETA_BOTTOM !! !! - POLAR_THETA_TOP !! !! - POLAR_THETA_RIGHT !! !! - POLAR_THETA_LEFT rst = this % m_thetaStart end function ! -------------------- subroutine plr_set_theta_start ( this , x ) !! Sets the position for \\theta = 0. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. character ( len = * ), intent ( in ) :: x !! The starting position. It is one of the following flags. !! !! - POLAR_THETA_BOTTOM !! !! - POLAR_THETA_TOP !! !! - POLAR_THETA_RIGHT !! !! - POLAR_THETA_LEFT if ( x /= POLAR_THETA_BOTTOM . and . & x /= POLAR_THETA_TOP . and . & x /= POLAR_THETA_LEFT . and . & x /= POLAR_THETA_RIGHT ) & then ! Reset to default this % m_thetaStart = POLAR_THETA_RIGHT else this % m_thetaStart = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plr_get_theta_direction ( this ) result ( rst ) !! Gets the \\theta direction. class ( plot_polar ), intent ( in ) :: this !! The plot_polar object. character ( len = :), allocatable :: rst !! The direction. It is one of the following flags. !! !! - POLAR_THETA_CCW !! !! - POLAR_THETA_CW rst = this % m_thetaDirection end function ! -------------------- subroutine plr_set_theta_direction ( this , x ) !! Sets the \\theta direction. class ( plot_polar ), intent ( inout ) :: this !! The plot_polar object. character ( len = * ), intent ( in ) :: x !! The direction. It is one of the following flags. !! !! - POLAR_THETA_CCW !! !! - POLAR_THETA_CW if ( x /= POLAR_THETA_CCW . and . x /= POLAR_THETA_CW ) then ! Reset to default this % m_thetaDirection = POLAR_THETA_CCW else this % m_thetaDirection = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine plr_push_data ( this , angle , radial , lw , name , ls , lc ) !! Adds a data set to the plot. class ( plot_polar ), intent ( inout ) :: this !! The [[plot_polar]] object. real ( real64 ), intent ( in ), dimension (:) :: angle !! The angular values. real ( real64 ), intent ( in ), dimension ( size ( angle )) :: radial !! The radial values. real ( real32 ), intent ( in ), optional :: lw !! The line width. character ( len = * ), intent ( in ), optional :: name !! A name to associate with the data set. integer ( int32 ), intent ( in ), optional :: ls !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID type ( color ), intent ( in ), optional :: lc !! The line color. type ( plot_data_2d ) :: pd call pd % define_data ( angle , radial ) if ( present ( lw )) call pd % set_line_width ( lw ) if ( present ( name )) call pd % set_name ( name ) if ( present ( ls )) call pd % set_line_style ( ls ) if ( present ( lc )) call pd % set_line_color ( lc ) call this % push ( pd ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_polar.f90.html"},{"title":"fplot_plot_bar.f90 – FPLOT","text":"Source Code ! fplot_plot_bar.f90 module fplot_plot_bar use iso_fortran_env use fplot_plot_2d use strings implicit none private public :: plot_bar type , extends ( plot_2d ) :: plot_bar !! Defines a 2D plot tailored towards bar plotting. real ( real32 ), private :: m_barWidth = 1.0d0 !! A relative scaling of the width of a single bar. The value !! must be between 0 and 1 with 1 being full width. integer ( int32 ), private :: m_gap = 1 !! The default gap size between groups logical , private :: m_stacked = . false . !! True if bars should be stacked; else, false for side-by-side contains procedure , public :: get_bar_width => pb_get_bar_width procedure , public :: set_bar_width => pb_set_bar_width procedure , public :: get_command_string => pb_get_cmd procedure , public :: get_stacked => pb_get_stacked procedure , public :: set_stacked => pb_set_stacked procedure , public :: get_spacing => pb_get_spacing procedure , public :: set_spacing => pb_set_spacing end type contains ! ------------------------------------------------------------------------------ pure function pb_get_bar_width ( this ) result ( x ) !! Gets the bar width scaling factor. class ( plot_bar ), intent ( in ) :: this !! The plot_bar object. real ( real32 ) :: x !! The scaling factor. x = this % m_barWidth end function ! ------------------------------------------------------------------------------ subroutine pb_set_bar_width ( this , x ) !! Sets the bar width scaling factor. class ( plot_bar ), intent ( inout ) :: this !! The plot_bar object. real ( real32 ), intent ( in ) :: x !! The scaling factor. The value must be in the set [0, 1]; else, the !! value will be shifted accordingly. if ( x > 1.0 ) then this % m_barWidth = 1.0 else if ( x < 0.0 ) then this % m_barWidth = 0.0 else this % m_barWidth = x end if end subroutine ! ------------------------------------------------------------------------------ function pb_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT commands required to draw the plot. class ( plot_bar ), intent ( in ) :: this !! The plot_bar object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str ! Initialization call str % initialize () ! Style call str % append ( new_line ( 'a' )) call str % append ( \"set style data histogram\" ) if ( this % get_stacked ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set style histogram rowstacked\" ) else call str % append ( new_line ( 'a' )) call str % append ( \"set style histogram cluster gap \" ) call str % append ( to_string ( this % get_spacing ())) end if ! Box Width call str % append ( new_line ( 'a' )) call str % append ( \"set boxwidth \" ) call str % append ( to_string ( this % get_bar_width ())) call str % append ( \" relative\" ) ! Call the base routine to establish the remainder of the plot call str % append ( this % plot_2d % get_command_string ()) ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function pb_get_stacked ( this ) result ( rst ) !! Gets a value determining if data sets should be stacked (true) or !! left side-by-side (false). class ( plot_bar ), intent ( in ) :: this !! The [[plot_bar]] object. logical :: rst !! True if multiple data sets should be stacked; else, false. rst = this % m_stacked end function ! -------------------- subroutine pb_set_stacked ( this , x ) !! Gets a value determining if data sets should be stacked (true) or !! left side-by-side (false). class ( plot_bar ), intent ( inout ) :: this !! The [[plot_bar]] object. logical , intent ( in ) :: x !! True if multiple data sets should be stacked; else, false. this % m_stacked = x end subroutine ! ------------------------------------------------------------------------------ pure function pb_get_spacing ( this ) result ( rst ) !! Gets the spacing between clusters of data sets. class ( plot_bar ), intent ( in ) :: this !! The [[plot+bar]] object. integer ( int32 ) :: rst !! The spacing. rst = this % m_gap end function ! -------------------- subroutine pb_set_spacing ( this , x ) !! Sets the spacing between clusters of data sets. class ( plot_bar ), intent ( inout ) :: this !! The [[plot+bar]] object. integer ( int32 ), intent ( in ) :: x !! The spacing. this % m_gap = x end subroutine ! ------------------------------------------------------------------------------ ! TO DO YET: ! - lighting end module","tags":"","loc":"sourcefile\\fplot_plot_bar.f90.html"},{"title":"fplot_arrow.f90 – FPLOT","text":"Source Code module fplot_arrow use iso_fortran_env use fplot_plot_object use fplot_colors use fplot_constants use strings implicit none private public :: plot_arrow type , extends ( plot_object ) :: plot_arrow !! Defines an arrow that can be drawn on a plot. logical , private :: m_visible = . true . !! Visible? real ( real32 ), private , dimension ( 3 ) :: m_tail = [ 0.0 , 0.0 , 0.0 ] !! The x, y, z coordinates of the tail. real ( real32 ), private , dimension ( 3 ) :: m_head = [ 0.0 , 0.0 , 0.0 ] !! The x, y, z coordinates of the head. type ( color ), private :: m_color = CLR_BLACK !! The arrow color. integer ( int32 ), private :: m_linestyle = LINE_SOLID !! The line style. real ( real32 ), private :: m_linewidth = 1.5 !! The line width. integer ( int32 ), private :: m_head_type = ARROW_HEAD !! The head configuration. integer ( int32 ), private :: m_filling = ARROW_FILLED !! Arrow filling. logical , private :: m_front = . true . !! Move to front? real ( real32 ), private :: m_size = 0.375 !! Arrow head size. real ( real32 ), private :: m_angle = 1 0.0 !! Arrow head angle. real ( real32 ), private :: m_backangle = 9 0.0 !! Arrow head back angle. logical , private :: m_use_default_size = . true . !! Use default head size. contains procedure , public :: get_is_visible => par_get_is_visible procedure , public :: set_is_visible => par_set_is_visible procedure , public :: get_tail_location => par_get_tail generic , public :: set_tail_location => par_set_tail_1 , & par_set_tail_2 , par_set_tail_3 procedure , private :: par_set_tail_1 procedure , private :: par_set_tail_2 procedure , private :: par_set_tail_3 procedure , public :: get_head_location => par_get_head generic , public :: set_head_location => par_set_head_1 , & par_set_head_2 , par_set_head_3 procedure , private :: par_set_head_1 procedure , private :: par_set_head_2 procedure , private :: par_set_head_3 procedure , public :: get_color => par_get_color procedure , public :: set_color => par_set_color procedure , public :: get_line_style => par_get_line_style procedure , public :: set_line_style => par_set_line_style procedure , public :: get_line_width => par_get_line_width procedure , public :: set_line_width => par_set_line_width procedure , public :: get_head_type => par_get_head_type procedure , public :: set_head_type => par_set_head_type procedure , public :: get_head_fill => par_get_fill procedure , public :: set_head_fill => par_set_fill procedure , public :: get_move_to_front => par_get_move_to_front procedure , public :: set_move_to_front => par_set_move_to_front procedure , public :: get_head_size => par_get_head_size procedure , public :: set_head_size => par_set_head_size procedure , public :: get_head_angle => par_get_head_angle procedure , public :: set_head_angle => par_set_head_angle procedure , public :: get_head_back_angle => par_get_head_back_angle procedure , public :: set_head_back_angle => par_set_head_back_angle procedure , public :: get_use_default_size => par_get_use_default_size procedure , public :: set_use_default_size => par_set_use_default_size procedure , public :: get_command_string => par_get_cmd end type contains ! ------------------------------------------------------------------------------ pure function par_get_is_visible ( this ) result ( rst ) !! Gets a value determining if the arrow is visible. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. logical :: rst !! True if the arrow is visible; else, false. rst = this % m_visible end function ! -------------------- subroutine par_set_is_visible ( this , x ) !! Sets a value determining if the arrow is visible. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. logical , intent ( in ) :: x !! True if the arrow is visible; else, false. this % m_visible = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_tail ( this ) result ( rst ) !! Gets the coordinates of the arrow's tail. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ), dimension ( 3 ) :: rst !! A 3-element array containing the x, y, and z coordinates of the !! arrow's tail. rst = this % m_tail end function ! -------------------- subroutine par_set_tail_1 ( this , x ) !! Sets the coordinates of the arrow's tail. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x ( 3 ) !! A 3-element array containing the x, y, and z coordinates of the !! arrow's tail. this % m_tail = x end subroutine ! -------------------- subroutine par_set_tail_2 ( this , x , y ) !! Sets the coordinates of the arrow's tail. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The x-coordinate of the arrow's tail. real ( real32 ), intent ( in ) :: y !! !! The y-coordinate of the arrow's tail. this % m_tail = [ x , y , 0.0 ] end subroutine ! -------------------- subroutine par_set_tail_3 ( this , x , y , z ) !! Sets the coordinates of the arrow's tail. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The x-coordinate of the arrow's tail. real ( real32 ), intent ( in ) :: y !! The y-coordinate of the arrow's tail. real ( real32 ), intent ( in ) :: z !! The z-coordinate of the arrow's tail. this % m_tail = [ x , y , z ] end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head ( this ) result ( rst ) !! Gets the coordinates of the arrow's head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ), dimension ( 3 ) :: rst !! A 3-element array containing the x, y, and z coordinates of the !! arrow's head. rst = this % m_head end function ! -------------------- subroutine par_set_head_1 ( this , x ) !! Sets the location of the arrow's head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x ( 3 ) !! A 3-element array containing the x, y, and z coordinates of the !! arrow's head. this % m_head = x end subroutine ! -------------------- subroutine par_set_head_2 ( this , x , y ) !! Sets the location of the arrow's head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The x-coordinate of the arrow's head. real ( real32 ), intent ( in ) :: y !! The y-coordinate of the arrow's head. this % m_head = [ x , y , 0.0 ] end subroutine ! -------------------- subroutine par_set_head_3 ( this , x , y , z ) !! Sets the location of the arrow's head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The x-coordinate of the arrow's head. real ( real32 ), intent ( in ) :: y !! The y-coordinate of the arrow's head. real ( real32 ), intent ( in ) :: z !! The z-coordinate of the arrow's head. this % m_head = [ x , y , z ] end subroutine ! ------------------------------------------------------------------------------ pure function par_get_color ( this ) result ( rst ) !! Gets the color of the arrow. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. type ( color ) :: rst !! The color. rst = this % m_color end function ! -------------------- subroutine par_set_color ( this , x ) !! Sets the color of the arrow. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. type ( color ), intent ( in ) :: x !! The color. this % m_color = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_line_style ( this ) result ( rst ) !! Gets the line style used to draw the arrow. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. integer ( int32 ) :: rst !! The line style. rst = this % m_linestyle end function ! -------------------- subroutine par_set_line_style ( this , x ) !! Sets the line style used to draw the arrow. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. integer ( int32 ), intent ( in ) :: x !! The line style. The value must be one of the following. !! !! - LINE_SOLID !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! If the value is not one of the above, the command is ignored. if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_linestyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function par_get_line_width ( this ) result ( rst ) !! Gets the width of the lines used to draw the arrow. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ) :: rst !! The width of the line. rst = this % m_linewidth end function ! -------------------- subroutine par_set_line_width ( this , x ) !! Sets the width of the lines used to draw the arrow. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The width of the line. this % m_linewidth = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head_type ( this ) result ( rst ) !! Gets the type of arrow head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. integer ( int32 ) :: rst !! The arrow head type. rst = this % m_head_type end function ! -------------------- subroutine par_set_head_type ( this , x ) !! Sets the type of arrow head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. integer ( int32 ), intent ( in ) :: x !! The arrow head type. It must be one of the following constants. !! !! - ARROW_HEAD !! !! - ARROW_BACKHEAD !! !! - ARROW_HEADS !! !! - ARROW_NO_HEAD !! !! If the value is not one of the above, the command is ignored. if ( x == ARROW_BACKHEAD . or . & x == ARROW_HEAD . or . & x == ARROW_HEADS . or . & x == ARROW_NO_HEAD & ) then this % m_head_type = x end if end subroutine ! ------------------------------------------------------------------------------ pure function par_get_fill ( this ) result ( rst ) !! Gets a flag denoting the head fill type. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. integer ( int32 ) :: rst !! The flag denoting head fill. rst = this % m_filling end function ! -------------------- subroutine par_set_fill ( this , x ) !! Sets a flag denoting the head fill type. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. integer ( int32 ), intent ( in ) :: x !! The flag denoting head fill. It must be one of the following !! constants. !! !! - ARROW_FILLED !! !! - ARROW_EMPTY !! !! - ARROW_NO_BORDER !! !! - ARROW_NO_FILL !! !! If the value is not one of the above, the command is ignored. if ( x == ARROW_FILLED . or . & x == ARROW_EMPTY . or . & x == ARROW_NO_BORDER . or . & x == ARROW_NO_FILL & ) then this % m_filling = x end if end subroutine ! ------------------------------------------------------------------------------ pure function par_get_move_to_front ( this ) result ( rst ) !! Gets a value determining if the arrow should be moved to the front. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. logical :: rst !! True if the arrow should be moved to the front; else, false. rst = this % m_front end function ! -------------------- subroutine par_set_move_to_front ( this , x ) !! Sets a value determining if the arrow should be moved to the front. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. logical , intent ( in ) :: x !! True if the arrow should be moved to the front; else, false. this % m_front = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head_size ( this ) result ( rst ) !! Gets the size of the arrow head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ) :: rst !! The head size. rst = this % m_size end function ! -------------------- subroutine par_set_head_size ( this , x ) !! Sets the size of the arrow head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The head size. this % m_size = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head_angle ( this ) result ( rst ) !! Gets the angle of the arrow head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ) :: rst !! The angle, in degrees. rst = this % m_angle end function ! -------------------- subroutine par_set_head_angle ( this , x ) !! Sets the angle of the arrow head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The angle, in degrees. this % m_angle = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_head_back_angle ( this ) result ( rst ) !! Gets the angle of the back of the arrow head. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. real ( real32 ) :: rst !! The angle, in degrees. rst = this % m_backangle end function ! -------------------- subroutine par_set_head_back_angle ( this , x ) !! Sets the angle of the back of the arrow head. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. real ( real32 ), intent ( in ) :: x !! The angle, in degrees. this % m_backangle = x end subroutine ! ------------------------------------------------------------------------------ pure function par_get_use_default_size ( this ) result ( rst ) !! Gets a value determining if arrow head sizing defaults should be used. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. logical :: rst !! True if the defaults should be used; else, false. rst = this % m_use_default_size end function ! -------------------- subroutine par_set_use_default_size ( this , x ) !! Sets a value determining if arrow head sizing defaults should be used. class ( plot_arrow ), intent ( inout ) :: this !! The plot_arrow object. logical , intent ( in ) :: x !! True if the defaults should be used; else, false. this % m_use_default_size = x end subroutine ! ------------------------------------------------------------------------------ function par_get_cmd ( this ) result ( rst ) !! Returns the appropriate GNUPLOT command string to establish appropriate !! parameters. class ( plot_arrow ), intent ( in ) :: this !! The plot_arrow object. character ( len = :), allocatable :: rst !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str type ( color ) :: clr real ( real32 ) :: tail ( 3 ), head ( 3 ) ! Quick Return if (. not . this % get_is_visible ()) then rst = \"\" return end if ! Command call str % append ( \"set arrow\" ) ! Position Info tail = this % get_tail_location () head = this % get_head_location () call str % append ( \" from \" ) call str % append ( to_string ( tail ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( tail ( 2 ))) call str % append ( \",\" ) call str % append ( to_string ( tail ( 3 ))) call str % append ( \" to \" ) call str % append ( to_string ( head ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( head ( 2 ))) call str % append ( \",\" ) call str % append ( to_string ( head ( 3 ))) ! Head Type select case ( this % get_head_type ()) case ( ARROW_BACKHEAD ) call str % append ( \" backhead\" ) case ( ARROW_HEAD ) call str % append ( \" head\" ) case ( ARROW_HEADS ) call str % append ( \" heads\" ) case ( ARROW_NO_HEAD ) call str % append ( \" nohead\" ) end select if ( this % get_head_type () /= ARROW_NO_HEAD ) then ! Fill Info select case ( this % get_head_fill ()) case ( ARROW_FILLED ) call str % append ( \" filled\" ) case ( ARROW_EMPTY ) call str % append ( \" empty\" ) case ( ARROW_NO_BORDER ) call str % append ( \" noborder\" ) case ( ARROW_NO_FILL ) call str % append ( \" nofilled\" ) end select ! Size if (. not . this % get_use_default_size ()) then call str % append ( \" size \" ) call str % append ( to_string ( this % get_head_size ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_head_angle ())) call str % append ( \",\" ) call str % append ( to_string ( this % get_head_back_angle ())) end if end if ! Front/Back if ( this % get_move_to_front ()) then call str % append ( \" front\" ) else call str % append ( \" back\" ) end if ! Line Color clr = this % get_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Line Style call str % append ( \" lt \" ) call str % append ( to_string ( this % get_line_style ())) if ( this % get_line_style () /= LINE_SOLID ) then call str % append ( \" dashtype \" ) call str % append ( to_string ( this % get_line_style ())) end if ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ ! pure subroutine par_assign(x, y) ! type(plot_arrow), intent(out) :: x ! class(plot_arrow), intent(in) :: y ! x%m_visible = y%m_visible ! x%m_tail = y%m_tail ! x%m_head = y%m_head ! x%m_color = y%m_color ! x%m_linestyle = y%m_linestyle ! x%m_linewidth = y%m_linewidth ! x%m_head_type = y%m_head_type ! x%m_filling = y%m_filling ! x%m_front = y%m_front ! x%m_size = y%m_size ! x%m_angle = y%m_angle ! x%m_backangle = y%m_backangle ! x%m_use_default_size = y%m_use_default_size ! end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_arrow.f90.html"},{"title":"fplot_png_terminal.f90 – FPLOT","text":"Source Code ! fplot_png_terminal.f90 module fplot_png_terminal use iso_fortran_env use strings use fplot_terminal use fplot_constants implicit none private public :: png_terminal type , extends ( file_terminal ) :: png_terminal !! Defines a terminal used for producing PNG outputs. character ( len = 17 ), private :: m_id = \"pngcairo enhanced\" !! The terminal ID string contains procedure , public :: get_id_string => png_get_term_string end type contains ! ------------------------------------------------------------------------------ function png_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( png_terminal ), intent ( in ) :: this !! The png_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_png_terminal.f90.html"},{"title":"fplot_colormap.f90 – FPLOT","text":"Source Code ! fplot_colormap.f90 module fplot_colormap use iso_fortran_env use fplot_plot_object use strings use fplot_errors use fplot_colors use forcolormap , cmap => Colormap ! avoid conflict with the internally defined colormap type implicit none private public :: cmap public :: colormap public :: cm_get_string_result public :: rainbow_colormap public :: hot_colormap public :: cool_colormap public :: parula_colormap public :: grey_colormap public :: earth_colormap public :: custom_colormap public :: spectral_colormap type , abstract , extends ( plot_object ) :: colormap !! A colormap object for a surface plot. character ( len = :), private , allocatable :: m_label !! The label to associate with the colormap. logical , private :: m_horizontal = . false . !! The colormap should be drawn horizontally. logical , private :: m_drawBorder = . false . !! Draw the colormap border. logical , private :: m_showTics = . false . !! Show the tic marks. real ( real32 ), private :: m_colorbarThickness = 0.02 !! The relative thickness of the colorbar itself. A value of 0 !! allows GNUPLOT to use it's defaults. This value is clamped to !! the range [0.0, 1.0]. real ( real32 ), private :: m_colorbarLength = 0.4 !! The relative length of the colorbar itself. A value of 0 !! allows GNUPLOT to use it's defaults. This value is clamped to !! the range [0.0, 1.0]. real ( real32 ), private :: m_axesSize ( 2 ) = [ 0.85 , 0.85 ] !! The size of the axes size defined as [width, height] !! clamped to the interval [0.0, 1.0]. real ( real32 ), private :: m_axesOrigin ( 2 ) = [ 0.05 , 0.05 ] !! The x-y coordinates of the axes clamped to the interval !! [0.0, 1.0]. contains procedure , public :: get_command_string => cm_get_cmd procedure ( cm_get_string_result ), deferred , public :: get_color_string procedure , public :: get_label => cm_get_label procedure , public :: set_label => cm_set_label procedure , public :: get_horizontal => cm_get_horizontal procedure , public :: set_horizontal => cm_set_horizontal procedure , public :: get_draw_border => cm_get_draw_border procedure , public :: set_draw_border => cm_set_draw_border procedure , public :: get_show_tics => cm_get_show_tics procedure , public :: set_show_tics => cm_set_show_tics procedure , public :: get_colorbar_thickness => cm_get_colorbar_thickness procedure , public :: set_colorbar_thickness => cm_set_colorbar_thickness procedure , public :: get_colorbar_length => cm_get_colorbar_length procedure , public :: set_colorbar_length => cm_set_colorbar_length procedure , public :: get_axes_size => cm_get_axes_size procedure , public :: set_axes_size => cm_set_axes_size procedure , public :: get_axes_origin => cm_get_axes_origin procedure , public :: set_axes_origin => cm_set_axes_origin end type interface function cm_get_string_result ( this ) result ( x ) !! Retrieves a string result from a colormap object. import colormap class ( colormap ), intent ( in ) :: this !! The colormap object. character ( len = :), allocatable :: x !! The string. end function end interface ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: rainbow_colormap !! Defines a rainbow colormap. contains procedure , public :: get_color_string => rcm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: hot_colormap !! Defines a colormap consisting of \"hot\" colors. contains procedure , public :: get_color_string => hcm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: cool_colormap !! Defines a colormap consisting of \"cool\" colors. contains procedure , public :: get_color_string => ccm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: parula_colormap !! Defines a colormap equivalent to the MATLAB parula colormap. contains procedure , public :: get_color_string => pcm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: grey_colormap !! Defines a grey-scaled colormap. contains procedure , public :: get_color_string => gcm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: earth_colormap !! Defines an earthy-colored colormap. contains procedure , public :: get_color_string => ecm_get_clr end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: custom_colormap !! Defines a custom colormap that utilizes the FORCOLORMAP library !! to provide the map. class ( cmap ), private , pointer :: m_map => null () !! The FORCOLORMAP object. contains final :: custom_final procedure , public :: get_color_string => custom_get_clr procedure , public :: set_colormap => custom_set procedure , public :: get_colormap => custom_get end type ! ------------------------------------------------------------------------------ type , extends ( colormap ) :: spectral_colormap !! Defines the spectral colormap available at !! https://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal. contains procedure , public :: get_color_string => spcm_get_clr end type contains ! ****************************************************************************** ! COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function cm_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this colormap object. class ( colormap ), intent ( in ) :: this !! The colormap object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str real ( real32 ) :: sz ( 2 ), origin ( 2 ), length , thickness ! Initialization call str % initialize () sz = this % get_axes_size () origin = this % get_axes_origin () length = this % get_colorbar_length () thickness = this % get_colorbar_thickness () ! Palette Definition call str % append ( \"set palette defined (\" ) call str % append ( this % get_color_string ()) call str % append ( \")\" ) if ( len ( this % get_label ()) > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( 'set cblabel \"' ) call str % append ( this % get_label ()) call str % append ( '\"' ) end if ! Orientation if ( this % get_horizontal ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set colorbox horizontal\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set size \" ) call str % append ( to_string ( sz ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( sz ( 2 ))) call str % append ( \"; set origin \" ) call str % append ( to_string ( origin ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( origin ( 2 ) + 0.075 )) call str % append ( new_line ( 'a' )) call str % append ( \"set colorbox user origin \" ) call str % append ( to_string ( 0.5 - 0.5 * length )) call str % append ( \",0.1 size \" ) call str % append ( to_string ( length )) call str % append ( \",\" ) call str % append ( to_string ( thickness )) if ( len ( this % get_label ()) > 0 ) then call str % append ( new_line ( 'a' )) call str % append ( \"set cblabel offset 0,0.8\" ) end if else call str % append ( new_line ( 'a' )) call str % append ( \"set colorbox vertical\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set size \" ) call str % append ( to_string ( sz ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( sz ( 2 ))) call str % append ( \"; set origin \" ) call str % append ( to_string ( origin ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( origin ( 2 ))) call str % append ( new_line ( 'a' )) call str % append ( \"set colorbox user origin 0.9,\" ) call str % append ( to_string ( 0.5 - 0.5 * length )) call str % append ( \" size \" ) call str % append ( to_string ( thickness )) call str % append ( \",\" ) call str % append ( to_string ( length )) end if ! Border & Tic Marks if (. not . this % get_draw_border ()) then ! Eliminate the border call str % append ( new_line ( 'a' )) call str % append ( \"set colorbox noborder\" ) ! Hide the tic marks call str % append ( new_line ( 'a' )) call str % append ( \"set cbtic scale 0\" ) else ! Respect the tic mark visibility setting if the border is shown if (. not . this % get_show_tics ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set cbtic scale 0\" ) end if end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function cm_get_label ( this ) result ( rst ) !! Gets the label to associate with the colorbar. class ( colormap ), intent ( in ) :: this !! The colormap object. character ( len = :), allocatable :: rst !! The label. if ( allocated ( this % m_label )) then rst = this % m_label else rst = \"\" end if end function ! -------------------- subroutine cm_set_label ( this , x ) !! Sets the label to associate with the colorbar. class ( colormap ), intent ( inout ) :: this !! The colormap object. character ( len = * ), intent ( in ) :: x !! The label. this % m_label = x end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_horizontal ( this ) result ( rst ) !! Gets a logical value determining if the colormap should be !! drawn horizontally and below the plot. class ( colormap ), intent ( in ) :: this !! The colormap object. logical :: rst !! Returns true if the colormap should be drawn horizontally; !! else, false. rst = this % m_horizontal end function ! -------------------- subroutine cm_set_horizontal ( this , x ) !! Sets a logical value determining if the colormap should be !! drawn horizontally and below the plot. class ( colormap ), intent ( inout ) :: this !! The colormap object. logical , intent ( in ) :: x !! Set to true if the colormap should be drawn horizontally; !! else, false. this % m_horizontal = x end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_draw_border ( this ) result ( rst ) !! Gets a logical value determining if the border should be drawn. class ( colormap ), intent ( in ) :: this !! The colormap object. logical :: rst !! Returns true if the border should be drawn; else, false. rst = this % m_drawBorder end function ! -------------------- subroutine cm_set_draw_border ( this , x ) !! Sets a logical value determining if the border should be drawn. class ( colormap ), intent ( inout ) :: this !! The colormap object. logical , intent ( in ) :: x !! Set to true if the border should be drawn; else, false. this % m_drawBorder = x end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_show_tics ( this ) result ( rst ) !! Gets a logical value determining if the tic marks should be drawn. class ( colormap ), intent ( in ) :: this !! The colormap object. logical :: rst !! Returns true if the tic marks should be drawn; else, false. rst = this % m_showTics end function ! -------------------- subroutine cm_set_show_tics ( this , x ) !! Sets a logical value determining if the tic marks should be drawn. class ( colormap ), intent ( inout ) :: this !! The colormap object. logical , intent ( in ) :: x !! Set to true if the tic marks should be drawn; else, false. this % m_showTics = x end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_colorbar_thickness ( this ) result ( rst ) !! Gets the relative thickness of the colorbar. class ( colormap ), intent ( in ) :: this !! The colormap object. real ( real32 ) :: rst !! The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. rst = this % m_colorbarThickness end function ! -------------------- subroutine cm_set_colorbar_thickness ( this , x ) !! Sets the relative colorbar thickness, clamped to [0.0, 1.0]. class ( colormap ), intent ( inout ) :: this !! The colormap object. real ( real32 ), intent ( in ) :: x !! The requested thickness; 0 uses GNUPLOT's default. this % m_colorbarThickness = max ( 0.0 , min ( 1.0 , x )) end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_colorbar_length ( this ) result ( rst ) !! Gets the relative length of the colorbar. class ( colormap ), intent ( in ) :: this !! The colormap object. real ( real32 ) :: rst !! The length in [0.0, 1.0]; 0 uses GNUPLOT's default. rst = this % m_colorbarLength end function ! -------------------- subroutine cm_set_colorbar_length ( this , x ) !! Sets the relative colorbar length, clamped to [0.0, 1.0]. class ( colormap ), intent ( inout ) :: this !! The colormap object. real ( real32 ), intent ( in ) :: x !! The requested length; 0 uses GNUPLOT's default. this % m_colorbarLength = max ( 0.0 , min ( 1.0 , x )) end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_axes_size ( this ) result ( rst ) !! Gets the relative width and height of the axes. class ( colormap ), intent ( in ) :: this !! The colormap object. real ( real32 ), dimension ( 2 ) :: rst !! The [width, height], each in [0.0, 1.0]. rst = this % m_axesSize end function ! -------------------- subroutine cm_set_axes_size ( this , x ) !! Sets the axes width and height, each clamped to [0.0, 1.0]. class ( colormap ), intent ( inout ) :: this !! The colormap object. real ( real32 ), dimension ( 2 ), intent ( in ) :: x !! The requested [width, height]. this % m_axesSize = max ( 0.0 , min ( 1.0 , x )) end subroutine ! ------------------------------------------------------------------------------ pure function cm_get_axes_origin ( this ) result ( rst ) !! Gets the relative x-y coordinates of the axes origin. class ( colormap ), intent ( in ) :: this !! The colormap object. real ( real32 ), dimension ( 2 ) :: rst !! The [x, y] coordinates, each in [0.0, 1.0]. rst = this % m_axesOrigin end function ! -------------------- subroutine cm_set_axes_origin ( this , x ) !! Sets the axes origin coordinates, each clamped to [0.0, 1.0]. class ( colormap ), intent ( inout ) :: this !! The colormap object. real ( real32 ), dimension ( 2 ), intent ( in ) :: x !! The requested [x, y] coordinates. this % m_axesOrigin = max ( 0.0 , min ( 1.0 , x )) end subroutine ! ------------------------------------------------------------------------------ ! TO DO: ! - Set user-defined tic labels & limits (ref: http://gnuplot.sourceforge.net/demo_5.4/cerf.html) ! ****************************************************************************** ! RAINBOW_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function rcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( rainbow_colormap ), intent ( in ) :: this !! The rainbow_colormap object. character ( len = :), allocatable :: x !! The command string. x = '0 \"dark-blue\", 1 \"blue\", 2 \"cyan\", 3 \"green\", 4 \"yellow\", ' // & '5 \"orange\", 6 \"red\", 7 \"dark-red\"' end function ! ****************************************************************************** ! HOT_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function hcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( hot_colormap ), intent ( in ) :: this !! The hot_colormap object. character ( len = :), allocatable :: x !! The command string. x = '0 \"black\", 1 \"red\", 2 \"orange\", 3 \"yellow\", 4 \"white\"' end function ! ****************************************************************************** ! COOL_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function ccm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( cool_colormap ), intent ( in ) :: this !! The cool_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#08589E',\" ) call str % append ( \"1 '#2B8CBE',\" ) call str % append ( \"2 '#4EB3D3',\" ) call str % append ( \"3 '#7BCCC4',\" ) call str % append ( \"4 '#A8DDB5',\" ) call str % append ( \"5 '#CCEBC5',\" ) call str % append ( \"6 '#E0F3DB',\" ) call str % append ( \"7 '#F7FCF0'\" ) x = char ( str % to_string ()) ! x = '0 \"blue\", 1 \"turquoise\", 2 \"light-green\"' end function ! ****************************************************************************** ! PARULA_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function pcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( parula_colormap ), intent ( in ) :: this !! The parula_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#352a87',\" ) call str % append ( \"1 '#0363e1',\" ) call str % append ( \"2 '#1485d4',\" ) call str % append ( \"3 '#06a7c6',\" ) call str % append ( \"4 '#38b99e',\" ) call str % append ( \"5 '#92bf73',\" ) call str % append ( \"6 '#d9ba56',\" ) call str % append ( \"7 '#fcce2e',\" ) call str % append ( \"8 '#f9fb0e'\" ) x = char ( str % to_string ()) end function ! ****************************************************************************** ! GREY_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function gcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( grey_colormap ), intent ( in ) :: this !! The grey_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#FFFFFF',\" ) call str % append ( \"1 '#F0F0F0',\" ) call str % append ( \"2 '#D9D9D9',\" ) call str % append ( \"3 '#BDBDBD',\" ) call str % append ( \"4 '#969696',\" ) call str % append ( \"5 '#737373',\" ) call str % append ( \"6 '#525252',\" ) call str % append ( \"7 '#252525'\" ) x = char ( str % to_string ()) end function ! ****************************************************************************** ! EARTH_COLORMAP ! ------------------------------------------------------------------------------ function ecm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( earth_colormap ), intent ( in ) :: this !! The earth_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#8C510A',\" ) call str % append ( \"1 '#BF812D',\" ) call str % append ( \"2 '#DFC27D',\" ) call str % append ( \"3 '#F6E8C3',\" ) call str % append ( \"4 '#D9F0D3',\" ) call str % append ( \"5 '#A6DBA0',\" ) call str % append ( \"6 '#5AAE61',\" ) call str % append ( \"7 '#1B7837'\" ) x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ ! Additional Color Maps: ! https://github.com/Gnuplotting/gnuplot-palettes ! ****************************************************************************** ! ADDED: Jan. 08, 2024 - JAC ! CUSTOM_COLORMAP ! ------------------------------------------------------------------------------ function custom_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( custom_colormap ), intent ( in ) :: this !! The custom_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str integer ( int32 ) :: i , n , r , g , b , c character ( len = 6 ) :: ctxt if (. not . associated ( this % m_map )) then allocate ( character ( len = 0 ) :: x ) return end if n = this % m_map % get_levels () do i = 0 , n - 1 ! Get the RGB triple call this % m_map % get_RGB ( i , r , g , b ) c = ishft ( r , 16 ) + ishft ( g , 8 ) + b write ( ctxt , '(Z6.6)' ) c ! Append the color information call str % append ( to_string ( i )) call str % append ( \" '#\" ) call str % append ( ctxt ) call str % append ( \"'\" ) if ( i /= n - 1 ) then call str % append ( \",\" ) end if end do x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine custom_set ( this , map , err ) !! Sets the FORCOLORMAP colormap object. class ( custom_colormap ), intent ( inout ) :: this !! The custom_colormap object. class ( cmap ), intent ( in ) :: map !! The FORCOLORMAP colormap object. The custom_colormap object !! stores a copy of this object; therefore, any changes made to !! x after calls to this routine will not impact the behavior of !! the custom_colormap object. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Process if ( associated ( this % m_map )) deallocate ( this % m_map ) allocate ( this % m_map , source = map , stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"custom_set\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function custom_get ( this ) result ( rst ) !! Gets a pointer to the FORCOLORMAP colormap object. class ( custom_colormap ), intent ( in ) :: this !! The custom_colormap object. class ( cmap ), pointer :: rst !! A pointer to the FORCOLORMAP colormap object. rst => this % m_map end function ! ------------------------------------------------------------------------------ subroutine custom_final ( this ) type ( custom_colormap ), intent ( inout ) :: this !! The custom_colormap object. if ( associated ( this % m_map )) then deallocate ( this % m_map ) nullify ( this % m_map ) end if end subroutine ! ****************************************************************************** ! SPECTRAL_COLORMAP MEMBERS ! ------------------------------------------------------------------------------ function spcm_get_clr ( this ) result ( x ) !! Gets the GNUPLOT string defining the color distribution. class ( spectral_colormap ), intent ( in ) :: this !! The spectral_colormap object. character ( len = :), allocatable :: x !! The command string. type ( string_builder ) :: str call str % append ( \"0 '#D53E4F',\" ) call str % append ( \"1 '#F46D43',\" ) call str % append ( \"2 '#FDAE61',\" ) call str % append ( \"3 '#FEE08B',\" ) call str % append ( \"4 '#E6F598',\" ) call str % append ( \"5 '#ABDDA4',\" ) call str % append ( \"6 '#66C2A5',\" ) call str % append ( \"7 '#3288BD'\" ) x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_colormap.f90.html"},{"title":"fplot_filled_plot_data.f90 – FPLOT","text":"Source Code ! fplot_filled_plot_data.f90 module fplot_filled_plot_data use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: filled_plot_data type , extends ( plot_data_colored ) :: filled_plot_data !! Defines a two-dimensional filled plot data set. logical , private :: m_useY2 = . false . !! Plot against the secondary y-axis. real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! The data set (column 1 = x, column 2 = y, column 3 = constraint y) contains procedure , public :: get_axes_string => fpd_get_axes_cmd procedure , public :: get_draw_against_y2 => fpd_get_draw_against_y2 procedure , public :: set_draw_against_y2 => fpd_set_draw_against_y2 procedure , public :: get_command_string => fpd_get_cmd procedure , public :: get_data_string => fpd_get_data_cmd procedure , public :: define_data => fpd_define_data procedure , public :: clear_data => fpd_clear_data end type contains ! ------------------------------------------------------------------------------ function fpd_get_axes_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string defining which axes the data !! is to be plotted against. class ( filled_plot_data ), intent ( in ) :: this !! The filled_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then x = \"axes x1y2\" else x = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ pure function fpd_get_draw_against_y2 ( this ) result ( x ) !! Gets a value determining if the data should be plotted against !! the secondary y-axis. class ( filled_plot_data ), intent ( in ) :: this !! The filled_plot_data object. logical :: x !! Returns true if the data should be plotted against the secondary !! y-axis; else, false to plot against the primary y-axis. x = this % m_useY2 end function ! -------------------- subroutine fpd_set_draw_against_y2 ( this , x ) !! Sets a value determining if the data should be plotted against !! the secondary y-axis. class ( filled_plot_data ), intent ( inout ) :: this !! The filled_plot_data object. logical , intent ( in ) :: x !! Set to true if the data should be plotted against the secondary !! y-axis; else, false to plot against the primary y-axis. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ function fpd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this !! filled_plot_data object. class ( filled_plot_data ), intent ( in ) :: this !! The filled_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Establish filled data call str % append ( \" with filledcurves\" ) ! Line Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function fpd_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data to plot. class ( filled_plot_data ), intent ( in ) :: this !! The filled_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i character ( len = :), allocatable :: nl , delimiter ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) ! Process do i = 1 , size ( this % m_data , 1 ) call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( nl ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine fpd_define_data ( this , x , y , yc , err ) !! Defines the data set. class ( filled_plot_data ), intent ( inout ) :: this !! The filled_plot_data object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinate data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinate data. real ( real64 ), intent ( in ), dimension (:) :: yc !! An N-element array containing the constraining curve y !! coordinate data. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables type ( errors ), target :: deferr class ( errors ), pointer :: errmgr integer ( int32 ) :: i , n , flag ! Set up error handling if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Input Checking n = size ( x ) if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"fpd_define_data\" , & \"y\" , n , size ( y )) return end if if ( size ( yc ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"fpd_define_data\" , & \"yc\" , n , size ( yc )) return end if ! Allocate space for the data if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 3 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"fpd_define_data\" , flag ) return end if ! Create a name if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Store the data do concurrent ( i = 1 : n ) this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = yc ( i ) end do end subroutine ! ------------------------------------------------------------------------------ subroutine fpd_clear_data ( this ) !! Clears the data from this data set. class ( filled_plot_data ), intent ( inout ) :: this !! The filled_plot_data object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_filled_plot_data.f90.html"},{"title":"fplot_pdf_terminal.f90 – FPLOT","text":"Source Code module fplot_pdf_terminal use iso_fortran_env use fplot_terminal use strings implicit none private public :: pdf_terminal type , extends ( file_terminal ) :: pdf_terminal !! Defines a terminal used for producing PDF outputs. character ( len = 17 ), private :: m_id = \"pdfcairo enhanced\" !! The terminal ID string. integer ( int32 ), private :: m_resolution = 100 !! The device resolution in DPI. contains procedure , public :: get_id_string => pdf_get_term_string procedure , public :: get_command_string => pdf_get_command_string procedure , public :: get_resolution => pdf_get_resolution procedure , public :: set_resolution => pdf_set_resolution end type contains ! ------------------------------------------------------------------------------ function pdf_get_term_string ( this ) result ( x ) !! Retrieves a GNUPLOT terminal identifier string. class ( pdf_terminal ), intent ( in ) :: this !! The pdf_terminal object. character ( len = :), allocatable :: x !! The string. integer ( int32 ) :: n n = len ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ function pdf_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( pdf_terminal ), intent ( in ) :: this !! The pdf_terminal object. character ( len = :), allocatable :: x !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str real ( real32 ) :: xsize , ysize ! Compute the size xsize = real ( this % get_window_width (), real32 ) / real ( this % get_resolution (), real32 ) ysize = real ( this % get_window_height (), real32 ) / real ( this % get_resolution (), real32 ) ! Process call str % initialize () call str % append ( \"set term \" ) call str % append ( this % get_id_string ()) call str % append ( \" font \" ) call str % append ( '\"' ) call str % append ( this % get_font_name ()) call str % append ( ',' ) call str % append ( to_string ( this % get_font_size ())) call str % append ( '\"' ) call str % append ( \" size \" ) call str % append ( to_string ( xsize )) call str % append ( \"in,\" ) call str % append ( to_string ( ysize )) call str % append ( \"in\" ) call str % append ( new_line ( 'a' )) call str % append ( \"set output \" ) call str % append ( '\"' ) call str % append ( this % get_filename ()) call str % append ( '\"' ) x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ pure function pdf_get_resolution ( this ) result ( x ) !! Gets the target device resolution. class ( pdf_terminal ), intent ( in ) :: this !! The pdf_terminal object. integer ( int32 ) :: x !! The resolution, in DPI. x = this % m_resolution end function ! -------------------- subroutine pdf_set_resolution ( this , x ) !! Sets the target device resolution. class ( pdf_terminal ), intent ( inout ) :: this !! The pdf_terminal object. integer ( int32 ), intent ( in ) :: x !! The resolution, in DPI. this % m_resolution = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_pdf_terminal.f90.html"},{"title":"fplot_plot_data_bar.f90 – FPLOT","text":"Source Code ! fplot_plot_data_bar.f90 ! TO DO: ! - Allow naming of each data set at the define_data level as well module fplot_plot_data_bar use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: plot_data_bar type , extends ( plot_data_colored ) :: plot_data_bar !! Defines a data set tailored to bar charts. type ( string ), private , allocatable , dimension (:) :: m_axisLabels !! An array containing axis labels to associate with each bar. real ( real64 ), private , allocatable , dimension (:,:) :: m_barData !! An array of data defining each bar - the matrix contains !! multiple columns to allow multiple bars per label. logical , private :: m_useAxisLabels = . true . !! Determines if the axis labels should be used - only applicable !! if there is existing data stored in m_axisLabels & m_axisLabels !! is the same size as m_barData. logical , private :: m_useY2 = . false . !! Draw against the secondary y axis? logical , private :: m_filled = . true . !! Determines if each bar is filled. real ( real32 ), private :: m_alpha = 1.0 !! The alpha value (transparency) for each bar. type ( color ), private , allocatable , dimension (:) :: m_barColors !! The color to use for each data series (column). If not !! set, a default color cycle is used for multi-series data, !! or the base line color is used for single-series data. type ( string ), private , allocatable , dimension (:) :: m_seriesNames !! The legend title to associate with each data series (column). contains procedure , public :: get_count => pdb_get_count procedure , public :: get => pdb_get_data procedure , public :: set => pdb_set_data procedure , public :: get_data => pdb_get_data_set procedure , public :: get_label => pdb_get_label procedure , public :: set_label => pdb_set_label procedure , public :: get_use_labels => pdb_get_use_labels procedure , public :: set_use_labels => pdb_set_use_labels procedure , public :: get_command_string => pdb_get_cmd procedure , public :: get_data_string => pdb_get_data_cmd procedure , public :: get_axes_string => pdb_get_axes_cmd procedure , public :: get_bar_per_label_count => pdb_get_col_count procedure , public :: get_draw_against_y2 => pdb_get_use_y2 procedure , public :: set_draw_against_y2 => pdb_set_use_y2 procedure , public :: get_is_filled => pdb_get_is_filled procedure , public :: set_is_filled => pdb_set_is_filled procedure , public :: get_transparency => pdb_get_alpha procedure , public :: set_transparency => pdb_set_alpha procedure , public :: get_bar_color => pdb_get_bar_color procedure , public :: set_bar_color => pdb_set_bar_color procedure , public :: get_series_name => pdb_get_series_name procedure , public :: set_series_name => pdb_set_series_name generic , public :: define_data => pdb_set_data_1 , pdb_set_data_2 , & pdb_set_data_3 , pdb_set_data_4 , pdb_set_data_5 , pdb_set_data_6 procedure , private :: pdb_set_data_1 procedure , private :: pdb_set_data_2 procedure , private :: pdb_set_data_3 procedure , private :: pdb_set_data_4 procedure , private :: pdb_set_data_5 procedure , private :: pdb_set_data_6 procedure , public :: set_data_1 => pdb_set_data_1_core procedure , public :: set_data_2 => pdb_set_data_2_core procedure , public :: set_data_3 => pdb_set_data_3_core procedure , public :: set_data_4 => pdb_set_data_4_core procedure , public :: set_data_5 => pdb_set_data_5_core procedure , public :: set_data_6 => pdb_set_data_6_core procedure , public :: clear_data => pdb_clear_data end type contains ! ------------------------------------------------------------------------------ pure function pdb_get_count ( this ) result ( x ) !! Gets the number of stored data points. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ) :: x !! The number of stored data points. if ( allocated ( this % m_barData )) then x = size ( this % m_barData , 1 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pdb_get_data ( this , index , col ) result ( x ) !! Gets the requested data point. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The data point index. integer ( int32 ), intent ( in ) :: col !! The column index. real ( real64 ) :: x !! The value. if ( allocated ( this % m_barData )) then x = this % m_barData ( index , col ) else x = 0.0d0 end if end function ! ------------------------------------------------------------------------------ subroutine pdb_set_data ( this , index , col , x ) !! Replaces the requested data point. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The data point index. integer ( int32 ), intent ( in ) :: col !! The column index. real ( real64 ), intent ( in ) :: x !! The new value. if ( allocated ( this % m_barData )) then this % m_barData ( index , col ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_data_set ( this , col ) result ( x ) !! Gets the requested data set. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: col !! The column index. real ( real64 ), allocatable , dimension (:) :: x !! A copy of the data set. if ( allocated ( this % m_barData )) then x = this % m_barData (:, col ) else allocate ( x ( 0 )) end if end function ! ------------------------------------------------------------------------------ pure function pdb_get_label ( this , index ) result ( x ) !! Gets the axis label associated with a specific data set. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data set. character ( len = :), allocatable :: x !! The label. if ( allocated ( this % m_axisLabels )) then x = char ( this % m_axisLabels ( index )) else x = \"\" end if end function ! ------------------------------------------------------------------------------ subroutine pdb_set_label ( this , index , txt ) !! Sets the axis label for a specific data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. integer ( int32 ) :: index !! The index of the data set. character ( len = * ), intent ( in ) :: txt !! The label. if ( allocated ( this % m_axisLabels )) then this % m_axisLabels ( index ) = txt end if end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_use_labels ( this ) result ( x ) !! Gets a value determining if labels are used to identify the data. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. logical :: x !! Returns true if labels are used; else, false. x = this % m_useAxisLabels end function ! ------------------------------------------------------------------------------ subroutine pdb_set_use_labels ( this , x ) !! Sets a value determining if labels are used to identify the data. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. logical , intent ( in ) :: x !! Set to true if labels are used; else, false. this % m_useAxisLabels = x end subroutine ! ------------------------------------------------------------------------------ function pdb_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for this object. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: j , ncols , offset logical :: uselabels character ( len = :), allocatable :: title type ( color ) :: clr ! Initialization call str % initialize () ncols = max ( this % get_bar_per_label_count (), 1 ) uselabels = this % get_use_labels () . and . allocated ( this % m_barData ) . and . & allocated ( this % m_axisLabels ) if ( uselabels ) then offset = 1 else offset = 0 end if ! Each data series (column) is drawn with its own \"using\" clause so ! that multiple bar series stored in a single datablock all appear do j = 1 , ncols if ( j > 1 ) call str % append ( \", \" ) ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) call str % append ( \" using \" ) call str % append ( to_string ( j + offset )) if ( j == 1 . and . uselabels ) call str % append ( \":xtic(1)\" ) ! Filled? if ( this % get_is_filled ()) then call str % append ( \" fill solid \" ) else call str % append ( \" fill empty \" ) end if ! Transparency call str % append ( to_string ( this % get_transparency ())) ! Title title = this % get_series_name ( j ) if ( len_trim ( title ) == 0 . and . ncols == 1 ) title = this % get_name () if ( len_trim ( title ) > 0 ) then call str % append ( ' title \"' ) call str % append ( title ) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Color clr = this % get_bar_color ( j ) call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdb_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string defining the data for this object. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , nbars , ncols character :: delimiter , nl ! Initialization call str % initialize () delimiter = achar ( 9 ) nl = new_line ( nl ) nbars = this % get_count () ncols = this % get_bar_per_label_count () ! Process if ( this % get_use_labels () . and . allocated ( this % m_axisLabels ) . and . & allocated ( this % m_barData )) then do i = 1 , nbars call str % append ( char ( this % m_axisLabels ( i ))) call str % append ( delimiter ) do j = 1 , ncols call str % append ( to_string ( this % get ( i , j ))) if ( j /= ncols ) call str % append ( delimiter ) end do call str % append ( nl ) end do else do i = 1 , nbars do j = 1 , ncols call str % append ( to_string ( this % get ( i , j ))) if ( j /= ncols ) call str % append ( delimiter ) end do call str % append ( nl ) end do end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdb_get_axes_cmd ( this ) result ( x ) !! Gets the GNUPLOT command defining which axes to plot against. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. character ( len = :), allocatable :: x !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then x = \"axes x1y2\" else x = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ pure function pdb_get_col_count ( this ) result ( x ) !! Gets the number of data sets (columns). class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ) :: x !! The count. if ( allocated ( this % m_barData )) then x = size ( this % m_barData , 2 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pdb_get_use_y2 ( this ) result ( x ) !! Gets a value determining if the data should be plotted against a !! secondary y-axis. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. logical :: x !! Returns true to plot against a secondary y-axis; else, false. x = this % m_useY2 end function ! ------------------------------------------------------------------------------ subroutine pdb_set_use_y2 ( this , x ) !! Sets a value determining if the data should be plotted against a !! secondary y-axis. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. logical , intent ( in ) :: x !! Set to true to plot against a secondary y-axis; else, false. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_bar_color ( this , index ) result ( x ) !! Gets the color to use for the requested data series (column). If !! no color has been explicitly set, a default color cycle is used !! for multi-series data, or the base line color for single-series !! data. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data series (column). type ( color ) :: x !! The color. if ( allocated ( this % m_barColors )) then if ( index >= 1 . and . index <= size ( this % m_barColors )) then x = this % m_barColors ( index ) return end if end if if ( this % get_bar_per_label_count () <= 1 ) then x = this % get_line_color () else x = color_list ( mod ( index - 1 , size ( color_list )) + 1 ) end if end function ! ------------------------------------------------------------------------------ subroutine pdb_set_bar_color ( this , index , x ) !! Sets the color to use for the requested data series (column). class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data series (column). type ( color ), intent ( in ) :: x !! The color. ! Local Variables type ( color ), allocatable , dimension (:) :: temp integer ( int32 ) :: i , n n = max ( index , this % get_bar_per_label_count ()) if (. not . allocated ( this % m_barColors )) then allocate ( this % m_barColors ( n )) do i = 1 , n this % m_barColors ( i ) = this % get_bar_color ( i ) end do else if ( size ( this % m_barColors ) < n ) then allocate ( temp ( n )) do i = 1 , n if ( i <= size ( this % m_barColors )) then temp ( i ) = this % m_barColors ( i ) else temp ( i ) = this % get_bar_color ( i ) end if end do call move_alloc ( temp , this % m_barColors ) end if this % m_barColors ( index ) = x end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_series_name ( this , index ) result ( x ) !! Gets the legend title associated with the requested data series !! (column). class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data series (column). character ( len = :), allocatable :: x !! The title. if ( allocated ( this % m_seriesNames )) then if ( index >= 1 . and . index <= size ( this % m_seriesNames )) then x = char ( this % m_seriesNames ( index )) return end if end if x = \"\" end function ! ------------------------------------------------------------------------------ subroutine pdb_set_series_name ( this , index , txt ) !! Sets the legend title to associate with the requested data series !! (column). class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. integer ( int32 ), intent ( in ) :: index !! The index of the data series (column). character ( len = * ), intent ( in ) :: txt !! The title. ! Local Variables type ( string ), allocatable , dimension (:) :: temp integer ( int32 ) :: i , n n = max ( index , this % get_bar_per_label_count ()) if (. not . allocated ( this % m_seriesNames )) then allocate ( this % m_seriesNames ( n )) else if ( size ( this % m_seriesNames ) < n ) then allocate ( temp ( n )) do i = 1 , size ( this % m_seriesNames ) temp ( i ) = this % m_seriesNames ( i ) end do call move_alloc ( temp , this % m_seriesNames ) end if this % m_seriesNames ( index ) = txt end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_1 ( this , x , err ) !! Defines a single data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: x !! The data to plot. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_1 ( x , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_2 ( this , labels , x , err ) !! Defines data along with associated axis labels. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. class ( string ), intent ( in ), dimension (:) :: labels !! The axis labels to associate with the data. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_2 ( labels , x , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_3 ( this , labels , x , fmt , err ) !! Defines data along with labels and formatting information. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: labels !! The axis labels to associate with the data. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. character ( len = * ), intent ( in ), optional :: fmt !! The format string for the labels (e.g. '(I0)', etc.). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_3 ( labels , x , fmt , err ) end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_is_filled ( this ) result ( x ) !! Gets a value determining if each bar is filled. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. logical :: x !! Returns true if the bars are to be filled; else, false. x = this % m_filled end function ! ------------------------------------------------------------------------------ subroutine pdb_set_is_filled ( this , x ) !! Sets a value determining if each bar is filled. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. logical , intent ( in ) :: x !! Set to true if the bars are to be filled; else, false. this % m_filled = x end subroutine ! ------------------------------------------------------------------------------ pure function pdb_get_alpha ( this ) result ( x ) !! Gets the alpha (transparency) for the bar color. class ( plot_data_bar ), intent ( in ) :: this !! The plot_data_bar object. real ( real32 ) :: x !! The alpha value ([0, 1]). x = this % m_alpha end function ! ------------------------------------------------------------------------------ subroutine pdb_set_alpha ( this , x ) !! Gets the alpha (transparency) for the bar color. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real32 ), intent ( in ) :: x !! The alpha value ([0, 1]). if ( x > 1.0 ) then this % m_alpha = 1.0 else if ( x < 0.0 ) then this % m_alpha = 0.0 else this % m_alpha = x end if end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_1_core ( this , x , err ) !! Defines the data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n , flag ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Process if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( n , 1 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_1_core\" , flag ) return end if this % m_barData (:, 1 ) = x end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_2_core ( this , labels , x , err ) ! Arguments class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. class ( string ), intent ( in ), dimension (:) :: labels !! The axis labels. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n , flag ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pdb_set_data_2_core\" , & \"labels\" , n , size ( labels )) return end if ! Process if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( n , 1 ), stat = flag ) if ( flag == 0 ) allocate ( this % m_axisLabels ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_2_core\" , flag ) return end if this % m_barData (:, 1 ) = x this % m_axisLabels = labels end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_3_core ( this , labels , x , fmt , err ) ! Arguments class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: labels !! The axis labels. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set. character ( len = * ), intent ( in ), optional :: fmt !! The format string for the labels (e.g. '(I0)', etc.). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: i , n , flag type ( string ), allocatable , dimension (:) :: lbls ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pdb_set_data_3_core\" , & \"labels\" , n , size ( labels )) return end if ! Convert the numeric labels to strings allocate ( lbls ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_3_core\" , flag ) return end if do i = 1 , n lbls ( i ) = to_string ( labels ( i ), fmt ) end do ! Store the data if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( n , 1 ), stat = flag ) if ( flag == 0 ) allocate ( this % m_axisLabels ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_3_core\" , flag ) return end if this % m_barData (:, 1 ) = x this % m_axisLabels = lbls end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_4_core ( this , x , err ) !! Defines the data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: flag ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Process if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( size ( x , 1 ), size ( x , 2 )), stat = flag , source = x ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_4_core\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_5_core ( this , labels , x , err ) ! Arguments class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. class ( string ), intent ( in ), dimension (:) :: labels !! The axis labels. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: n , flag ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x , 1 ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pdb_set_data_5_core\" , & \"labels\" , n , size ( labels )) return end if ! Process if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( size ( x , 1 ), size ( x , 2 )), stat = flag , source = x ) if ( flag == 0 ) allocate ( this % m_axisLabels ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_5_core\" , flag ) return end if this % m_axisLabels = labels end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_6_core ( this , labels , x , fmt , err ) ! Arguments class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: labels !! The axis labels. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. character ( len = * ), intent ( in ), optional :: fmt !! The format string for the labels (e.g. '(I0)', etc.). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables class ( errors ), pointer :: errmgr type ( errors ), target :: deferr integer ( int32 ) :: i , n , flag type ( string ), allocatable , dimension (:) :: lbls ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x , 1 ) if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( labels ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pdb_set_data_6_core\" , & \"labels\" , n , size ( labels )) return end if ! Convert the numeric labels to strings allocate ( lbls ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_6_core\" , flag ) return end if do i = 1 , n lbls ( i ) = to_string ( labels ( i ), fmt ) end do ! Store the data if ( allocated ( this % m_axisLabels )) deallocate ( this % m_axisLabels ) if ( allocated ( this % m_barData )) deallocate ( this % m_barData ) allocate ( this % m_barData ( size ( x , 1 ), size ( x , 2 )), stat = flag , source = x ) if ( flag == 0 ) allocate ( this % m_axisLabels ( n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdb_set_data_6_core\" , flag ) return end if this % m_axisLabels = lbls end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_4 ( this , x , err ) !! Defines a single data set. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data to plot. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_4 ( x , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_5 ( this , labels , x , err ) !! Defines data along with associated axis labels. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. class ( string ), intent ( in ), dimension (:) :: labels !! The axis labels to associate with the data. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_5 ( labels , x , err ) end subroutine ! ------------------------------------------------------------------------------ subroutine pdb_set_data_6 ( this , labels , x , fmt , err ) !! Defines data along with labels and formatting information. class ( plot_data_bar ), intent ( inout ) :: this !! The plot_data_bar object. real ( real64 ), intent ( in ), dimension (:) :: labels !! The axis labels to associate with the data. real ( real64 ), intent ( in ), dimension (:,:) :: x !! The data set. character ( len = * ), intent ( in ), optional :: fmt !! The format string for the labels (e.g. '(I0)', etc.). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % set_data_6 ( labels , x , fmt , err ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_bar.f90.html"},{"title":"fplot_label.f90 – FPLOT","text":"Source Code ! fplot_label.f90 module fplot_label use iso_fortran_env use fplot_plot_object use fplot_constants use strings implicit none private public :: plot_label type , extends ( plot_object ) :: plot_label !! Defines a plot label. logical , private :: m_visible = . true . !! Is the label visible? real ( real32 ), private , dimension ( 3 ) :: m_position !! The x, y, and z coordinates of the label. real ( real32 ), private :: m_angle = 0.0 !! The rotation angle of the label. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_text !! The label text. contains procedure , public :: get_command_string => lbl_get_cmd procedure , public :: get_is_visible => lbl_get_is_visible procedure , public :: set_is_visible => lbl_set_is_visible procedure , public :: get_position => lbl_get_position procedure , public :: set_position => lbl_set_position procedure , public :: get_angle => lbl_get_angle procedure , public :: set_angle => lbl_set_angle procedure , public :: get_text => lbl_get_txt procedure , public :: set_text => lbl_set_txt end type contains ! ------------------------------------------------------------------------------ function lbl_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string for the label. class ( plot_label ), intent ( in ) :: this !! The plot_label object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str real ( real32 ) :: pt ( 3 ) ! Initialization call str % initialize () pt = this % get_position () ! If visible, draw the label if ( this % get_is_visible ()) then call str % append ( 'set label \"' ) call str % append ( this % get_text ()) call str % append ( '\"' ) call str % append ( \" at \" ) call str % append ( to_string ( pt ( 1 ))) call str % append ( \",\" ) call str % append ( to_string ( pt ( 2 ))) call str % append ( \",\" ) call str % append ( to_string ( pt ( 3 ))) call str % append ( \" rotate by \" ) call str % append ( to_string ( this % get_angle ())) x = char ( str % to_string ()) end if end function ! ------------------------------------------------------------------------------ pure function lbl_get_is_visible ( this ) result ( x ) !! Gets a value determining if the label is to be drawn. class ( plot_label ), intent ( in ) :: this !! The plot_label object. logical :: x !! Returns true if the label is to be drawn; else, false. x = this % m_visible end function ! -------------------- subroutine lbl_set_is_visible ( this , x ) !! Sets a value determining if the label is to be drawn. class ( plot_label ), intent ( inout ) :: this !! The plot_label object. logical , intent ( in ) :: x !! Set to true if the label is to be drawn; else, false. this % m_visible = x end subroutine ! ------------------------------------------------------------------------------ pure function lbl_get_position ( this ) result ( x ) !! Gets the position of the label in terms of plot coordinates. class ( plot_label ), intent ( in ) :: this !! The plot_label object. real ( real32 ), dimension ( 3 ) :: x !! A 3-element array containing the X, Y, and Z position of the !! label. x = this % m_position end function ! -------------------- subroutine lbl_set_position ( this , x ) !! Sets the position of the label in terms of plot coordinates. class ( plot_label ), intent ( inout ) :: this !! The plot_label object. real ( real32 ), intent ( in ), dimension ( 3 ) :: x !! A 3-element array containing the X, Y, and Z position of the !! label. this % m_position = x end subroutine ! ------------------------------------------------------------------------------ pure function lbl_get_angle ( this ) result ( x ) !! Gets the angle of the label text, in degrees. class ( plot_label ), intent ( in ) :: this !! The plot_label object. real ( real32 ) :: x !! The angle, in degrees. x = this % m_angle end function ! -------------------- subroutine lbl_set_angle ( this , x ) !! Sets the angle of the label text, in degrees. class ( plot_label ), intent ( inout ) :: this !! The plot_label object. real ( real32 ), intent ( in ) :: x !! The angle, in degrees. this % m_angle = x end subroutine ! ------------------------------------------------------------------------------ function lbl_get_txt ( this ) result ( x ) !! Gets the text displayed by the label. class ( plot_label ), intent ( in ) :: this !! The plot_label object. character ( len = :), allocatable :: x !! The text string to display. x = trim ( this % m_text ) end function ! -------------------- subroutine lbl_set_txt ( this , x ) !! Sets the text displayed by the label. class ( plot_label ), intent ( inout ) :: this !! The plot_label object. character ( len = * ), intent ( in ) :: x !! The text string to display. integer ( int32 ) :: n n = min ( len ( x ), PLOTDATA_MAX_NAME_LENGTH ) this % m_text = \"\" this % m_text ( 1 : n ) = x ( 1 : n ) end subroutine ! ****************************************************************************** ! ADDED: JAN. 09, 2024 - JAC ! ------------------------------------------------------------------------------ ! pure subroutine lbl_assign(x, y) ! type(plot_label), intent(out) :: x ! class(plot_label), intent(in) :: y ! x%m_visible = y%m_visible ! x%m_position = y%m_position ! x%m_angle = y%m_angle ! x%m_text = y%m_text ! end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_label.f90.html"},{"title":"fplot_plot_data_histogram.f90 – FPLOT","text":"Source Code ! fplot_plot_data_histogram.f90 ! TO DO: ! - Allow naming of each data set at the define_data level as well as at the ! get/set level module fplot_plot_data_histogram use iso_fortran_env use fplot_plot_data use fplot_errors use strings use fplot_colors implicit none private public :: plot_data_histogram type , extends ( plot_data_colored ) :: plot_data_histogram !! A container for plotting data in the form of a histogram. integer ( int32 ), private :: m_binCount = 20 !! The number of bins. real ( real64 ), private :: m_minX !! The minimum data value. real ( real64 ), private :: m_maxX !! The maximum data value. real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! Column 1 is the center of each bin and column 2 is the number !! of items in each bin. logical , private :: m_filled = . true . !! Determines if each bar is filled. logical , private :: m_useY2 = . false . !! Draw against the secondary y axis? contains procedure , public :: get_bin_count => pdh_get_bin_count procedure , public :: set_bin_count => pdh_set_bin_count procedure , public :: get_minimum_value => pdh_get_min_x procedure , public :: get_maximum_value => pdh_get_max_x procedure , public :: define_data => pdh_define_data procedure , public :: get_command_string => pdh_get_cmd procedure , public :: get_data_string => pdh_get_data_cmd procedure , public :: get_axes_string => pdh_get_axes_cmd procedure , public :: get_is_filled => pdh_get_is_filled procedure , public :: set_is_filled => pdh_set_is_filled procedure , public :: get_draw_against_y2 => pdh_get_use_y2 procedure , public :: set_draw_against_y2 => pdh_set_use_y2 procedure , public :: get => pdh_get_bin_data procedure , public :: clear_data => pdh_clear_data end type contains ! ------------------------------------------------------------------------------ pure function pdh_get_bin_count ( this ) result ( x ) !! Gets the number of bins. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. integer ( int32 ) :: x !! The bin count. x = this % m_binCount end function ! ------------------------------------------------------------------------------ subroutine pdh_set_bin_count ( this , x ) !! Sets the bin count. For this property to have an effect, call before !! calling the define_data subroutine or bin_data subroutine. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. integer ( int32 ), intent ( in ) :: x !! The bin count. this % m_binCount = x end subroutine ! ------------------------------------------------------------------------------ pure function pdh_get_min_x ( this ) result ( x ) !! Gets the minimum data value. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. real ( real64 ) :: x !! The minimum data value. x = this % m_minX end function ! ------------------------------------------------------------------------------ pure function pdh_get_max_x ( this ) result ( x ) !! Gets the maximum data value. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. real ( real64 ) :: x !! The maximum data value. x = this % m_maxX end function ! ------------------------------------------------------------------------------ subroutine pdh_define_data ( this , x , err ) !! Defines the data set to plot. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. real ( real64 ), intent ( in ), dimension (:) :: x !! The data set to plot. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , j , n , nbins , flag real ( real64 ) :: maxX , minX , width , val real ( real64 ), allocatable , dimension (:,:) :: ranges class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if n = size ( x ) nbins = min ( n , this % get_bin_count ()) ! protects against the case where nbins > n however unlikely if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Get the max and min of the entire data set maxX = maxval ( x ) minX = minval ( x ) width = ( maxX - minX ) / ( nbins - 1.0 ) this % m_minX = minX this % m_maxX = maxX ! Allocate space for the output if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( nbins , 2 ), stat = flag , source = 0.0d0 ) if ( flag == 0 ) allocate ( ranges ( nbins , 2 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pdh_define_data\" , flag ) return end if ! Define each range ranges ( 1 ,:) = [ minX , minX + width ] do i = 2 , nbins ranges ( i , 1 ) = ranges ( i - 1 , 2 ) ranges ( i , 2 ) = ranges ( i , 1 ) + width end do ! Construct the bins do i = 1 , n val = x ( i ) do j = 1 , nbins if (( val >= ranges ( j , 1 )) . and . ( val <= ranges ( j , 2 ))) then this % m_data ( j , 1 ) = this % m_data ( j , 1 ) + 1.0d0 ! Counter exit ! Exit the inner do loop end if end do end do ! Now compute the center of each bin - store in column 2 of this%m_data this % m_data (:, 2 ) = 0.5d0 * ( ranges (:, 1 ) + ranges (:, 2 )) end subroutine ! ------------------------------------------------------------------------------ function pdh_get_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string for this object. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n , ncols type ( color ) :: clr ! Process call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) call str % append ( \" with boxes \" ) ! Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Filled if ( this % get_is_filled ()) then call str % append ( \" fill solid \" ) else call str % append ( \" fill empty \" ) end if ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdh_get_data_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining the data for this object. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. character ( len = :), allocatable :: rst !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , nbars , cnt real ( real64 ) :: val character :: delimiter , nl ! Initialization delimiter = achar ( 9 ) nl = new_line ( nl ) nbars = size ( this % m_data , 1 ) ! Process do i = 1 , nbars call this % get ( i , val , cnt ) call str % append ( to_string ( val )) call str % append ( delimiter ) call str % append ( to_string ( cnt )) call str % append ( nl ) end do ! End rst = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pdh_get_axes_cmd ( this ) result ( rst ) !! Gets the GNUPLOT command string defining which axes the data is to be !! plotted against. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. character ( len = :), allocatable :: rst !! The command string. ! Define which axes the data is to be plotted against if ( this % get_draw_against_y2 ()) then rst = \"axes x1y2\" else rst = \"axes x1y1\" end if end function ! ------------------------------------------------------------------------------ pure function pdh_get_is_filled ( this ) result ( rst ) !! Gets a value determining if each box is filled. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. logical :: rst !! Returns true if the boxes are filled; else, false for an empty box. rst = this % m_filled end function ! -------------------- subroutine pdh_set_is_filled ( this , x ) !! Sets a value determining if each box is filled. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. logical , intent ( in ) :: x !! Set to true if the boxes should be filled; else, false for an empty !! box. this % m_filled = x end subroutine ! ------------------------------------------------------------------------------ pure function pdh_get_use_y2 ( this ) result ( rst ) !! Gets a value determining if the data is to be plotted against the !! secondary y axis. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. logical :: rst !! Returns true if the data is to be plotted against the secondary y !! axis; else, false for the primary y axis. rst = this % m_useY2 end function ! -------------------- subroutine pdh_set_use_y2 ( this , x ) !! Sets a value determining if the data is to be plotted against the !! secondary y axis. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. logical , intent ( in ) :: x !! Set to true if the data is to be plotted against the secondary y !! axis; else, false for the primary y axis. this % m_useY2 = x end subroutine ! ------------------------------------------------------------------------------ subroutine pdh_get_bin_data ( this , i , x , cnt ) !! Gets the requested binned data. class ( plot_data_histogram ), intent ( in ) :: this !! The plot_data_histogram object. integer ( int32 ), intent ( in ) :: i !! The bin number to get. real ( real64 ), intent ( out ) :: x !! The center of the bin. integer ( int32 ), intent ( out ) :: cnt !! The number of items in the bin. ! Process if (. not . allocated ( this % m_data )) then cnt = 0 x = 0.0d0 return end if x = this % m_data ( i , 2 ) cnt = floor ( this % m_data ( i , 1 )) end subroutine ! ------------------------------------------------------------------------------ subroutine pdh_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_histogram ), intent ( inout ) :: this !! The plot_data_histogram object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_histogram.f90.html"},{"title":"fplot_plot.f90 – FPLOT","text":"Source Code ! fplot_plot.f90 module fplot_plot use iso_fortran_env use fplot_plot_object use fplot_plot_data use fplot_terminal use fplot_windows_terminal use fplot_qt_terminal use fplot_wxt_terminal use fplot_png_terminal use fplot_latex_terminal use fplot_svg_terminal use fplot_pdf_terminal use fplot_colormap use fplot_colors use fplot_errors use fplot_constants use fplot_legend use fplot_label use fplot_arrow use fplot_plot_data_function use strings use collections implicit none private public :: plot public :: is_plot_data_function type , extends ( plot_object ) :: plot !! Defines the basic GNUPLOT plot. character ( len = PLOTDATA_MAX_NAME_LENGTH ), private :: m_title = \"\" !! The plot title. logical , private :: m_hasTitle = . false . !! Has a title? class ( terminal ), private , pointer :: m_terminal => null () !! The GNUPLOT terminal object to target. type ( list ), private :: m_data !! A collection of plot_data items to plot. type ( legend ), private , pointer :: m_legend => null () !! The legend. logical , private :: m_showGrid = . false . !! Show grid lines? logical , private :: m_ticsIn = . true . !! Point tic marks in? logical , private :: m_drawBorder = . false . !! Draw the border? type ( list ), private :: m_labels ! Added 6/22/2018, JAC !! A collection of plot_label items to draw. integer ( int32 ), private :: m_colorIndex = 1 !! The color index to use for automatic line coloring for scatter plots. logical , private :: m_axisEqual = . false . !! Determines if the axes should be scaled proportionally. class ( colormap ), private , pointer :: m_colormap !! The colormap. logical , private :: m_showColorbar = . true . !! Show the colorbar? type ( list ), private :: m_arrows ! Added 1/3/2024, JAC !! A collection of plot_arrow items to draw. real ( real32 ), private :: m_leftMargin = - 1.0 real ( real32 ), private :: m_rightMargin = - 1.0 real ( real32 ), private :: m_topMargin = - 1.0 real ( real32 ), private :: m_bottomMargin = - 1.0 real ( real32 ), private :: m_borderLineWidth = 1.2 !! Border line width logical , private :: m_showXMajorGrid = . false . logical , private :: m_showXMinorGrid = . false . logical , private :: m_showYMajorGrid = . false . logical , private :: m_showYMinorGrid = . false . type ( color ), private :: m_xMajorGridColor = color ( 204 , 204 , 204 , 0 ) type ( color ), private :: m_xMinorGridColor = color ( 230 , 230 , 230 , 0 ) type ( color ), private :: m_yMajorGridColor = color ( 204 , 204 , 204 , 0 ) type ( color ), private :: m_yMinorGridColor = color ( 230 , 230 , 230 , 0 ) integer ( int32 ), private :: m_xMajorGridLineStyle = LINE_SOLID integer ( int32 ), private :: m_xMinorGridLineStyle = LINE_DASHED integer ( int32 ), private :: m_yMajorGridLineStyle = LINE_SOLID integer ( int32 ), private :: m_yMinorGridLineStyle = LINE_DASHED real ( real32 ), private :: m_xMajorGridLineWidth = 1.2 real ( real32 ), private :: m_xMinorGridLineWidth = 0.7 real ( real32 ), private :: m_yMajorGridLineWidth = 1.2 real ( real32 ), private :: m_yMinorGridLineWidth = 0.7 contains procedure , public :: free_resources => plt_clean_up procedure , public :: initialize => plt_init procedure , public :: get_title => plt_get_title procedure , public :: set_title => plt_set_title procedure , public :: is_title_defined => plt_has_title procedure , public :: get_legend => plt_get_legend procedure , public :: get_count => plt_get_count procedure , public :: plt_push_data generic , public :: push => plt_push_data procedure , public :: pop => plt_pop_data procedure , public :: clear_all => plt_clear_all procedure , public :: get => plt_get procedure , public :: set => plt_set procedure , public :: get_terminal => plt_get_term procedure , public :: get_show_gridlines => plt_get_show_grid procedure , public :: set_show_gridlines => plt_set_show_grid procedure , public :: draw => plt_draw procedure , public :: save_file => plt_save procedure , public :: get_font_name => plt_get_font procedure , public :: set_font_name => plt_set_font procedure , public :: get_font_size => plt_get_font_size procedure , public :: set_font_size => plt_set_font_size procedure , public :: get_tics_inward => plt_get_tics_in procedure , public :: set_tics_inward => plt_set_tics_in procedure , public :: get_draw_border => plt_get_draw_border procedure , public :: set_draw_border => plt_set_draw_border procedure , public :: push_label => plt_push_label procedure , public :: pop_label => plt_pop_label procedure , public :: get_label => plt_get_label procedure , public :: set_label => plt_set_label procedure , public :: get_label_count => plt_get_label_count procedure , public :: clear_all_labels => plt_clear_labels procedure , public :: get_axis_equal => plt_get_axis_equal procedure , public :: set_axis_equal => plt_set_axis_equal procedure , public :: get_colormap => plt_get_colormap procedure , public :: set_colormap => plt_set_colormap procedure , public :: get_show_colorbar => plt_get_show_colorbar procedure , public :: set_show_colorbar => plt_set_show_colorbar procedure , public :: get_command_string => plt_get_cmd procedure , public :: push_arrow => plt_push_arrow procedure , public :: pop_arrow => plt_pop_arrow procedure , public :: get_arrow => plt_get_arrow procedure , public :: set_arrow => plt_set_arrow procedure , public :: get_arrow_count => plt_get_arrow_count procedure , public :: clear_arrows => plt_clear_arrows procedure , public :: get_left_margin => plt_get_left_margin procedure , public :: set_left_margin => plt_set_left_margin procedure , public :: get_right_margin => plt_get_right_margin procedure , public :: set_right_margin => plt_set_right_margin procedure , public :: get_top_margin => plt_get_top_margin procedure , public :: set_top_margin => plt_set_top_margin procedure , public :: get_bottom_margin => plt_get_bottom_margin procedure , public :: set_bottom_margin => plt_set_bottom_margin procedure , public :: show_legend => plt_show_legend procedure , public :: set_window_size => plt_set_window_size procedure , public :: get_border_line_width => plt_get_border_line_width procedure , public :: set_border_line_width => plt_set_border_line_width procedure , public :: get_show_x_major_grid => plt_get_show_x_major_grid procedure , public :: set_show_x_major_grid => plt_set_show_x_major_grid procedure , public :: get_show_x_minor_grid => plt_get_show_x_minor_grid procedure , public :: set_show_x_minor_grid => plt_set_show_x_minor_grid procedure , public :: get_show_y_major_grid => plt_get_show_y_major_grid procedure , public :: set_show_y_major_grid => plt_set_show_y_major_grid procedure , public :: get_show_y_minor_grid => plt_get_show_y_minor_grid procedure , public :: set_show_y_minor_grid => plt_set_show_y_minor_grid procedure , public :: get_x_major_grid_color => plt_get_x_major_grid_color procedure , public :: set_x_major_grid_color => plt_set_x_major_grid_color procedure , public :: get_x_minor_grid_color => plt_get_x_minor_grid_color procedure , public :: set_x_minor_grid_color => plt_set_x_minor_grid_color procedure , public :: get_y_major_grid_color => plt_get_y_major_grid_color procedure , public :: set_y_major_grid_color => plt_set_y_major_grid_color procedure , public :: get_y_minor_grid_color => plt_get_y_minor_grid_color procedure , public :: set_y_minor_grid_color => plt_set_y_minor_grid_color procedure , public :: get_x_major_grid_line_style => & plt_get_x_major_grid_line_style procedure , public :: set_x_major_grid_line_style => & plt_set_x_major_grid_line_style procedure , public :: get_x_minor_grid_line_style => & plt_get_x_minor_grid_line_style procedure , public :: set_x_minor_grid_line_style => & plt_set_x_minor_grid_line_style procedure , public :: get_y_major_grid_line_style => & plt_get_y_major_grid_line_style procedure , public :: set_y_major_grid_line_style => & plt_set_y_major_grid_line_style procedure , public :: get_y_minor_grid_line_style => & plt_get_y_minor_grid_line_style procedure , public :: set_y_minor_grid_line_style => & plt_set_y_minor_grid_line_style procedure , public :: get_x_major_grid_line_width => & plt_get_x_major_grid_line_width procedure , public :: set_x_major_grid_line_width => & plt_set_x_major_grid_line_width procedure , public :: get_x_minor_grid_line_width => & plt_get_x_minor_grid_line_width procedure , public :: set_x_minor_grid_line_width => & plt_set_x_minor_grid_line_width procedure , public :: get_y_major_grid_line_width => & plt_get_y_major_grid_line_width procedure , public :: set_y_major_grid_line_width => & plt_set_y_major_grid_line_width procedure , public :: get_y_minor_grid_line_width => & plt_get_y_minor_grid_line_width procedure , public :: set_y_minor_grid_line_width => & plt_set_y_minor_grid_line_width end type contains ! ------------------------------------------------------------------------------ pure function is_plot_data_function ( x ) result ( rst ) !! Tests to see if the supplied [[plot_data]] object is a !! [[plot_data_function]] based type. class ( plot_data ), intent ( in ) :: x !! The [[plot_data]] object. logical :: rst !! True if x is a [[plot_data_function]] based type. select type ( x ) class is ( plot_data_function ) rst = . true . class default rst = . false . end select end function ! ------------------------------------------------------------------------------ subroutine plt_clean_up ( this ) !! Cleans up resources held by the plot object. Inheriting !! classes are expected to call this routine to free internally held !! resources. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. if ( associated ( this % m_terminal )) then deallocate ( this % m_terminal ) nullify ( this % m_terminal ) end if if ( associated ( this % m_legend )) then deallocate ( this % m_legend ) nullify ( this % m_legend ) end if if ( associated ( this % m_colormap )) then deallocate ( this % m_colormap ) nullify ( this % m_colormap ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine plt_init ( this , term , fname , err ) !! Initializes the plot object. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ), optional :: term !! An optional input that is used to define the terminal. !! The default terminal is a WXT terminal. The acceptable inputs !! are: !! !! - GNUPLOT_TERMINAL_PNG !! !! - GNUPLOT_TERMINAL_QT !! !! - GNUPLOT_TERMINAL_WIN32 !! !! - GNUPLOT_TERMINAL_WXT !! !! - GNUPLOT_TERMINAL_LATEX !! !! - GNUPLOT_TERMINAL_SVG !! !! - GNUPLOT_TERMINAL_PDF character ( len = * ), intent ( in ), optional :: fname !! A filename to pass to the terminal in the event the !! terminal is a file type (e.g. GNUPLOT_TERMINAL_PNG). class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: flag , t class ( errors ), pointer :: errmgr type ( errors ), target :: deferr type ( wxt_terminal ), pointer :: wxt type ( windows_terminal ), pointer :: win type ( qt_terminal ), pointer :: qt type ( png_terminal ), pointer :: png type ( latex_terminal ), pointer :: latex type ( svg_terminal ), pointer :: svg type ( pdf_terminal ), pointer :: pdf ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( present ( term )) then t = term else t = GNUPLOT_TERMINAL_WXT end if ! Process flag = 0 if ( associated ( this % m_terminal )) deallocate ( this % m_terminal ) select case ( t ) case ( GNUPLOT_TERMINAL_PNG ) allocate ( png , stat = flag ) if ( present ( fname )) call png % set_filename ( fname ) this % m_terminal => png case ( GNUPLOT_TERMINAL_QT ) allocate ( qt , stat = flag ) this % m_terminal => qt case ( GNUPLOT_TERMINAL_WIN32 ) allocate ( win , stat = flag ) this % m_terminal => win case ( GNUPLOT_TERMINAL_LATEX ) allocate ( latex , stat = flag ) if ( present ( fname )) call latex % set_filename ( fname ) this % m_terminal => latex case ( GNUPLOT_TERMINAL_SVG ) allocate ( svg , stat = flag ) if ( present ( fname )) call svg % set_filename ( fname ) this % m_terminal => svg case ( GNUPLOT_TERMINAL_PDF ) allocate ( pdf , stat = flag ) if ( present ( fname )) call pdf % set_filename ( fname ) this % m_terminal => pdf case default ! WXT is the default allocate ( wxt , stat = flag ) this % m_terminal => wxt end select ! Establish the colormap nullify ( this % m_colormap ) if ( flag == 0 . and . . not . associated ( this % m_legend )) then allocate ( this % m_legend , stat = flag ) end if ! Error Checking if ( flag /= 0 ) then call report_memory_error ( errmgr , \"plt_init\" , flag ) return end if end subroutine ! ------------------------------------------------------------------------------ function plt_get_title ( this ) result ( txt ) !! Gets the plot's title. class ( plot ), intent ( in ) :: this !! The [[plot]] object. character ( len = :), allocatable :: txt !! The title. integer ( int32 ) :: n n = len_trim ( this % m_title ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_title ) end function ! -------------------- subroutine plt_set_title ( this , txt ) !! Sets the plot's title. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. character ( len = * ), intent ( in ) :: txt !! The title. integer :: n n = min ( len_trim ( txt ), PLOTDATA_MAX_NAME_LENGTH ) this % m_title = \"\" if ( n /= 0 ) then this % m_title ( 1 : n ) = txt ( 1 : n ) this % m_hasTitle = . true . else this % m_hasTitle = . false . end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_has_title ( this ) result ( x ) !! Gets a value determining if a title has been defined for the plot !! object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if a title has been defined for this plot; else, !! returns false. x = this % m_hasTitle end function ! ------------------------------------------------------------------------------ function plt_get_legend ( this ) result ( x ) !! Gets the plot's legend object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( legend ), pointer :: x !! A pointer to the legend object. x => this % m_legend end function ! ------------------------------------------------------------------------------ pure function plt_get_count ( this ) result ( x ) !! Gets the number of stored plot_data objects. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The number of plot_data objects. x = this % m_data % count () end function ! ------------------------------------------------------------------------------ subroutine plt_push_data ( this , x , err ) !! Pushes a plot_data object onto the stack. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. class ( plot_data ), intent ( inout ) :: x !! The plot_data object. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Index the color tracking index if the type is of plot_data_colored select type ( x ) class is ( plot_data_colored ) call x % set_color_index ( this % m_colorIndex ) if ( this % m_colorIndex == size ( color_list )) then this % m_colorIndex = 1 else this % m_colorIndex = this % m_colorIndex + 1 end if end select ! Store the object call this % m_data % push ( x ) end subroutine ! ------------------------------------------------------------------------------ subroutine plt_pop_data ( this ) !! Pops the last plot_data object from the stack. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. ! Process call this % m_data % pop () end subroutine ! ------------------------------------------------------------------------------ subroutine plt_clear_all ( this ) !! Removes all plot_data objects from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. ! Process this % m_colorIndex = 1 call this % m_data % clear () end subroutine ! ------------------------------------------------------------------------------ function plt_get ( this , i ) result ( x ) !! Gets a pointer to the requested plot_data object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_data object. class ( plot_data ), pointer :: x !! A pointer to the requested plot_data object. ! Local Variables class ( * ), pointer :: item ! Process item => this % m_data % get ( i ) select type ( item ) class is ( plot_data ) x => item class default nullify ( x ) end select end function ! -------------------- subroutine plt_set ( this , i , x ) !! Sets the requested plot_data object into the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_data object. class ( plot_data ), intent ( in ) :: x !! The plot_data object. call this % m_data % set ( i , x ) end subroutine ! ------------------------------------------------------------------------------ function plt_get_term ( this ) result ( x ) !! Gets the GNUPLOT terminal object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. class ( terminal ), pointer :: x !! A pointer to the GNUPLOT terminal object. x => this % m_terminal end function ! ------------------------------------------------------------------------------ pure function plt_get_show_grid ( this ) result ( x ) !! Gets a flag determining if the grid lines should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if the grid lines should be shown; else, false. x = this % m_showGrid end function ! -------------------- subroutine plt_set_show_grid ( this , x ) !! Sets a flag determining if the grid lines should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the grid lines should be shown; else, false. this % m_showGrid = x end subroutine ! ------------------------------------------------------------------------------ subroutine plt_draw ( this , persist , err ) !! Launches GNUPLOT and draws the plot per the current state of !! the command list. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical , intent ( in ), optional :: persist !! An optional parameter that can be used to keep GNUPLOT open. !! Set to true to force GNUPLOT to remain open; else, set to false !! to allow GNUPLOT to close after drawing. The default is true. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Parameters character ( len = * ), parameter :: fname = \"temp_gnuplot_file.plt\" ! Local Variables logical :: p integer ( int32 ) :: fid , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr class ( terminal ), pointer :: term ! Initialization if ( present ( persist )) then p = persist else p = . true . end if if ( present ( err )) then errmgr => err else errmgr => deferr end if term => this % get_terminal () ! Open the file for writing, and write the contents to file open ( newunit = fid , file = fname , iostat = flag ) if ( flag > 0 ) then call report_file_create_error ( errmgr , \"plt_draw\" , fname , flag ) return end if write ( fid , '(A)' ) term % get_command_string () write ( fid , '(A)' ) new_line ( 'a' ) write ( fid , '(A)' ) this % get_command_string () close ( fid ) ! Launch GNUPLOT if ( p ) then call execute_command_line ( \"gnuplot --persist \" // fname ) else call execute_command_line ( \"gnuplot \" // fname ) end if ! Clean up by deleting the file open ( newunit = fid , file = fname ) close ( fid , status = \"delete\" ) end subroutine ! ------------------------------------------------------------------------------ subroutine plt_save ( this , fname , err ) !! Saves a GNUPLOT command file. class ( plot ), intent ( in ) :: this !! The [[plot]] object. character ( len = * ), intent ( in ) :: fname !! The filename. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: fid , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr class ( terminal ), pointer :: term ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if term => this % get_terminal () ! Open the file for writing, and write the contents to file open ( newunit = fid , file = fname , iostat = flag ) if ( flag > 0 ) then call report_file_create_error ( errmgr , \"plt_save\" , fname , flag ) return end if write ( fid , '(A)' ) term % get_command_string () write ( fid , '(A)' ) new_line ( 'a' ) write ( fid , '(A)' ) this % get_command_string () close ( fid ) end subroutine ! ------------------------------------------------------------------------------ function plt_get_font ( this ) result ( x ) !! Gets the name of the font used for plot text. class ( plot ), intent ( in ) :: this !! The [[plot]] object. character ( len = :), allocatable :: x !! The font name. class ( terminal ), pointer :: term term => this % get_terminal () x = term % get_font_name () end function ! -------------------- subroutine plt_set_font ( this , x ) !! Sets the name of the font used for plot text. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. character ( len = * ), intent ( in ) :: x !! The font name. class ( terminal ), pointer :: term term => this % get_terminal () call term % set_font_name ( x ) end subroutine ! ------------------------------------------------------------------------------ function plt_get_font_size ( this ) result ( x ) !! Gets the size of the font used by the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The size of the font, in points. class ( terminal ), pointer :: term term => this % get_terminal () x = term % get_font_size () end function ! -------------------- subroutine plt_set_font_size ( this , x ) !! Sets the size of the font used by the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The font size, in points. If a value of zero is provided, !! the font size is reset to its default value; or, if a negative !! value is provided, the absolute value of the supplied value is !! utilized. class ( terminal ), pointer :: term term => this % get_terminal () call term % set_font_size ( x ) end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_tics_in ( this ) result ( x ) !! Gets a value determining if the axis tic marks should point inwards. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if the tic marks should point inwards; else, false !! if the tic marks should point outwards. x = this % m_ticsIn end function ! -------------------- subroutine plt_set_tics_in ( this , x ) !! Sets a value determining if the axis tic marks should point inwards. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the tic marks should point inwards; else, false !! if the tic marks should point outwards. this % m_ticsIn = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_draw_border ( this ) result ( x ) !! Gets a value determining if the border should be drawn. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if the border should be drawn; else, false. x = this % m_drawBorder end function ! -------------------- subroutine plt_set_draw_border ( this , x ) !! Sets a value determining if the border should be drawn. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the border should be drawn; else, false. this % m_drawBorder = x end subroutine ! ****************************************************************************** ! ADDED: JUNE 22, 2018 - JAC ! ------------------------------------------------------------------------------ subroutine plt_push_label ( this , lbl , err ) !! Adds a label to the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. class ( plot_label ), intent ( in ) :: lbl !! The plot label. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Process call this % m_labels % push ( lbl ) end subroutine ! ------------------------------------------------------------------------------ subroutine plt_pop_label ( this ) !! Removes the last label from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. call this % m_labels % pop () end subroutine ! ------------------------------------------------------------------------------ function plt_get_label ( this , i ) result ( x ) !! Gets the requested plot_label from the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_label object to retrieve. class ( plot_label ), pointer :: x !! A pointer to the requested plot_label object. ! Local Variables class ( * ), pointer :: item ! Process item => this % m_labels % get ( i ) select type ( item ) class is ( plot_label ) x => item class default nullify ( x ) end select end function ! -------------------- subroutine plt_set_label ( this , i , x ) !! Sets the specified plot_label object. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_label to replace. class ( plot_label ), intent ( in ) :: x !! The new plot_label object. call this % m_labels % set ( i , x ) end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_label_count ( this ) result ( x ) !! Gets the number of plot_label objects belonging to the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The number of plot_label objects. x = this % m_labels % count () end function ! ------------------------------------------------------------------------------ subroutine plt_clear_labels ( this ) !! Clears all plot_label objects from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. call this % m_labels % clear () end subroutine ! ****************************************************************************** ! ADDED: SEPT. 25, 2020 - JAC ! ------------------------------------------------------------------------------ pure function plt_get_axis_equal ( this ) result ( rst ) !! Gets a flag determining if the axes should be equally scaled. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: rst !! Returns true if the axes should be scaled equally; else, false. rst = this % m_axisEqual end function ! -------------------- subroutine plt_set_axis_equal ( this , x ) !! Sets a flag determining if the axes should be equally scaled. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the axes should be scaled equally; else, false. this % m_axisEqual = x end subroutine ! ****************************************************************************** ! ADDED: OCT. 8, 2020 - JAC ! ------------------------------------------------------------------------------ function plt_get_colormap ( this ) result ( x ) !! Gets a pointer to the colormap object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. class ( colormap ), pointer :: x !! A pointer to the colormap object. If no colormap is defined, a !! null pointer is returned. x => this % m_colormap end function ! -------------------- subroutine plt_set_colormap ( this , x , err ) !! Sets the colormap object. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. class ( colormap ), intent ( in ) :: x !! The colormap object. Notice, a copy of this object is !! stored, and the plot object then manages the lifetime of the !! copy. class ( errors ), intent ( inout ), optional , target :: err !! An error handler object. ! Local Variables integer ( int32 ) :: flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization if ( present ( err )) then errmgr => err else errmgr => deferr end if ! Process if ( associated ( this % m_colormap )) deallocate ( this % m_colormap ) allocate ( this % m_colormap , stat = flag , source = x ) if ( flag /= 0 ) then call errmgr % report_error ( \"surf_set_colormap\" , & \"Insufficient memory available.\" , PLOT_OUT_OF_MEMORY_ERROR ) return end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_colorbar ( this ) result ( x ) !! Gets a value determining if the colorbar should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! Returns true if the colorbar should be drawn; else, false. x = this % m_showColorbar end function ! -------------------- subroutine plt_set_show_colorbar ( this , x ) !! Sets a value determining if the colorbar should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true if the colorbar should be drawn; else, false. this % m_showColorbar = x end subroutine ! ------------------------------------------------------------------------------ function plt_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this plot object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. character ( len = :), allocatable :: x !! The command string. ! Local Variables integer ( int32 ) :: i type ( string_builder ) :: str class ( colormap ), pointer :: clr class ( plot_arrow ), pointer :: arrow class ( plot_label ), pointer :: lbl ! Initialization call str % initialize () ! Define the colormap clr => this % get_colormap () if ( associated ( clr )) then call str % append ( new_line ( 'a' )) call str % append ( clr % get_command_string ()) end if ! Show the colorbar if (. not . this % get_show_colorbar ()) then call str % append ( new_line ( 'a' )) call str % append ( \"unset colorbox\" ) end if ! Arrows do i = 1 , this % get_arrow_count () arrow => this % get_arrow ( i ) if (. not . associated ( arrow )) cycle call str % append ( new_line ( 'a' )) call str % append ( arrow % get_command_string ()) end do ! Labels do i = 1 , this % get_label_count () lbl => this % get_label ( i ) if (. not . associated ( lbl )) cycle call str % append ( new_line ( 'a' )) call str % append ( lbl % get_command_string ()) end do ! End x = char ( str % to_string ()) end function ! ****************************************************************************** ! ADDED: 1/3/2024 - JAC ! ------------------------------------------------------------------------------ subroutine plt_push_arrow ( this , x , err ) !! Pushes a new @ref plot_arrow object onto the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. class ( plot_arrow ), intent ( in ) :: x !! The plot_arrow object. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. call this % m_arrows % push ( x , manage = . true .) end subroutine ! ------------------------------------------------------------------------------ subroutine plt_pop_arrow ( this ) !! Pops the last plot_arrow object from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. call this % m_arrows % pop () end subroutine ! ------------------------------------------------------------------------------ function plt_get_arrow ( this , i ) result ( rst ) !! Gets a pointer to the requested plot_arrow object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_arrow to retrieve. class ( plot_arrow ), pointer :: rst !! The plot_arrow object to retrieve. class ( * ), pointer :: ptr ptr => this % m_arrows % get ( i ) select type ( ptr ) class is ( plot_arrow ) rst => ptr class default nullify ( rst ) end select end function ! ------------------------------------------------------------------------------ subroutine plt_set_arrow ( this , i , x ) !! Sets a plot_arrow into the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: i !! The index of the plot_arrow object to replace. class ( plot_arrow ), intent ( in ) :: x !! The new plot_arrow object. call this % m_arrows % set ( i , x ) end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_arrow_count ( this ) result ( rst ) !! Gets the number of plot_arrow objects held by the plot object. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: rst !! The plot_arrow objects count. rst = this % m_arrows % count () end function ! ------------------------------------------------------------------------------ subroutine plt_clear_arrows ( this ) !! Clears all plot_arrow objects from the plot. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. call this % m_arrows % clear () end subroutine ! ****************************************************************************** ! ADDED: 4/7/2025 - JAC ! ------------------------------------------------------------------------------ pure function plt_get_left_margin ( this ) result ( x ) !! Gets the left margin of the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. x = this % m_leftMargin end function ! ---------- subroutine plt_set_left_margin ( this , x ) !! Sets the left margin of the plot. If the value is negative, the !! default margin is used. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. this % m_leftMargin = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_right_margin ( this ) result ( x ) !! Gets the right margin of the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. x = this % m_rightMargin end function ! ---------- subroutine plt_set_right_margin ( this , x ) !! Sets the right margin of the plot. If the value is negative, the !! default margin is used. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. this % m_rightMargin = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_top_margin ( this ) result ( x ) !! Gets the top margin of the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. x = this % m_topMargin end function ! ---------- subroutine plt_set_top_margin ( this , x ) !! Sets the top margin of the plot. If the value is negative, the !! default margin is used. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. this % m_topMargin = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_bottom_margin ( this ) result ( x ) !! Gets the bottom margin of the plot. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. x = this % m_bottomMargin end function ! ---------- subroutine plt_set_bottom_margin ( this , x ) !! Sets the bottom margin of the plot. If the value is negative, the !! default margin is used. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The margin, in percent of screen. A negative value indicates the !! default margin is used. this % m_bottomMargin = x end subroutine ! ****************************************************************************** ! ADDED AUG. 16, 2026 - V1.9.0 ! ------------------------------------------------------------------------------ subroutine plt_show_legend ( this , x ) !! Sets a value determining the legend should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! Set to true to show the legend; else, set to false. if ( associated ( this % m_legend )) then call this % m_legend % set_is_visible ( x ) end if end subroutine ! ------------------------------------------------------------------------------ subroutine plt_set_window_size ( this , width , height ) !! Sets the height and width of the plot window. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: width !! The plot window width. integer ( int32 ), intent ( in ) :: height !! The plot window height. if ( associated ( this % m_terminal )) then call this % m_terminal % set_window_width ( width ) call this % m_terminal % set_window_height ( height ) end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_border_line_width ( this ) result ( x ) !! Gets the width of the lines used to draw the border. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_borderLineWidth end function ! -------------------- subroutine plt_set_border_line_width ( this , x ) !! Sets the width of the lines used to draw the border. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_borderLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_x_major_grid ( this ) result ( x ) !! Gets a value determining if the x-axis major grid should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showXMajorGrid end function ! -------------------- subroutine plt_set_show_x_major_grid ( this , x ) !! Sets a value determining if the x-axis major grid should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showXMajorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_x_minor_grid ( this ) result ( x ) !! Gets a value determining if the x-axis minor grid should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showXMinorGrid end function ! -------------------- subroutine plt_set_show_x_minor_grid ( this , x ) !! Sets a value determining if the x-axis minor grid should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showXMinorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_y_major_grid ( this ) result ( x ) !! Gets a value determining if the x-axis major grid should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showYMajorGrid end function ! -------------------- subroutine plt_set_show_y_major_grid ( this , x ) !! Sets a value determining if the x-axis major grid should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showYMajorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_show_y_minor_grid ( this ) result ( x ) !! Gets a value determining if the x-axis minor grid should be shown. class ( plot ), intent ( in ) :: this !! The [[plot]] object. logical :: x !! True if the grid should be shown; else, false. x = this % m_showYMinorGrid end function ! -------------------- subroutine plt_set_show_y_minor_grid ( this , x ) !! Sets a value determining if the x-axis minor grid should be shown. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. logical , intent ( in ) :: x !! True if the grid should be shown; else, false. this % m_showYMinorGrid = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_major_grid_color ( this ) result ( x ) !! Gets the color of the x-axis major grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( color ) :: x !! The color. x = this % m_xMajorGridColor end function ! -------------------- subroutine plt_set_x_major_grid_color ( this , x ) !! Sets the color of the x-axis major grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. type ( color ), intent ( in ) :: x !! The color. this % m_xMajorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_minor_grid_color ( this ) result ( x ) !! Gets the color of the x-axis minor grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( color ) :: x !! The color. x = this % m_xMinorGridColor end function ! -------------------- subroutine plt_set_x_minor_grid_color ( this , x ) !! Sets the color of the x-axis minor grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. type ( color ), intent ( in ) :: x !! The color. this % m_xMinorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_major_grid_color ( this ) result ( x ) !! Gets the color of the y-axis major grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( color ) :: x !! The color. x = this % m_yMajorGridColor end function ! -------------------- subroutine plt_set_y_major_grid_color ( this , x ) !! Sets the color of the y-axis major grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. type ( color ), intent ( in ) :: x !! The color. this % m_yMajorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_minor_grid_color ( this ) result ( x ) !! Gets the color of the y-axis minor grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. type ( color ) :: x !! The color. x = this % m_yMinorGridColor end function ! -------------------- subroutine plt_set_y_minor_grid_color ( this , x ) !! Sets the color of the y-axis minor grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. type ( color ), intent ( in ) :: x !! The color. this % m_yMinorGridColor = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_major_grid_line_style ( this ) result ( x ) !! Gets the line style used for the x-axis major grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_xMajorGridLineStyle end function ! -------------------- subroutine plt_set_x_major_grid_line_style ( this , x ) !! Sets the line style used for the x-axis major grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_xMajorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_minor_grid_line_style ( this ) result ( x ) !! Gets the line style used for the x-axis minor grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_xMinorGridLineStyle end function ! -------------------- subroutine plt_set_x_minor_grid_line_style ( this , x ) !! Sets the line style used for the x-axis minor grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_xMinorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_major_grid_line_style ( this ) result ( x ) !! Gets the line style used for the y-axis major grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_yMajorGridLineStyle end function ! -------------------- subroutine plt_set_y_major_grid_line_style ( this , x ) !! Sets the line style used for the y-axis major grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_yMajorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_minor_grid_line_style ( this ) result ( x ) !! Gets the line style used for the y-axis minor grid lines. class ( plot ), intent ( in ) :: this !! The [[plot]] object. integer ( int32 ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID x = this % m_yMinorGridLineStyle end function ! -------------------- subroutine plt_set_y_minor_grid_line_style ( this , x ) !! Sets the line style used for the y-axis minor grid lines. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. integer ( int32 ), intent ( in ) :: x !! The line style. The line style must be one of the following. !! !! - LINE_DASHED !! !! - LINE_DASH_DOTTED !! !! - LINE_DASH_DOT_DOT !! !! - LINE_DOTTED !! !! - LINE_SOLID if ( x == LINE_DASHED . or . & x == LINE_DASH_DOTTED . or . & x == LINE_DASH_DOT_DOT . or . & x == LINE_DOTTED . or . & x == LINE_SOLID ) then ! Only reset the line style if it is a valid type. this % m_yMinorGridLineStyle = x end if end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_major_grid_line_width ( this ) result ( x ) !! Gets the width of the x-axis major grid lines, in pixels. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_xMajorGridLineWidth end function ! -------------------- subroutine plt_set_x_major_grid_line_width ( this , x ) !! Sets the width of the x-axis major grid lines, in pixels. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_xMajorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_x_minor_grid_line_width ( this ) result ( x ) !! Gets the width of the x-axis minor grid lines, in pixels. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_xMinorGridLineWidth end function ! -------------------- subroutine plt_set_x_minor_grid_line_width ( this , x ) !! Sets the width of the x-axis minor grid lines, in pixels. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_xMinorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_major_grid_line_width ( this ) result ( x ) !! Gets the width of the y-axis major grid lines, in pixels. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_yMajorGridLineWidth end function ! -------------------- subroutine plt_set_y_major_grid_line_width ( this , x ) !! Sets the width of the y-axis major grid lines, in pixels. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_yMajorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function plt_get_y_minor_grid_line_width ( this ) result ( x ) !! Gets the width of the y-axis minor grid lines, in pixels. class ( plot ), intent ( in ) :: this !! The [[plot]] object. real ( real32 ) :: x !! The line width. x = this % m_yMinorGridLineWidth end function ! -------------------- subroutine plt_set_y_minor_grid_line_width ( this , x ) !! Sets the width of the y-axis minor grid lines, in pixels. class ( plot ), intent ( inout ) :: this !! The [[plot]] object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_yMinorGridLineWidth = x end subroutine ! ------------------------------------------------------------------------------ ! -------------------- ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot.f90.html"},{"title":"fplot_surface_plot_data.f90 – FPLOT","text":"Source Code module fplot_surface_plot_data use iso_fortran_env use fplot_plot_data use fplot_errors use strings implicit none private public :: surface_plot_data type , extends ( plot_data ) :: surface_plot_data !! Provides a three-dimensional surface plot data set. real ( real64 ), private , allocatable , dimension (:,:) :: m_x !! Stores the x-coordinate data real ( real64 ), private , allocatable , dimension (:,:) :: m_y !! Stores the y-coordinate data real ( real64 ), private , allocatable , dimension (:,:) :: m_z !! Stores the z-coordinate data logical , private :: m_wireframe = . false . !! Set to true to display a wireframe of the surface; else, just a !! smooth surface will be drawn contains procedure , public :: get_size => surfd_get_size procedure , public :: get_x => surfd_get_x procedure , public :: set_x => surfd_set_x procedure , public :: get_y => surfd_get_y procedure , public :: set_y => surfd_set_y procedure , public :: get_z => surfd_get_z procedure , public :: set_z => surfd_set_z procedure , public :: get_use_wireframe => surfd_get_wireframe procedure , public :: set_use_wireframe => surfd_set_wireframe procedure , public :: get_command_string => surfd_get_cmd procedure , public :: get_data_string => surfd_get_data_cmd procedure , public :: define_data => surfd_set_data_1 procedure , public :: clear_data => surfd_clear_data end type contains ! ------------------------------------------------------------------------------ pure function surfd_get_size ( this , dim ) result ( x ) !! Gets the size of the stored data set. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: dim !! The dimension of interest. Notice, data is stored as a !! 2D matrix (i.e. only 1 and 2 are valid inputs). integer ( int32 ) :: x !! The size of the requested dimension. if ( allocated ( this % m_x )) then x = size ( this % m_x , dim ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function surfd_get_x ( this , i , j ) result ( x ) !! Gets the requested X data point. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ) :: x !! The value. if ( allocated ( this % m_x )) then x = this % m_x ( i , j ) else x = 0.0d0 end if end function ! -------------------- subroutine surfd_set_x ( this , i , j , x ) !! Sets the requested X data point. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ), intent ( in ) :: x !! The value. if ( allocated ( this % m_x )) then this % m_x ( i , j ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surfd_get_y ( this , i , j ) result ( x ) !! Gets the requested Y data point. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ) :: x !! The value. if ( allocated ( this % m_y )) then x = this % m_y ( i , j ) else x = 0.0d0 end if end function ! -------------------- subroutine surfd_set_y ( this , i , j , x ) !! Sets the requested Y data point. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ), intent ( in ) :: x !! The value. if ( allocated ( this % m_y )) then this % m_y ( i , j ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surfd_get_z ( this , i , j ) result ( x ) !! Gets the requested Z data point. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ) :: x !! The value. if ( allocated ( this % m_z )) then x = this % m_z ( i , j ) else x = 0.0d0 end if end function ! -------------------- subroutine surfd_set_z ( this , i , j , x ) !! Sets the requested Z data point. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. integer ( int32 ), intent ( in ) :: i !! The row index. integer ( int32 ), intent ( in ) :: j !! The column index. real ( real64 ), intent ( in ) :: x !! The value. if ( allocated ( this % m_z )) then this % m_z ( i , j ) = x end if end subroutine ! ------------------------------------------------------------------------------ pure function surfd_get_wireframe ( this ) result ( x ) !! Gets a value determining if a wireframe mesh should be displayed. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. logical :: x !! Returns true if a wireframe mesh should be displayed; else, !! false to display a solid surface. x = this % m_wireframe end function ! -------------------- subroutine surfd_set_wireframe ( this , x ) !! Sets a value determining if a wireframe mesh should be displayed. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. logical , intent ( in ) :: x !! Set to true if a wireframe mesh should be displayed; else, !! false to display a solid surface. this % m_wireframe = x end subroutine ! ------------------------------------------------------------------------------ function surfd_get_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string to represent this surface_plot_data !! object. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. character ( len = :), allocatable :: x !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! PM3D or wireframe? if ( this % get_use_wireframe ()) then call str % append ( \" with lines\" ) else call str % append ( \" with pm3d\" ) end if ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function surfd_get_data_cmd ( this ) result ( x ) !! Gets the GNUPLOT command string containing the actual data to plot. class ( surface_plot_data ), intent ( in ) :: this !! The suface_plot_data object. character ( len = :), allocatable :: x !! The GNUPLOT command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , j , m , n character :: delimiter , nl ! Initialization call str % initialize () m = this % get_size ( 1 ) n = this % get_size ( 2 ) delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) ! Process do j = 1 , n do i = 1 , m call str % append ( to_string ( this % get_x ( i , j ))) call str % append ( delimiter ) call str % append ( to_string ( this % get_y ( i , j ))) call str % append ( delimiter ) call str % append ( to_string ( this % get_z ( i , j ))) call str % append ( nl ) end do if ( j /= n ) call str % append ( nl ) end do ! End x = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine surfd_set_data_1 ( this , x , y , z , err ) !! Defines the data set. class ( surface_plot_data ), intent ( inout ) :: this !! The suface_plot_data object. real ( real64 ), intent ( in ), dimension (:,:) :: x !! An M-by-N matrix containing the x-coordinate data. real ( real64 ), intent ( in ), dimension (:,:) :: y !! An M-by-N matrix containing the y-coordinate data. real ( real64 ), intent ( in ), dimension (:,:) :: z !! An M-by-N matrix containing the z-coordinate data. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , j , m , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization m = size ( x , 1 ) n = size ( x , 2 ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Check if ( size ( y , 1 ) /= m . or . size ( y , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"surfd_set_data_1\" , & \"y\" , m , n , size ( y , 1 ), size ( y , 2 )) return end if if ( size ( z , 1 ) /= m . or . size ( z , 2 ) /= n ) then call report_matrix_size_mismatch_error ( errmgr , \"surfd_set_data_1\" , & \"z\" , m , n , size ( z , 1 ), size ( z , 2 )) return end if ! Process if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_z )) deallocate ( this % m_z ) allocate ( this % m_x ( m , n ), stat = flag ) if ( flag == 0 ) allocate ( this % m_y ( m , n ), stat = flag ) if ( flag == 0 ) allocate ( this % m_z ( m , n ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"surfd_set_data_1\" , flag ) return end if do concurrent ( j = 1 : n ) do i = 1 , m this % m_x ( i , j ) = x ( i , j ) this % m_y ( i , j ) = y ( i , j ) this % m_z ( i , j ) = z ( i , j ) end do end do end subroutine ! ------------------------------------------------------------------------------ subroutine surfd_clear_data ( this ) !! Clears the data from this data set. class ( surface_plot_data ), intent ( inout ) :: this !! The surface_plot_data object. if ( allocated ( this % m_x )) deallocate ( this % m_x ) if ( allocated ( this % m_y )) deallocate ( this % m_y ) if ( allocated ( this % m_z )) deallocate ( this % m_z ) end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_surface_plot_data.f90.html"},{"title":"fplot_plot_data_error_bars.f90 – FPLOT","text":"Source Code ! fplot_plot_data_error_bars.f90 module fplot_plot_data_error_bars use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings implicit none private public :: plot_data_error_bars type , extends ( plot_data_colored ) :: plot_data_error_bars !! Defines a 2D error-bar based data set. logical , private :: m_xBars = . false . !! Display x error bars? logical , private :: m_yBars = . false . !! Display y error bars? real ( real64 ), private , allocatable , dimension (:,:) :: m_data !! A matrix containing the raw and error data. Column 1 is for the !! x coordinate, column 2 for the y coordinate, and the remaining !! columns are for the error data (x, then y if applicable). logical , private :: m_box = . false . !! Display an error box for the case where x and y errors are !! defined. logical , private :: m_range = . false . !! Plot error bars using a defined range vs. a +/- value. real ( real32 ), private :: m_lineWidth = 2.0 !! Line width contains procedure , public :: get_command_string => pde_get_cmd procedure , public :: get_data_string => pde_get_data_cmd generic , public :: define_x_error_data => pde_define_x_err , & pde_define_x_err_lim generic , public :: define_y_error_data => pde_define_y_err , & pde_define_y_err_lim generic , public :: define_xy_error_data => pde_define_xy_err , & pde_define_xy_err_lim procedure , public :: get_plot_x_error_bars => pde_get_plot_x_err procedure , public :: get_plot_y_error_bars => pde_get_plot_y_err procedure , public :: get_count => pde_get_count procedure , public :: get_use_error_box => pde_get_box procedure , public :: set_use_error_box => pde_set_box procedure , public :: get_use_range => pde_get_use_range procedure , public :: clear_data => pde_clear_data procedure :: pde_define_x_err procedure :: pde_define_y_err procedure :: pde_define_xy_err procedure :: pde_define_x_err_lim procedure :: pde_define_y_err_lim procedure :: pde_define_xy_err_lim procedure , public :: get_line_width => pde_get_line_width procedure , public :: set_line_width => pde_set_line_width end type contains ! ------------------------------------------------------------------------------ function pde_get_cmd ( this ) result ( cmd ) !! Gets the appropriate GNUPLOT command string for the object. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. character ( len = :), allocatable :: cmd !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: n type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Title n = len_trim ( this % get_name ()) if ( n > 0 ) then call str % append ( ' title \"' ) call str % append ( this % get_name ()) call str % append ( '\"' ) else call str % append ( ' notitle' ) end if ! Color clr = this % get_line_color () call str % append ( ' lc rgb \"#' ) call str % append ( clr % to_hex_string ()) call str % append ( '\"' ) ! Line Width call str % append ( \" lw \" ) call str % append ( to_string ( this % get_line_width ())) ! Error Bars if ( this % get_plot_x_error_bars () . and . this % get_plot_y_error_bars ()) then if ( this % get_use_error_box ()) then call str % append ( \" w boxxyerr\" ) else call str % append ( \" w xyerr\" ) end if else if ( this % get_plot_x_error_bars () . and . . not . this % get_plot_y_error_bars ()) then call str % append ( \" w xerr\" ) else if (. not . this % get_plot_x_error_bars () . and . this % get_plot_y_error_bars ()) then call str % append ( \" w yerr\" ) end if ! Output cmd = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ function pde_get_data_cmd ( this ) result ( cmd ) !! Gets the appropriate GNUPLOT commands to plot the data itself. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. character ( len = :), allocatable :: cmd !! The command string. ! Local Variables type ( string_builder ) :: str integer ( int32 ) :: i , n character :: delimiter , nl ! Initialization call str % initialize () delimiter = achar ( 9 ) ! tab delimiter nl = new_line ( nl ) n = this % get_count () ! Process if ( this % get_plot_x_error_bars () . and . this % get_plot_y_error_bars ()) then if ( this % get_use_range ()) then do i = 1 , n call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 4 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 5 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 6 ))) call str % append ( nl ) end do else do i = 1 , n call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 4 ))) call str % append ( nl ) end do end if else if ( this % get_use_range ()) then do i = 1 , n call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 4 ))) call str % append ( nl ) end do else do i = 1 , n call str % append ( to_string ( this % m_data ( i , 1 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 2 ))) call str % append ( delimiter ) call str % append ( to_string ( this % m_data ( i , 3 ))) call str % append ( nl ) end do end if end if ! if (this%get_plot_x_error_bars() .and. this%get_plot_y_error_bars()) then ! do i = 1, n ! call str%append(to_string(this%m_data(i, 1))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 2))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 3))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 4))) ! call str%append(nl) ! end do ! else ! do i = 1, n ! call str%append(to_string(this%m_data(i, 1))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 2))) ! call str%append(delimiter) ! call str%append(to_string(this%m_data(i, 3))) ! call str%append(nl) ! end do ! end if ! End cmd = char ( str % to_string ()) end function ! ------------------------------------------------------------------------------ subroutine pde_define_x_err ( this , x , y , xerr , err ) !! Defines the x error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: xerr !! An N-element array containing the x errors at each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_x_err\" , & \"y\" , n , size ( y )) return end if if ( size ( xerr ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_x_err\" , & \"xerr\" , n , size ( xerr )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 3 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_x_err\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = xerr ( i ) end do this % m_xBars = . true . this % m_range = . false . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_define_y_err ( this , x , y , yerr , err ) !! Defines the y error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: yerr !! An N-element array containing the y errors at each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_y_err\" , & \"y\" , n , size ( y )) return end if if ( size ( yerr ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_y_err\" , & \"yerr\" , n , size ( yerr )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 3 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_y_err\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = yerr ( i ) end do this % m_yBars = . true . this % m_range = . false . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_define_xy_err ( this , x , y , xerr , yerr , err ) !! Defines x and y error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: xerr !! An N-element array containing the x errors at each data point. real ( real64 ), intent ( in ), dimension (:) :: yerr !! An N-element array containing the y errors at each data point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_xy_err\" , & \"y\" , n , size ( y )) return end if if ( size ( xerr ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_xy_err\" , & \"xerr\" , n , size ( xerr )) return end if if ( size ( yerr ) /= n ) then call report_array_size_mismatch_error ( errmgr , \"pde_define_xy_err\" , & \"yerr\" , n , size ( yerr )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 4 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_xy_err\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = xerr ( i ) this % m_data ( i , 4 ) = yerr ( i ) end do this % m_xBars = . true . this % m_yBars = . true . this % m_range = . false . end subroutine ! ------------------------------------------------------------------------------ pure function pde_get_plot_x_err ( this ) result ( x ) !! Checks to see if the x error bar data has been defined, and as !! a result, if the x error data is to be plotted. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. logical :: x !! Returns true if the x error bars are to be plotted; else, false. x = this % m_xBars end function ! ------------------------------------------------------------------------------ pure function pde_get_plot_y_err ( this ) result ( x ) !! Checks to see if the y error bar data has been defined, and as !! a result, if the x error data is to be plotted. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. logical :: x !! Returns true if the y error bars are to be plotted; else, false. x = this % m_yBars end function ! ------------------------------------------------------------------------------ pure function pde_get_count ( this ) result ( x ) !! Gets the number of stored data points. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. integer ( int32 ) :: x !! The number of data points. if ( allocated ( this % m_data )) then x = size ( this % m_data , 1 ) else x = 0 end if end function ! ------------------------------------------------------------------------------ pure function pde_get_box ( this ) result ( x ) !! Checks to see if the x and y error boxes should be utilized. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. logical :: x !! Returns true if the error boxes are to be plotted; else, !! false. Notice, the error boxes are only utilized if there is !! both x and y error data defined, regardless of the value of this !! property. x = this % m_box end function ! -------------------- subroutine pde_set_box ( this , x ) !! Deterimines if the x and y error boxes should be utilized. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. logical , intent ( in ) :: x !! Set to true if the error boxes are to be plotted; else, !! false. Notice, the error boxes are only utilized if there is !! both x and y error data defined, regardless of the value of this !! property. this % m_box = x end subroutine ! ------------------------------------------------------------------------------ pure function pde_get_use_range ( this ) result ( x ) !! Gets a value determining if a defined range is being used !! to define the error bar extremes. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. logical :: x !! True if a defined range is being used; else, false. x = this % m_range end function ! ------------------------------------------------------------------------------ subroutine pde_define_x_err_lim ( this , x , y , xmin , xmax , err ) !! Defines the x error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: xmin !! An N-element array containing the minimum x values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: xmax !! An N-element array containing the maximum x values at each data !! point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_x_err_lim\" , \"y\" , n , size ( y )) return end if if ( size ( xmin ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_x_err_lim\" , \"xmin\" , n , size ( xmin )) return end if if ( size ( xmax ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_x_err_lim\" , \"xmax\" , n , size ( xmax )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 4 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_x_err_lim\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = xmin ( i ) this % m_data ( i , 4 ) = xmax ( i ) end do this % m_xBars = . true . this % m_range = . true . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_define_y_err_lim ( this , x , y , ymin , ymax , err ) !! Defines the y error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: ymin !! An N-element array containing the minimum y values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: ymax !! An N-element array containing the maximum y values at each data !! point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_y_err_lim\" , \"y\" , n , size ( y )) return end if if ( size ( ymin ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_y_err_lim\" , \"ymin\" , n , size ( ymin )) return end if if ( size ( ymax ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_y_err_lim\" , \"ymax\" , n , size ( ymax )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 4 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_y_err_lim\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = ymin ( i ) this % m_data ( i , 4 ) = ymax ( i ) end do this % m_yBars = . true . this % m_range = . true . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_define_xy_err_lim ( this , x , y , xmin , xmax , ymin , & ymax , err ) !! Defines the x and y error data. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real64 ), intent ( in ), dimension (:) :: x !! An N-element array containing the x coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: y !! An N-element array containing the y coordinates of the data. real ( real64 ), intent ( in ), dimension (:) :: xmin !! An N-element array containing the minimum x values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: xmax !! An N-element array containing the maximum x values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: ymin !! An N-element array containing the minimum y values at each data !! point. real ( real64 ), intent ( in ), dimension (:) :: ymax !! An N-element array containing the maximum x values at each data !! point. class ( errors ), intent ( inout ), optional , target :: err !! An error handling object. ! Local Variables integer ( int32 ) :: i , n , flag class ( errors ), pointer :: errmgr type ( errors ), target :: deferr ! Initialization n = size ( x ) if ( present ( err )) then errmgr => err else errmgr => deferr end if if ( len ( this % get_datablock_name ()) == 0 ) then call this % create_unique_datablock_name () end if ! Input Checking if ( size ( y ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"y\" , n , size ( y )) return end if if ( size ( xmin ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"xmin\" , n , size ( xmin )) return end if if ( size ( xmax ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"xmax\" , n , size ( xmax )) return end if if ( size ( ymin ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"ymin\" , n , size ( ymin )) return end if if ( size ( ymax ) /= n ) then call report_array_size_mismatch_error ( errmgr , & \"pde_define_xy_err_lim\" , \"ymax\" , n , size ( ymax )) return end if ! Process this % m_xBars = . false . this % m_yBars = . false . this % m_range = . false . if ( allocated ( this % m_data )) deallocate ( this % m_data ) allocate ( this % m_data ( n , 6 ), stat = flag ) if ( flag /= 0 ) then call report_memory_error ( errmgr , \"pde_define_xy_err_lim\" , flag ) return end if do i = 1 , n this % m_data ( i , 1 ) = x ( i ) this % m_data ( i , 2 ) = y ( i ) this % m_data ( i , 3 ) = xmin ( i ) this % m_data ( i , 4 ) = xmax ( i ) this % m_data ( i , 5 ) = ymin ( i ) this % m_data ( i , 6 ) = ymax ( i ) end do this % m_xBars = . true . this % m_yBars = . true . this % m_range = . true . end subroutine ! ------------------------------------------------------------------------------ subroutine pde_clear_data ( this ) !! Clears the data from this data set. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. if ( allocated ( this % m_data )) deallocate ( this % m_data ) end subroutine ! ------------------------------------------------------------------------------ pure function pde_get_line_width ( this ) result ( x ) !! Gets the line width. class ( plot_data_error_bars ), intent ( in ) :: this !! The plot_data_error_bars object. real ( real32 ) :: x !! The line width. x = this % m_lineWidth end function ! -------------------- subroutine pde_set_line_width ( this , x ) !! Sets the line width. class ( plot_data_error_bars ), intent ( inout ) :: this !! The plot_data_error_bars object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_lineWidth = x end subroutine ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_error_bars.f90.html"}]} \ No newline at end of file diff --git a/doc/type/color.html b/doc/type/color.html index ec4232da..29f1c578 100644 --- a/doc/type/color.html +++ b/doc/type/color.html @@ -74,7 +74,7 @@

    color
  • 10 statements + title="

    0.9% of total for derived types.

    Including implementation: 80 statements, 0.5% of total for derived types.">10 statements
  • @@ -458,7 +458,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/colormap.html b/doc/type/colormap.html index 8bc72926..57079ae1 100644 --- a/doc/type/colormap.html +++ b/doc/type/colormap.html @@ -74,7 +74,7 @@

    colormap
  • 17 statements + title="

    2.7% of total for derived types.

    Including implementation: 188 statements, 1.1% of total for derived types.">29 statements
  • @@ -130,15 +130,23 @@

    Type-Bound Procedures

    @@ -165,6 +173,122 @@

    Type-Bound Procedures

    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +

    @@ -224,7 +348,123 @@

    - + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +522,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +640,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -516,7 +756,279 @@

    - + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +1166,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -805,7 +1317,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/cool_colormap.html b/doc/type/cool_colormap.html index 7cf58ec3..5d112105 100644 --- a/doc/type/cool_colormap.html +++ b/doc/type/cool_colormap.html @@ -74,7 +74,7 @@

    cool_colormap
  • 4 statements + title="

    0.4% of total for derived types.

    Including implementation: 177 statements, 1.1% of total for derived types.">4 statements
  • @@ -130,15 +130,23 @@

    Type-Bound Procedures

    @@ -165,6 +173,122 @@

    Type-Bound Procedures

    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +

    @@ -224,7 +348,123 @@

    - + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +522,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +640,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -516,7 +756,279 @@

    - + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +1166,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -805,7 +1317,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/correlation_plot.html b/doc/type/correlation_plot.html index 75147e68..7f17e27b 100644 --- a/doc/type/correlation_plot.html +++ b/doc/type/correlation_plot.html @@ -74,7 +74,7 @@

    correlation_plot
  • 17 statements + title="

    1.6% of total for derived types.

    Including implementation: 160 statements, 1.0% of total for derived types.">17 statements
  • @@ -130,19 +130,19 @@

    Type-Bound Procedures

  • @@ -170,7 +170,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: draw => cp_draw @@ -256,7 +256,7 @@

    Arguments

    - +

    procedure, public :: get => cp_get @@ -402,7 +402,7 @@

    - +

    procedure, public :: get_command_string => cp_get_command @@ -460,7 +460,7 @@

    - +

    procedure, public :: get_font_name => cp_get_font @@ -518,7 +518,7 @@

    - +

    procedure, public :: get_font_size => cp_get_font_size @@ -692,7 +692,7 @@

    - +

    procedure, public :: get_terminal => cp_get_term @@ -750,7 +750,7 @@

    - +

    procedure, public :: initialize => cp_init @@ -919,7 +919,7 @@

    Arguments

    - +

    procedure, public :: save_file => cp_save @@ -1002,7 +1002,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => cp_set_font @@ -1070,7 +1070,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => cp_set_font_size @@ -1153,7 +1153,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/custom_colormap.html b/doc/type/custom_colormap.html index 1b58f94f..274d0126 100644 --- a/doc/type/custom_colormap.html +++ b/doc/type/custom_colormap.html @@ -74,7 +74,7 @@

    custom_colormap
  • 8 statements + title="

    0.8% of total for derived types.

    Including implementation: 223 statements, 1.3% of total for derived types.">8 statements
  • @@ -141,17 +141,25 @@

    Type-Bound Procedures

    @@ -206,7 +214,7 @@

    Arguments

    - + type(custom_colormap), intent(inout) @@ -234,6 +242,122 @@

    Arguments

    Type-Bound Procedures

    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +

    @@ -293,7 +417,123 @@

    - + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_colormap => custom_get @@ -351,7 +591,7 @@

    - +

    procedure, public :: get_command_string => cm_get_cmd @@ -409,7 +649,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -527,7 +767,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -643,7 +883,279 @@

    - + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_colormap => custom_set @@ -729,7 +1241,7 @@

    Arguments

    - +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -867,7 +1379,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -1018,7 +1530,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/delaunay_tri_2d.html b/doc/type/delaunay_tri_2d.html index c350001c..081af3fb 100644 --- a/doc/type/delaunay_tri_2d.html +++ b/doc/type/delaunay_tri_2d.html @@ -74,7 +74,7 @@

    delaunay_tri_2d
  • 13 statements + title="

    1.2% of total for derived types.

    Including implementation: 130 statements, 0.8% of total for derived types.">13 statements
  • @@ -660,7 +660,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


  • diff --git a/doc/type/delaunay_tri_surface.html b/doc/type/delaunay_tri_surface.html index 0e12d35c..923929ce 100644 --- a/doc/type/delaunay_tri_surface.html +++ b/doc/type/delaunay_tri_surface.html @@ -74,7 +74,7 @@

    delaunay_tri_surface
  • 9 statements + title="

    0.8% of total for derived types.

    Including implementation: 231 statements, 1.4% of total for derived types.">9 statements
  • @@ -973,7 +973,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


  • diff --git a/doc/type/earth_colormap.html b/doc/type/earth_colormap.html index b14348d4..3e748c89 100644 --- a/doc/type/earth_colormap.html +++ b/doc/type/earth_colormap.html @@ -74,7 +74,7 @@

    earth_colormap
  • 4 statements + title="

    0.4% of total for derived types.

    Including implementation: 177 statements, 1.1% of total for derived types.">4 statements
  • @@ -130,15 +130,23 @@

    Type-Bound Procedures

    @@ -165,6 +173,122 @@

    Type-Bound Procedures

    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +

    @@ -224,7 +348,123 @@

    - + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +522,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +640,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -516,7 +756,279 @@

    - + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +1166,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -805,7 +1317,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/errors.html b/doc/type/errors.html index 1b811940..f2522efa 100644 --- a/doc/type/errors.html +++ b/doc/type/errors.html @@ -271,7 +271,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/file_terminal.html b/doc/type/file_terminal.html index 463729cb..2a3359b5 100644 --- a/doc/type/file_terminal.html +++ b/doc/type/file_terminal.html @@ -130,20 +130,20 @@

    Type-Bound Procedures

    @@ -173,7 +173,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => fterm_get_command_string @@ -290,7 +290,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -348,7 +348,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -406,7 +406,7 @@

    - +

    procedure(term_get_string_result), public, deferred :: get_id_string @@ -522,7 +522,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -764,7 +764,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -832,7 +832,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -968,7 +968,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1187,7 +1187,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/filled_plot_data.html b/doc/type/filled_plot_data.html index e0c3589a..7de5609d 100644 --- a/doc/type/filled_plot_data.html +++ b/doc/type/filled_plot_data.html @@ -74,7 +74,7 @@

    filled_plot_data
  • 12 statements + title="

    1.1% of total for derived types.

    Including implementation: 190 statements, 1.1% of total for derived types.">12 statements
  • @@ -130,14 +130,14 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name - define_data + define_data get_axes_string get_color_index - get_command_string - get_data_string + get_command_string + get_data_string get_datablock_name get_draw_against_y2 get_line_color @@ -173,7 +173,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -229,7 +229,7 @@

    Arguments

    - +

    procedure, public :: clear_data => fpd_clear_data @@ -336,7 +336,7 @@

    Arguments

    - +

    procedure, public :: define_data => fpd_define_data @@ -567,7 +567,7 @@

    - +

    procedure, public :: get_command_string => fpd_get_cmd @@ -626,7 +626,7 @@

    - +

    procedure, public :: get_data_string => fpd_get_data_cmd @@ -1277,7 +1277,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/grey_colormap.html b/doc/type/grey_colormap.html index e10e2cae..0cb73a4a 100644 --- a/doc/type/grey_colormap.html +++ b/doc/type/grey_colormap.html @@ -74,7 +74,7 @@

    grey_colormap
  • 4 statements + title="

    0.4% of total for derived types.

    Including implementation: 177 statements, 1.1% of total for derived types.">4 statements
  • @@ -130,15 +130,23 @@

    Type-Bound Procedures

    @@ -165,6 +173,122 @@

    Type-Bound Procedures

    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +

    @@ -224,7 +348,123 @@

    - + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +522,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +640,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -516,7 +756,279 @@

    - + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +1166,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -805,7 +1317,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/hot_colormap.html b/doc/type/hot_colormap.html index e54d187a..e6e91faa 100644 --- a/doc/type/hot_colormap.html +++ b/doc/type/hot_colormap.html @@ -74,7 +74,7 @@

    hot_colormap
  • 4 statements + title="

    0.4% of total for derived types.

    Including implementation: 168 statements, 1.0% of total for derived types.">4 statements
  • @@ -130,15 +130,23 @@

    Type-Bound Procedures

    @@ -165,6 +173,122 @@

    Type-Bound Procedures

    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +

    @@ -224,7 +348,123 @@

    - + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +522,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +640,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -516,7 +756,279 @@

    - + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +1166,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -805,7 +1317,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/latex_terminal.html b/doc/type/latex_terminal.html index 7899c57b..88a2ccd1 100644 --- a/doc/type/latex_terminal.html +++ b/doc/type/latex_terminal.html @@ -74,7 +74,7 @@

    latex_terminal
  • 5 statements + title="

    0.5% of total for derived types.

    Including implementation: 150 statements, 0.9% of total for derived types.">5 statements
  • @@ -130,20 +130,20 @@

    Type-Bound Procedures

    @@ -172,7 +172,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => fterm_get_command_string @@ -289,7 +289,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -347,7 +347,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -405,7 +405,7 @@

    - +

    procedure, public :: get_id_string => tex_get_term_string @@ -521,7 +521,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -763,7 +763,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -831,7 +831,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -967,7 +967,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1186,7 +1186,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/legend.html b/doc/type/legend.html index b4a9d2bd..33845bc8 100644 --- a/doc/type/legend.html +++ b/doc/type/legend.html @@ -74,7 +74,7 @@

    legend
  • 25 statements + title="

    2.4% of total for derived types.

    Including implementation: 141 statements, 0.8% of total for derived types.">25 statements
  • @@ -130,19 +130,19 @@

    Type-Bound Procedures

    @@ -171,7 +171,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => leg_get_command_txt @@ -229,7 +229,7 @@

    - +

    procedure, public :: get_draw_border => leg_get_box @@ -463,7 +463,7 @@

    - +

    procedure, public :: get_is_visible => leg_get_visible @@ -639,7 +639,7 @@

    - +

    procedure, public :: set_draw_border => leg_set_box @@ -914,7 +914,7 @@

    Arguments

    - +

    procedure, public :: set_is_visible => leg_set_visible @@ -1136,7 +1136,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/line_plot_data.html b/doc/type/line_plot_data.html index bdca8e5d..932daefe 100644 --- a/doc/type/line_plot_data.html +++ b/doc/type/line_plot_data.html @@ -74,7 +74,7 @@

    line_plot_data
  • 28 statements + title="

    2.6% of total for derived types.

    Including implementation: 234 statements, 1.4% of total for derived types.">28 statements
  • @@ -130,19 +130,19 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name get_color_index - get_command_string - get_data_string + get_command_string + get_data_string get_datablock_name get_draw_impulses get_draw_line get_draw_markers get_line_color - get_line_style - get_line_width + get_line_style + get_line_width get_marker_frequency get_marker_scaling get_marker_style @@ -153,8 +153,8 @@

    Type-Bound Procedures

    set_draw_line set_draw_markers set_line_color - set_line_style - set_line_width + set_line_style + set_line_width set_marker_frequency set_marker_scaling set_marker_style @@ -185,7 +185,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -241,7 +241,7 @@

    Arguments

    - +

    procedure(pd_clear_action), public, deferred :: clear_data @@ -406,7 +406,7 @@

    - +

    procedure, public :: get_command_string => lpd_get_cmd @@ -466,7 +466,7 @@

    - +

    procedure(pd_get_string_result), public, deferred :: get_data_string @@ -815,7 +815,7 @@

    - +

    procedure, public :: get_line_style => lpd_get_line_style @@ -890,7 +890,7 @@

    - +

    procedure, public :: get_line_width => lpd_get_line_width @@ -1630,7 +1630,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => lpd_set_line_style @@ -1715,7 +1715,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => lpd_set_line_width @@ -2111,7 +2111,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/multiplot.html b/doc/type/multiplot.html index 93cb101b..4c11eabb 100644 --- a/doc/type/multiplot.html +++ b/doc/type/multiplot.html @@ -74,7 +74,7 @@

    multiplot
  • 28 statements + title="

    4.6% of total for derived types.

    Including implementation: 448 statements, 2.7% of total for derived types.">49 statements
  • @@ -114,7 +114,7 @@

    Variables

  • @@ -152,24 +152,38 @@

    Type-Bound Procedures

    @@ -202,7 +216,7 @@

    Components

    - + class(terminal), public, @@ -256,7 +270,7 @@

    Arguments

    - + type(multiplot), intent(inout) @@ -285,7 +299,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: draw => mp_draw @@ -371,7 +385,7 @@

    Arguments

    - +

    procedure, public :: get => mp_get @@ -459,6 +473,65 @@

    + +

    + procedure, public :: + get_bottom_margin => mp_get_bottom_margin + +

    +
    +
      +
    • +

      + private pure function mp_get_bottom_margin(this) result(rst) +

      + +

      Gets the bottom margin. The value exists in the range [0, 1]. This +margin is a global margin for the multiplot.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(in) + + ::this +

      The multiplot object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The margin value.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -517,7 +590,7 @@

    - +

    procedure, public :: get_command_string => mp_get_command @@ -575,7 +648,7 @@

    - +

    procedure, public :: get_font_name => mp_get_font @@ -633,7 +706,7 @@

    - +

    procedure, public :: get_font_size => mp_get_font_size @@ -691,20 +764,21 @@

    - +

    procedure, public :: - get_plot_count => mp_get_count + get_horizontal_spacing => mp_get_horizontal_spacing

    • - private pure function mp_get_count(this) result(x) + private pure function mp_get_horizontal_spacing(this) result(rst)

      -

      Gets the total number of plots.

      +

      Gets the horizontal spacing between plots. The value must be +zero or positive.

      Arguments

      @@ -737,9 +811,9 @@

      Arguments

      Return Value - integer(kind=int32) + real(kind=real32)

      -

      The plot count.

      +

      The spacing value.

      @@ -749,20 +823,21 @@

      - +

      procedure, public :: - get_row_count => mp_get_rows + get_left_margin => mp_get_left_margin

      • - private pure function mp_get_rows(this) result(x) + private pure function mp_get_left_margin(this) result(rst)

        -

        Gets the number of rows of plots.

        +

        Gets the left margin. The value exists in the range [0, 1]. This +margin is a global margin for the multiplot.

        Arguments

      @@ -795,9 +870,9 @@

      Arguments

      Return Value - integer(kind=int32) + real(kind=real32)

      -

      The row count.

      +

      The margin value.

      @@ -807,20 +882,20 @@

      - +

      procedure, public :: - get_terminal => mp_get_term + get_plot_count => mp_get_count

      • - private function mp_get_term(this) result(x) + private pure function mp_get_count(this) result(x)

        -

        Gets the GNUPLOT terminal object.

        +

        Gets the total number of plots.

        Arguments

      @@ -853,9 +928,9 @@

      Arguments

      Return Value - class(terminal), pointer + integer(kind=int32)

      -

      A pointer to the terminal object.

      +

      The plot count.

      @@ -865,20 +940,21 @@

      - +

      procedure, public :: - get_title => mp_get_title + get_right_margin => mp_get_right_margin

      • - private function mp_get_title(this) result(x) + private pure function mp_get_right_margin(this) result(rst)

        -

        Gets the multiplot's title.

        +

        Gets the right margin. The value exists in the range [0, 1]. This +margin is a global margin for the multiplot.

        Arguments

      @@ -911,9 +987,9 @@

      Arguments

      Return Value - character(len=:), allocatable + real(kind=real32)

      -

      The title.

      +

      The margin value.

      @@ -923,20 +999,20 @@

      - +

      procedure, public :: - initialize => mp_init + get_row_count => mp_get_rows

      • - private subroutine mp_init(this, m, n, term, width, height, fname, err) + private pure function mp_get_rows(this) result(x)

        -

        Initializes the multiplot object.

        +

        Gets the number of rows of plots.

        Arguments

      @@ -954,7 +1030,7 @@

      Arguments

      class(multiplot), - + @@ -964,138 +1040,14 @@

      Arguments

      The multiplot object.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      intent(inout)intent(in)
      - - integer(kind=int32), - intent(in) - - ::m -

      The number of rows of plots.

      -
      - - integer(kind=int32), - intent(in) - - ::n -

      The number of columns of plots.

      -
      - - integer(kind=int32), - intent(in),optional - - ::term -

      An optional input that is used to define the terminal. The -default terminal is a WXT terminal. The acceptable inputs are:

      -
        -
      • -

        GNUPLOT_TERMINAL_PNG

        -
      • -
      • -

        GNUPLOT_TERMINAL_QT

        -
      • -
      • -

        GNUPLOT_TERMINAL_WIN32

        -
      • -
      • -

        GNUPLOT_TERMINAL_WXT

        -
      • -
      • -

        GNUPLOT_TERMINAL_LATEX

        -
      • -
      • -

        GNUPLOT_TERMINAL_SVG

        -
      • -
      • -

        GNUPLOT_TERMINAL_PDF

        -
      • -
      -
      - - integer(kind=int32), - intent(in),optional - - ::width -

      Optionally, the width of the plot window.

      -
      - - integer(kind=int32), - intent(in),optional - - ::height -

      Optionally, the height of the plot window.

      -
      - - character(len=*), - intent(in),optional - - ::fname -

      A filename to associate with terminals that print to file.

      -
      - - class(errors), - intent(inout),optional, - target - ::err -

      An error handling object.

      -
      +

      + Return Value + integer(kind=int32) +

      +

      The row count.

    @@ -1105,21 +1057,20 @@

    Arguments

    - +

    procedure, public :: - is_title_defined => mp_has_title + get_terminal => mp_get_term

    • - private pure function mp_has_title(this) result(x) + private function mp_get_term(this) result(x)

      -

      Gets a value determining if a title has been defined for the -multiplot object.

      +

      Gets the GNUPLOT terminal object.

      Arguments

      @@ -1152,10 +1103,9 @@

      Arguments

      Return Value - logical + class(terminal), pointer

      -

      Returns true if a title has been defined for this multiplot; -else, returns false.

      +

      A pointer to the terminal object.

      @@ -1165,20 +1115,498 @@

      - +

      procedure, public :: - save_file => mp_save + get_title => mp_get_title

      • - private subroutine mp_save(this, fname, err) + private function mp_get_title(this) result(x)

        -

        Saves a GNUPLOT command file.

        +

        Gets the multiplot's title.

        + +

        Arguments

        +

      + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(in) + + ::this +

      The multiplot object.

      +
      + +

      + Return Value + character(len=:), allocatable +

      +

      The title.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_top_margin => mp_get_top_margin + +

    +
    +
      +
    • +

      + private pure function mp_get_top_margin(this) result(rst) +

      + +

      Gets the top margin. The value exists in the range [0, 1]. This +margin is a global margin for the multiplot.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(in) + + ::this +

      The multiplot object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The margin value.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_use_auto_generated_margins => mp_get_use_auto_generated_margins + +

    +
    +
      +
    • +

      + private pure function mp_get_use_auto_generated_margins(this) result(rst) +

      + +

      Gets a value determining if the global margins should be +automatically calculated.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(in) + + ::this +

      The multiplot object.

      +
      + +

      + Return Value + logical +

      +

      True if the margins should be automatically calculated; else, +false to use manually defined margins.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_vertical_spacing => mp_get_vertical_spacing + +

    +
    +
      +
    • +

      + private pure function mp_get_vertical_spacing(this) result(rst) +

      + +

      Gets the vertical spacing between plots. The value must be +zero or positive.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(in) + + ::this +

      The multiplot object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The spacing value.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + initialize => mp_init + +

    +
    +
      +
    • +

      + private subroutine mp_init(this, m, n, term, width, height, fname, err) +

      + +

      Initializes the multiplot object.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(inout) + + ::this +

      The multiplot object.

      +
      + + integer(kind=int32), + intent(in) + + ::m +

      The number of rows of plots.

      +
      + + integer(kind=int32), + intent(in) + + ::n +

      The number of columns of plots.

      +
      + + integer(kind=int32), + intent(in),optional + + ::term +

      An optional input that is used to define the terminal. The +default terminal is a WXT terminal. The acceptable inputs are:

      +
        +
      • +

        GNUPLOT_TERMINAL_PNG

        +
      • +
      • +

        GNUPLOT_TERMINAL_QT

        +
      • +
      • +

        GNUPLOT_TERMINAL_WIN32

        +
      • +
      • +

        GNUPLOT_TERMINAL_WXT

        +
      • +
      • +

        GNUPLOT_TERMINAL_LATEX

        +
      • +
      • +

        GNUPLOT_TERMINAL_SVG

        +
      • +
      • +

        GNUPLOT_TERMINAL_PDF

        +
      • +
      +
      + + integer(kind=int32), + intent(in),optional + + ::width +

      Optionally, the width of the plot window.

      +
      + + integer(kind=int32), + intent(in),optional + + ::height +

      Optionally, the height of the plot window.

      +
      + + character(len=*), + intent(in),optional + + ::fname +

      A filename to associate with terminals that print to file.

      +
      + + class(errors), + intent(inout),optional, + target + ::err +

      An error handling object.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + is_title_defined => mp_has_title + +

    +
    +
      +
    • +

      + private pure function mp_has_title(this) result(x) +

      + +

      Gets a value determining if a title has been defined for the +multiplot object.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(in) + + ::this +

      The multiplot object.

      +
      + +

      + Return Value + logical +

      +

      Returns true if a title has been defined for this multiplot; +else, returns false.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + save_file => mp_save + +

    +
    +
      +
    • +

      + private subroutine mp_save(this, fname, err) +

      + +

      Saves a GNUPLOT command file.

      Arguments

      @@ -1209,21 +1637,21 @@

      Arguments

      - - - - - - - - + + + + + + + + @@ -1231,9 +1659,245 @@

      Arguments

      target - + + + + +
      - character(len=*), - intent(in) - - ::fname -

      The filename.

      -
      - + character(len=*), + intent(in) + + ::fname +

      The filename.

      +
      + class(errors), intent(inout), ::errerr +

      An error handling object.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set => mp_set + +

    +
    +
      +
    • +

      + private subroutine mp_set(this, i, j, x) +

      + +

      Replaces the specified plot.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(inout) + + ::this +

      The multiplot object.

      +
      + + integer(kind=int32), + intent(in) + + ::i +

      The row index of the plot to replace.

      +
      + + integer(kind=int32), + intent(in) + + ::j +

      The column index of the plot to replace.

      +
      + + class(plot), + intent(in) + + ::x +

      The new plot.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_bottom_margin => mp_set_bottom_margin + +

    +
    +
      +
    • +

      + private subroutine mp_set_bottom_margin(this, x) +

      + +

      Sets the bottom margin. The value exists in the range [0, 1]. This +margin is a global margin for the multiplot.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(inout) + + ::this +

      The multiplot object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The margin value. This value will be clamped to the range +[0, 1].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_font_name => mp_set_font + +

    +
    +
      +
    • +

      + private subroutine mp_set_font(this, x) +

      + +

      Sets the name of the font used for plot text.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + @@ -1248,20 +1912,20 @@

      Arguments

      - +

      procedure, public :: - set => mp_set + set_font_size => mp_set_font_size

      • - private subroutine mp_set(this, i, j, x) + private subroutine mp_set_font_size(this, x)

        -

        Replaces the specified plot.

        +

        Sets the size of the font used by the plot.

        Arguments

      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(inout) + + ::this +

      The multiplot object.

      +
      + + character(len=*), + intent(in) + + ::x -

      An error handling object.

      +

      The font name.

      @@ -1299,30 +1963,69 @@

      Arguments

      - + + +
      ::ix -

      The row index of the plot to replace.

      +

      The font size.

      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_horizontal_spacing => mp_set_horizontal_spacing + +

    +
    +
      +
    • +

      + private subroutine mp_set_horizontal_spacing(this, x) +

      + +

      Sets the horizontal spacing between plots. The value must be +zero or positive.

      + +

      Arguments

      + + + + + + + + + + - + - + @@ -1346,20 +2050,21 @@

      Arguments

      - +

      procedure, public :: - set_font_name => mp_set_font + set_left_margin => mp_set_left_margin

      • - private subroutine mp_set_font(this, x) + private subroutine mp_set_left_margin(this, x)

        -

        Sets the name of the font used for plot text.

        +

        Sets the left margin. The value exists in the range [0, 1]. This +margin is a global margin for the multiplot.

        Arguments

      TypeIntentOptional AttributesName
      - integer(kind=int32), + class(multiplot), intent(in)intent(inout) ::jthis -

      The column index of the plot to replace.

      +

      The multiplot object.

      - class(plot), + real(kind=real32), intent(in) @@ -1331,7 +2034,8 @@

      Arguments

      :: x -

      The new plot.

      +

      The spacing value. This value will be clamped to zero if +a negative value is supplied.

      @@ -1390,7 +2095,7 @@

      Arguments

      @@ -1414,20 +2120,21 @@

      Arguments

      - +

      procedure, public :: - set_font_size => mp_set_font_size + set_right_margin => mp_set_right_margin

      • - private subroutine mp_set_font_size(this, x) + private subroutine mp_set_right_margin(this, x)

        -

        Sets the size of the font used by the plot.

        +

        Sets the right margin. The value exists in the range [0, 1]. This +margin is a global margin for the multiplot.

        Arguments

      - character(len=*), + real(kind=real32), intent(in) @@ -1399,7 +2104,8 @@

      Arguments

      :: x -

      The font name.

      +

      The margin value. This value will be clamped to the range +[0, 1].

      @@ -1458,7 +2165,7 @@

      Arguments

      @@ -1482,7 +2190,7 @@

      Arguments

      - +

      procedure, public :: set_title => mp_set_title @@ -1550,7 +2258,217 @@

      Arguments

      - + +

      + procedure, public :: + set_top_margin => mp_set_top_margin + +

      +
      +
        +
      • +

        + private subroutine mp_set_top_margin(this, x) +

        + +

        Sets the top margin. The value exists in the range [0, 1]. This +margin is a global margin for the multiplot.

        + +

        Arguments

        +
      - integer(kind=int32), + real(kind=real32), intent(in) @@ -1467,7 +2174,8 @@

      Arguments

      :: x -

      The font size.

      +

      The margin value. This value will be clamped to the range +[0, 1].

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(inout) + + ::this +

      The multiplot object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The margin value. This value will be clamped to the range +[0, 1].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_use_auto_generated_margins => mp_set_use_auto_generated_margins + +

    +
    +
      +
    • +

      + private subroutine mp_set_use_auto_generated_margins(this, x) +

      + +

      Sets a value determining if the global margins should be +automatically calculated.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(inout) + + ::this +

      The multiplot object.

      +
      + + logical, + intent(in) + + ::x +

      True if the margins should be automatically calculated; else, +false to use manually defined margins.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_vertical_spacing => mp_set_vertical_spacing + +

    +
    +
      +
    • +

      + private subroutine mp_set_vertical_spacing(this, x) +

      + +

      Sets the vertical spacing between plots. The value must be +zero or positive.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(multiplot), + intent(inout) + + ::this +

      The multiplot object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The spacing value. This value will be clamped to zero if +a negative value is supplied.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_window_size => mp_set_window_size @@ -1648,7 +2566,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/name_value_pair.html b/doc/type/name_value_pair.html index 8bd1afbb..f99eec4f 100644 --- a/doc/type/name_value_pair.html +++ b/doc/type/name_value_pair.html @@ -114,7 +114,7 @@

    Variables

    @@ -164,7 +164,7 @@

    Components

    - + character(len=:), public, @@ -221,7 +221,7 @@

    Components

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/parula_colormap.html b/doc/type/parula_colormap.html index a2238b3f..265e5887 100644 --- a/doc/type/parula_colormap.html +++ b/doc/type/parula_colormap.html @@ -74,7 +74,7 @@

    parula_colormap
  • 4 statements + title="

    0.4% of total for derived types.

    Including implementation: 178 statements, 1.1% of total for derived types.">4 statements
  • @@ -130,15 +130,23 @@

    Type-Bound Procedures

    @@ -165,6 +173,122 @@

    Type-Bound Procedures

    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +

    @@ -224,7 +348,123 @@

    - + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +522,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +640,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -516,7 +756,279 @@

    - + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +1166,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -805,7 +1317,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/pdf_terminal.html b/doc/type/pdf_terminal.html index 0cd83247..be7bac12 100644 --- a/doc/type/pdf_terminal.html +++ b/doc/type/pdf_terminal.html @@ -74,7 +74,7 @@

    pdf_terminal
  • 9 statements + title="

    0.8% of total for derived types.

    Including implementation: 168 statements, 1.0% of total for derived types.">9 statements
  • @@ -130,22 +130,22 @@

    Type-Bound Procedures

    @@ -174,7 +174,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => pdf_get_command_string @@ -291,7 +291,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -349,7 +349,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -581,7 +581,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -823,7 +823,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -891,7 +891,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -1095,7 +1095,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1314,7 +1314,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot.html b/doc/type/plot.html index d988d228..be02e4be 100644 --- a/doc/type/plot.html +++ b/doc/type/plot.html @@ -74,7 +74,7 @@

    plot
  • 127 statements + title="

    12.0% of total for derived types.

    Including implementation: 795 statements, 4.7% of total for derived types.">127 statements
  • @@ -130,38 +130,38 @@

    Type-Bound Procedures

    - clear_all + clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count get_axis_equal get_border_line_width - get_bottom_margin - get_colormap - get_command_string - get_count - get_draw_border - get_font_name - get_font_size - get_label + get_bottom_margin + get_colormap + get_command_string + get_count + get_draw_border + get_font_name + get_font_size + get_label get_label_count - get_left_margin + get_left_margin get_legend - get_right_margin + get_right_margin get_show_colorbar get_show_gridlines get_show_x_major_grid get_show_x_minor_grid get_show_y_major_grid get_show_y_minor_grid - get_terminal + get_terminal get_tics_inward - get_title - get_top_margin + get_title + get_top_margin get_x_major_grid_color get_x_major_grid_line_style get_x_major_grid_line_width @@ -174,28 +174,28 @@

    Type-Bound Procedures

    get_y_minor_grid_color get_y_minor_grid_line_style get_y_minor_grid_line_width - initialize - is_title_defined + initialize + is_title_defined plt_push_data pop pop_arrow pop_label - push + push push_arrow push_label - save_file - set + save_file + set set_arrow set_axis_equal set_border_line_width - set_bottom_margin - set_colormap - set_draw_border - set_font_name - set_font_size - set_label - set_left_margin - set_right_margin + set_bottom_margin + set_colormap + set_draw_border + set_font_name + set_font_size + set_label + set_left_margin + set_right_margin set_show_colorbar set_show_gridlines set_show_x_major_grid @@ -203,9 +203,9 @@

    Type-Bound Procedures

    set_show_y_major_grid set_show_y_minor_grid set_tics_inward - set_title - set_top_margin - set_window_size + set_title + set_top_margin + set_window_size set_x_major_grid_color set_x_major_grid_line_style set_x_major_grid_line_width @@ -245,7 +245,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => plt_clear_all @@ -404,7 +404,7 @@

    Arguments

    - +

    procedure, public :: draw => plt_draw @@ -545,7 +545,7 @@

    Arguments

    - +

    procedure, public :: get => plt_get @@ -865,7 +865,7 @@

    - +

    procedure, public :: get_bottom_margin => plt_get_bottom_margin @@ -924,7 +924,7 @@

    - +

    procedure, public :: get_colormap => plt_get_colormap @@ -983,7 +983,7 @@

    - +

    procedure, public :: get_command_string => plt_get_cmd @@ -1041,7 +1041,7 @@

    - +

    procedure, public :: get_count => plt_get_count @@ -1099,7 +1099,7 @@

    - +

    procedure, public :: get_draw_border => plt_get_draw_border @@ -1157,7 +1157,7 @@

    - +

    procedure, public :: get_font_name => plt_get_font @@ -1215,7 +1215,7 @@

    - +

    procedure, public :: get_font_size => plt_get_font_size @@ -1273,7 +1273,7 @@

    - +

    procedure, public :: get_label => plt_get_label @@ -1404,7 +1404,7 @@

    - +

    procedure, public :: get_left_margin => plt_get_left_margin @@ -1521,7 +1521,7 @@

    - +

    procedure, public :: get_right_margin => plt_get_right_margin @@ -1928,7 +1928,7 @@

    - +

    procedure, public :: get_terminal => plt_get_term @@ -2045,7 +2045,7 @@

    - +

    procedure, public :: get_title => plt_get_title @@ -2103,7 +2103,7 @@

    - +

    procedure, public :: get_top_margin => plt_get_top_margin @@ -2926,7 +2926,7 @@

    - +

    procedure, public :: initialize => plt_init @@ -3050,7 +3050,7 @@

    Arguments

    - +

    procedure, public :: is_title_defined => plt_has_title @@ -3352,7 +3352,7 @@

    Arguments

    - +

    generic, public :: push => plt_push_data @@ -3601,7 +3601,7 @@

    Arguments

    - +

    procedure, public :: save_file => plt_save @@ -3684,7 +3684,7 @@

    Arguments

    - +

    procedure, public :: set => plt_set @@ -3986,7 +3986,7 @@

    Arguments

    - +

    procedure, public :: set_bottom_margin => plt_set_bottom_margin @@ -4056,7 +4056,7 @@

    Arguments

    - +

    procedure, public :: set_colormap => plt_set_colormap @@ -4141,7 +4141,7 @@

    Arguments

    - +

    procedure, public :: set_draw_border => plt_set_draw_border @@ -4209,7 +4209,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => plt_set_font @@ -4277,7 +4277,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => plt_set_font_size @@ -4348,7 +4348,7 @@

    Arguments

    - +

    procedure, public :: set_label => plt_set_label @@ -4431,7 +4431,7 @@

    Arguments

    - +

    procedure, public :: set_left_margin => plt_set_left_margin @@ -4501,7 +4501,7 @@

    Arguments

    - +

    procedure, public :: set_right_margin => plt_set_right_margin @@ -5048,7 +5048,7 @@

    Arguments

    - +

    procedure, public :: set_title => plt_set_title @@ -5116,7 +5116,7 @@

    Arguments

    - +

    procedure, public :: set_top_margin => plt_set_top_margin @@ -5186,7 +5186,7 @@

    Arguments

    - +

    procedure, public :: set_window_size => plt_set_window_size @@ -6236,7 +6236,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_2d.html b/doc/type/plot_2d.html index f4ba3c90..8e344568 100644 --- a/doc/type/plot_2d.html +++ b/doc/type/plot_2d.html @@ -74,7 +74,7 @@

    plot_2d
  • 32 statements + title="

    3.0% of total for derived types.

    Including implementation: 966 statements, 5.8% of total for derived types.">32 statements
  • @@ -141,30 +141,30 @@

    Type-Bound Procedures

    - clear_all + clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count get_axis_equal get_border_line_width - get_bottom_margin - get_colormap - get_command_string - get_count - get_draw_border - get_font_name - get_font_size + get_bottom_margin + get_colormap + get_command_string + get_count + get_draw_border + get_font_name + get_font_size get_jitter_overlap get_jitter_spread - get_label + get_label get_label_count - get_left_margin + get_left_margin get_legend - get_right_margin + get_right_margin get_show_colorbar get_show_gridlines get_show_x_major_grid @@ -172,13 +172,13 @@

    Type-Bound Procedures

    get_show_y_major_grid get_show_y_minor_grid get_square_axes - get_terminal + get_terminal get_tics_inward - get_title - get_top_margin + get_title + get_top_margin get_use_jittering get_use_y2_axis - get_x_axis + get_x_axis get_x_major_grid_color get_x_major_grid_line_style get_x_major_grid_line_width @@ -186,38 +186,38 @@

    Type-Bound Procedures

    get_x_minor_grid_line_style get_x_minor_grid_line_width get_y2_axis - get_y_axis + get_y_axis get_y_major_grid_color get_y_major_grid_line_style get_y_major_grid_line_width get_y_minor_grid_color get_y_minor_grid_line_style get_y_minor_grid_line_width - initialize - is_title_defined + initialize + is_title_defined p2d_push_data plt_push_data pop pop_arrow pop_label - push + push push_arrow push_label - save_file - set + save_file + set set_arrow set_axis_equal set_border_line_width - set_bottom_margin - set_colormap - set_draw_border - set_font_name - set_font_size + set_bottom_margin + set_colormap + set_draw_border + set_font_name + set_font_size set_jitter_overlap set_jitter_spread - set_label - set_left_margin - set_right_margin + set_label + set_left_margin + set_right_margin set_show_colorbar set_show_gridlines set_show_x_major_grid @@ -226,12 +226,12 @@

    Type-Bound Procedures

    set_show_y_minor_grid set_square_axes set_tics_inward - set_title - set_top_margin + set_title + set_top_margin set_use_jittering set_use_y2_axis - set_window_size - set_x_axis_title + set_window_size + set_x_axis_title set_x_major_grid_color set_x_major_grid_line_style set_x_major_grid_line_width @@ -239,7 +239,7 @@

    Type-Bound Procedures

    set_x_minor_grid_line_style set_x_minor_grid_line_width set_y2_axis_title - set_y_axis_title + set_y_axis_title set_y_major_grid_color set_y_major_grid_line_style set_y_major_grid_line_width @@ -299,7 +299,7 @@

    Arguments

    - + type(plot_2d), intent(inout) @@ -328,7 +328,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => plt_clear_all @@ -487,7 +487,7 @@

    Arguments

    - +

    procedure, public :: draw => plt_draw @@ -628,7 +628,7 @@

    Arguments

    - +

    procedure, public :: get => plt_get @@ -948,7 +948,7 @@

    - +

    procedure, public :: get_bottom_margin => plt_get_bottom_margin @@ -1007,7 +1007,7 @@

    - +

    procedure, public :: get_colormap => plt_get_colormap @@ -1066,7 +1066,7 @@

    - +

    procedure, public :: get_command_string => p2d_get_cmd @@ -1124,7 +1124,7 @@

    - +

    procedure, public :: get_count => plt_get_count @@ -1182,7 +1182,7 @@

    - +

    procedure, public :: get_draw_border => plt_get_draw_border @@ -1240,7 +1240,7 @@

    - +

    procedure, public :: get_font_name => plt_get_font @@ -1298,7 +1298,7 @@

    - +

    procedure, public :: get_font_size => plt_get_font_size @@ -1472,7 +1472,7 @@

    - +

    procedure, public :: get_label => plt_get_label @@ -1603,7 +1603,7 @@

    - +

    procedure, public :: get_left_margin => plt_get_left_margin @@ -1720,7 +1720,7 @@

    - +

    procedure, public :: get_right_margin => plt_get_right_margin @@ -2187,7 +2187,7 @@

    - +

    procedure, public :: get_terminal => plt_get_term @@ -2304,7 +2304,7 @@

    - +

    procedure, public :: get_title => plt_get_title @@ -2362,7 +2362,7 @@

    - +

    procedure, public :: get_top_margin => plt_get_top_margin @@ -2538,7 +2538,7 @@

    - +

    procedure, public :: get_x_axis => p2d_get_x_axis @@ -3036,7 +3036,7 @@

    - +

    procedure, public :: get_y_axis => p2d_get_y_axis @@ -3476,7 +3476,7 @@

    - +

    procedure, public :: initialize => p2d_init @@ -3600,7 +3600,7 @@

    Arguments

    - +

    procedure, public :: is_title_defined => plt_has_title @@ -4062,7 +4062,7 @@

    Arguments

    - +

    generic, public :: push => plt_push_data, p2d_push_data @@ -4456,7 +4456,7 @@

    Arguments

    - +

    procedure, public :: save_file => plt_save @@ -4539,7 +4539,7 @@

    Arguments

    - +

    procedure, public :: set => plt_set @@ -4841,7 +4841,7 @@

    Arguments

    - +

    procedure, public :: set_bottom_margin => plt_set_bottom_margin @@ -4911,7 +4911,7 @@

    Arguments

    - +

    procedure, public :: set_colormap => plt_set_colormap @@ -4996,7 +4996,7 @@

    Arguments

    - +

    procedure, public :: set_draw_border => plt_set_draw_border @@ -5064,7 +5064,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => plt_set_font @@ -5132,7 +5132,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => plt_set_font_size @@ -5339,7 +5339,7 @@

    Arguments

    - +

    procedure, public :: set_label => plt_set_label @@ -5422,7 +5422,7 @@

    Arguments

    - +

    procedure, public :: set_left_margin => plt_set_left_margin @@ -5492,7 +5492,7 @@

    Arguments

    - +

    procedure, public :: set_right_margin => plt_set_right_margin @@ -6109,7 +6109,7 @@

    Arguments

    - +

    procedure, public :: set_title => plt_set_title @@ -6177,7 +6177,7 @@

    Arguments

    - +

    procedure, public :: set_top_margin => plt_set_top_margin @@ -6384,7 +6384,7 @@

    Arguments

    - +

    procedure, public :: set_window_size => plt_set_window_size @@ -6467,7 +6467,7 @@

    Arguments

    - +

    procedure, public :: set_x_axis_title => p2d_set_x_axis_title @@ -7045,7 +7045,7 @@

    Arguments

    - +

    procedure, public :: set_y_axis_title => p2d_set_y_axis_title @@ -7638,7 +7638,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_3d.html b/doc/type/plot_3d.html index 63ea78b7..20c69965 100644 --- a/doc/type/plot_3d.html +++ b/doc/type/plot_3d.html @@ -74,7 +74,7 @@

    plot_3d
  • 56 statements + title="

    5.3% of total for derived types.

    Including implementation: 1102 statements, 6.6% of total for derived types.">56 statements
  • @@ -141,31 +141,31 @@

    Type-Bound Procedures

    - clear_all + clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count get_axis_equal get_azimuth get_border_line_width - get_bottom_margin - get_colormap - get_command_string + get_bottom_margin + get_colormap + get_command_string get_coordinate_system - get_count - get_draw_border + get_count + get_draw_border get_elevation - get_font_name - get_font_size - get_label + get_font_name + get_font_size + get_label get_label_count - get_left_margin + get_left_margin get_legend - get_right_margin + get_right_margin get_show_colorbar get_show_gridlines get_show_x_major_grid @@ -174,19 +174,19 @@

    Type-Bound Procedures

    get_show_y_minor_grid get_show_z_major_grid get_show_z_minor_grid - get_terminal + get_terminal get_tics_inward - get_title - get_top_margin + get_title + get_top_margin get_use_map_view - get_x_axis + get_x_axis get_x_major_grid_color get_x_major_grid_line_style get_x_major_grid_line_width get_x_minor_grid_color get_x_minor_grid_line_style get_x_minor_grid_line_width - get_y_axis + get_y_axis get_y_major_grid_color get_y_major_grid_line_style get_y_major_grid_line_width @@ -201,32 +201,32 @@

    Type-Bound Procedures

    get_z_minor_grid_color get_z_minor_grid_line_style get_z_minor_grid_line_width - initialize - is_title_defined + initialize + is_title_defined p3d_push_data plt_push_data pop pop_arrow pop_label - push + push push_arrow push_label - save_file - set + save_file + set set_arrow set_axis_equal set_azimuth set_border_line_width - set_bottom_margin - set_colormap + set_bottom_margin + set_colormap set_coordinate_system - set_draw_border + set_draw_border set_elevation - set_font_name - set_font_size - set_label - set_left_margin - set_right_margin + set_font_name + set_font_size + set_label + set_left_margin + set_right_margin set_show_colorbar set_show_gridlines set_show_x_major_grid @@ -236,18 +236,18 @@

    Type-Bound Procedures

    set_show_z_major_grid set_show_z_minor_grid set_tics_inward - set_title - set_top_margin + set_title + set_top_margin set_use_map_view - set_window_size - set_x_axis_title + set_window_size + set_x_axis_title set_x_major_grid_color set_x_major_grid_line_style set_x_major_grid_line_width set_x_minor_grid_color set_x_minor_grid_line_style set_x_minor_grid_line_width - set_y_axis_title + set_y_axis_title set_y_major_grid_color set_y_major_grid_line_style set_y_major_grid_line_width @@ -315,7 +315,7 @@

    Arguments

    - + type(plot_3d), intent(inout) @@ -344,7 +344,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => plt_clear_all @@ -503,7 +503,7 @@

    Arguments

    - +

    procedure, public :: draw => plt_draw @@ -644,7 +644,7 @@

    Arguments

    - +

    procedure, public :: get => plt_get @@ -1022,7 +1022,7 @@

    - +

    procedure, public :: get_bottom_margin => plt_get_bottom_margin @@ -1081,7 +1081,7 @@

    - +

    procedure, public :: get_colormap => plt_get_colormap @@ -1140,7 +1140,7 @@

    - +

    procedure, public :: get_command_string => p3d_get_cmd @@ -1267,7 +1267,7 @@

    - +

    procedure, public :: get_count => plt_get_count @@ -1325,7 +1325,7 @@

    - +

    procedure, public :: get_draw_border => plt_get_draw_border @@ -1441,7 +1441,7 @@

    - +

    procedure, public :: get_font_name => plt_get_font @@ -1499,7 +1499,7 @@

    - +

    procedure, public :: get_font_size => plt_get_font_size @@ -1557,7 +1557,7 @@

    - +

    procedure, public :: get_label => plt_get_label @@ -1688,7 +1688,7 @@

    - +

    procedure, public :: get_left_margin => plt_get_left_margin @@ -1805,7 +1805,7 @@

    - +

    procedure, public :: get_right_margin => plt_get_right_margin @@ -2328,7 +2328,7 @@

    - +

    procedure, public :: get_terminal => plt_get_term @@ -2445,7 +2445,7 @@

    - +

    procedure, public :: get_title => plt_get_title @@ -2503,7 +2503,7 @@

    - +

    procedure, public :: get_top_margin => plt_get_top_margin @@ -2621,7 +2621,7 @@

    - +

    procedure, public :: get_x_axis => p3d_get_x_axis @@ -3061,7 +3061,7 @@

    - +

    procedure, public :: get_y_axis => p3d_get_y_axis @@ -4001,7 +4001,7 @@

    - +

    procedure, public :: initialize => p3d_init @@ -4125,7 +4125,7 @@

    Arguments

    - +

    procedure, public :: is_title_defined => plt_has_title @@ -4602,7 +4602,7 @@

    Arguments

    - +

    generic, public :: push => plt_push_data, p3d_push_data @@ -5011,7 +5011,7 @@

    Arguments

    - +

    procedure, public :: save_file => plt_save @@ -5094,7 +5094,7 @@

    Arguments

    - +

    procedure, public :: set => plt_set @@ -5464,7 +5464,7 @@

    Arguments

    - +

    procedure, public :: set_bottom_margin => plt_set_bottom_margin @@ -5534,7 +5534,7 @@

    Arguments

    - +

    procedure, public :: set_colormap => plt_set_colormap @@ -5698,7 +5698,7 @@

    Arguments

    - +

    procedure, public :: set_draw_border => plt_set_draw_border @@ -5834,7 +5834,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => plt_set_font @@ -5902,7 +5902,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => plt_set_font_size @@ -5973,7 +5973,7 @@

    Arguments

    - +

    procedure, public :: set_label => plt_set_label @@ -6056,7 +6056,7 @@

    Arguments

    - +

    procedure, public :: set_left_margin => plt_set_left_margin @@ -6126,7 +6126,7 @@

    Arguments

    - +

    procedure, public :: set_right_margin => plt_set_right_margin @@ -6809,7 +6809,7 @@

    Arguments

    - +

    procedure, public :: set_title => plt_set_title @@ -6877,7 +6877,7 @@

    Arguments

    - +

    procedure, public :: set_top_margin => plt_set_top_margin @@ -7016,7 +7016,7 @@

    Arguments

    - +

    procedure, public :: set_window_size => plt_set_window_size @@ -7099,7 +7099,7 @@

    Arguments

    - +

    procedure, public :: set_x_axis_title => p3d_set_x_axis_title @@ -7609,7 +7609,7 @@

    Arguments

    - +

    procedure, public :: set_y_axis_title => p3d_set_y_axis_title @@ -8782,7 +8782,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_arrow.html b/doc/type/plot_arrow.html index d9458b6a..fcd749e6 100644 --- a/doc/type/plot_arrow.html +++ b/doc/type/plot_arrow.html @@ -74,7 +74,7 @@

    plot_arrow
  • 49 statements + title="

    4.6% of total for derived types.

    Including implementation: 285 statements, 1.7% of total for derived types.">49 statements
  • @@ -131,16 +131,16 @@

    Type-Bound Procedures

    get_color - get_command_string + get_command_string get_head_angle get_head_back_angle get_head_fill get_head_location get_head_size get_head_type - get_is_visible - get_line_style - get_line_width + get_is_visible + get_line_style + get_line_width get_move_to_front get_tail_location get_use_default_size @@ -151,9 +151,9 @@

    Type-Bound Procedures

    set_head_location set_head_size set_head_type - set_is_visible - set_line_style - set_line_width + set_is_visible + set_line_style + set_line_width set_move_to_front set_tail_location set_use_default_size @@ -241,7 +241,7 @@

    - +

    procedure, public :: get_command_string => par_get_cmd @@ -649,7 +649,7 @@

    - +

    procedure, public :: get_is_visible => par_get_is_visible @@ -707,7 +707,7 @@

    - +

    procedure, public :: get_line_style => par_get_line_style @@ -765,7 +765,7 @@

    - +

    procedure, public :: get_line_width => par_get_line_width @@ -1657,7 +1657,7 @@

    Arguments

    - +

    procedure, public :: set_is_visible => par_set_is_visible @@ -1725,7 +1725,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => par_set_line_style @@ -1811,7 +1811,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => par_set_line_width @@ -2250,7 +2250,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_axis.html b/doc/type/plot_axis.html index 5a97b591..7f3bb732 100644 --- a/doc/type/plot_axis.html +++ b/doc/type/plot_axis.html @@ -74,7 +74,7 @@

    plot_axis
  • 64 statements + title="

    6.6% of total for derived types.

    Including implementation: 434 statements, 2.6% of total for derived types.">70 statements
  • @@ -130,8 +130,9 @@

    Type-Bound Procedures

    - get_autoscale - get_command_string + get_auto_calculate_title_angle + get_autoscale + get_command_string get_id_string get_is_log_scaled get_limits @@ -145,6 +146,7 @@

    Type-Bound Procedures

    get_tic_label_x_offset get_tic_label_y_offset get_title + get_title_angle get_title_x_offset get_title_y_offset get_use_default_tic_label_format @@ -152,7 +154,8 @@

    Type-Bound Procedures

    get_zero_axis get_zero_axis_line_width is_title_defined - set_autoscale + set_auto_calculate_title_angle + set_autoscale set_is_log_scaled set_limits set_manual_tic_labels @@ -165,6 +168,7 @@

    Type-Bound Procedures

    set_tic_label_x_offset set_tic_label_y_offset set_title + set_title_angle set_title_x_offset set_title_y_offset set_use_default_tic_label_format @@ -197,7 +201,67 @@

    Type-Bound Procedures

    - + +

    + procedure, public :: + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_auto_calc_title_angle(this) result(x) +

      + +

      Gets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + logical +

      +

      True if GNUPLOT should automatically calculate the title +angle; else, false.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_autoscale => pa_get_autoscale @@ -257,7 +321,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -1098,6 +1162,64 @@

    + +

    + procedure, public :: + get_title_angle => pa_get_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_title_angle(this) result(x) +

      + +

      Gets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The axis title angle, in degrees.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -1508,7 +1630,77 @@

    - + +

    + procedure, public :: + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_auto_calc_title_angle(this, x) +

      + +

      Sets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + logical, + intent(in) + + ::x +

      Set to true to automatically calculate the title angle; +else, set to false.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_autoscale => pa_set_autoscale @@ -2430,6 +2622,74 @@

    Arguments

    +

  • + +

    + +
    +
    +
    +
    + +

    + procedure, public :: + set_title_angle => pa_set_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_title_angle(this, x) +

      + +

      Sets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The axis title angle, in degrees.

      +
      + +
    @@ -2865,7 +3125,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_bar.html b/doc/type/plot_bar.html index ae3be876..a3a72425 100644 --- a/doc/type/plot_bar.html +++ b/doc/type/plot_bar.html @@ -74,7 +74,7 @@

    plot_bar
  • 13 statements + title="

    1.2% of total for derived types.

    Including implementation: 775 statements, 4.6% of total for derived types.">13 statements
  • @@ -130,31 +130,31 @@

    Type-Bound Procedures

    - clear_all + clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count get_axis_equal get_bar_width get_border_line_width - get_bottom_margin - get_colormap - get_command_string - get_count - get_draw_border - get_font_name - get_font_size + get_bottom_margin + get_colormap + get_command_string + get_count + get_draw_border + get_font_name + get_font_size get_jitter_overlap get_jitter_spread - get_label + get_label get_label_count - get_left_margin + get_left_margin get_legend - get_right_margin + get_right_margin get_show_colorbar get_show_gridlines get_show_x_major_grid @@ -164,13 +164,13 @@

    Type-Bound Procedures

    get_spacing get_square_axes get_stacked - get_terminal + get_terminal get_tics_inward - get_title - get_top_margin + get_title + get_top_margin get_use_jittering get_use_y2_axis - get_x_axis + get_x_axis get_x_major_grid_color get_x_major_grid_line_style get_x_major_grid_line_width @@ -178,15 +178,15 @@

    Type-Bound Procedures

    get_x_minor_grid_line_style get_x_minor_grid_line_width get_y2_axis - get_y_axis + get_y_axis get_y_major_grid_color get_y_major_grid_line_style get_y_major_grid_line_width get_y_minor_grid_color get_y_minor_grid_line_style get_y_minor_grid_line_width - initialize - is_title_defined + initialize + is_title_defined p2d_push_data plt_push_data pop @@ -195,22 +195,22 @@

    Type-Bound Procedures

    push push_arrow push_label - save_file - set + save_file + set set_arrow set_axis_equal set_bar_width set_border_line_width - set_bottom_margin - set_colormap - set_draw_border - set_font_name - set_font_size + set_bottom_margin + set_colormap + set_draw_border + set_font_name + set_font_size set_jitter_overlap set_jitter_spread - set_label - set_left_margin - set_right_margin + set_label + set_left_margin + set_right_margin set_show_colorbar set_show_gridlines set_show_x_major_grid @@ -221,12 +221,12 @@

    Type-Bound Procedures

    set_square_axes set_stacked set_tics_inward - set_title - set_top_margin + set_title + set_top_margin set_use_jittering set_use_y2_axis - set_window_size - set_x_axis_title + set_window_size + set_x_axis_title set_x_major_grid_color set_x_major_grid_line_style set_x_major_grid_line_width @@ -234,7 +234,7 @@

    Type-Bound Procedures

    set_x_minor_grid_line_style set_x_minor_grid_line_width set_y2_axis_title - set_y_axis_title + set_y_axis_title set_y_major_grid_color set_y_major_grid_line_style set_y_major_grid_line_width @@ -268,7 +268,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => plt_clear_all @@ -427,7 +427,7 @@

    Arguments

    - +

    procedure, public :: draw => plt_draw @@ -568,7 +568,7 @@

    Arguments

    - +

    procedure, public :: get => plt_get @@ -946,7 +946,7 @@

    - +

    procedure, public :: get_bottom_margin => plt_get_bottom_margin @@ -1005,7 +1005,7 @@

    - +

    procedure, public :: get_colormap => plt_get_colormap @@ -1064,7 +1064,7 @@

    - +

    procedure, public :: get_command_string => pb_get_cmd @@ -1122,7 +1122,7 @@

    - +

    procedure, public :: get_count => plt_get_count @@ -1180,7 +1180,7 @@

    - +

    procedure, public :: get_draw_border => plt_get_draw_border @@ -1238,7 +1238,7 @@

    - +

    procedure, public :: get_font_name => plt_get_font @@ -1296,7 +1296,7 @@

    - +

    procedure, public :: get_font_size => plt_get_font_size @@ -1470,7 +1470,7 @@

    - +

    procedure, public :: get_label => plt_get_label @@ -1601,7 +1601,7 @@

    - +

    procedure, public :: get_left_margin => plt_get_left_margin @@ -1718,7 +1718,7 @@

    - +

    procedure, public :: get_right_margin => plt_get_right_margin @@ -2302,7 +2302,7 @@

    - +

    procedure, public :: get_terminal => plt_get_term @@ -2419,7 +2419,7 @@

    - +

    procedure, public :: get_title => plt_get_title @@ -2477,7 +2477,7 @@

    - +

    procedure, public :: get_top_margin => plt_get_top_margin @@ -2653,7 +2653,7 @@

    - +

    procedure, public :: get_x_axis => p2d_get_x_axis @@ -3151,7 +3151,7 @@

    - +

    procedure, public :: get_y_axis => p2d_get_y_axis @@ -3591,7 +3591,7 @@

    - +

    procedure, public :: initialize => p2d_init @@ -3715,7 +3715,7 @@

    Arguments

    - +

    procedure, public :: is_title_defined => plt_has_title @@ -4571,7 +4571,7 @@

    Arguments

    - +

    procedure, public :: save_file => plt_save @@ -4654,7 +4654,7 @@

    Arguments

    - +

    procedure, public :: set => plt_set @@ -5025,7 +5025,7 @@

    Arguments

    - +

    procedure, public :: set_bottom_margin => plt_set_bottom_margin @@ -5095,7 +5095,7 @@

    Arguments

    - +

    procedure, public :: set_colormap => plt_set_colormap @@ -5180,7 +5180,7 @@

    Arguments

    - +

    procedure, public :: set_draw_border => plt_set_draw_border @@ -5248,7 +5248,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => plt_set_font @@ -5316,7 +5316,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => plt_set_font_size @@ -5523,7 +5523,7 @@

    Arguments

    - +

    procedure, public :: set_label => plt_set_label @@ -5606,7 +5606,7 @@

    Arguments

    - +

    procedure, public :: set_left_margin => plt_set_left_margin @@ -5676,7 +5676,7 @@

    Arguments

    - +

    procedure, public :: set_right_margin => plt_set_right_margin @@ -6430,7 +6430,7 @@

    Arguments

    - +

    procedure, public :: set_title => plt_set_title @@ -6498,7 +6498,7 @@

    Arguments

    - +

    procedure, public :: set_top_margin => plt_set_top_margin @@ -6705,7 +6705,7 @@

    Arguments

    - +

    procedure, public :: set_window_size => plt_set_window_size @@ -6788,7 +6788,7 @@

    Arguments

    - +

    procedure, public :: set_x_axis_title => p2d_set_x_axis_title @@ -7366,7 +7366,7 @@

    Arguments

    - +

    procedure, public :: set_y_axis_title => p2d_set_y_axis_title @@ -7959,7 +7959,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data.html b/doc/type/plot_data.html index e442ba32..4aecacfc 100644 --- a/doc/type/plot_data.html +++ b/doc/type/plot_data.html @@ -74,7 +74,7 @@

    plot_data
  • 14 statements + title="

    1.3% of total for derived types.

    Including implementation: 61 statements, 0.4% of total for derived types.">14 statements
  • @@ -130,11 +130,11 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name - get_command_string - get_data_string + get_command_string + get_data_string get_datablock_name get_name set_datablock_name @@ -165,7 +165,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -221,7 +221,7 @@

    Arguments

    - +

    procedure(pd_clear_action), public, deferred :: clear_data @@ -328,7 +328,7 @@

    Arguments

    - +

    procedure(get_string_result), public, deferred :: get_command_string @@ -386,7 +386,7 @@

    - +

    procedure(pd_get_string_result), public, deferred :: get_data_string @@ -713,7 +713,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_2d.html b/doc/type/plot_data_2d.html index d775c41c..162ffe8c 100644 --- a/doc/type/plot_data_2d.html +++ b/doc/type/plot_data_2d.html @@ -74,7 +74,7 @@

    plot_data_2d
  • 22 statements + title="

    2.1% of total for derived types.

    Including implementation: 574 statements, 3.4% of total for derived types.">22 statements
  • @@ -130,50 +130,50 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name - define_data + define_data get_axes_string - get_color_data + get_color_data get_color_index - get_command_string + get_command_string get_count - get_data_string + get_data_string get_datablock_name - get_draw_against_y2 + get_draw_against_y2 get_draw_impulses get_draw_line get_draw_markers get_fill_curve get_line_color - get_line_style - get_line_width + get_line_style + get_line_width get_marker_frequency get_marker_scaling get_marker_style get_name - get_point_size_data + get_point_size_data get_simplification_factor get_simplify_data get_use_data_dependent_colors get_use_variable_size_points get_x - get_x_data + get_x_data get_y - get_y_data + get_y_data pd2d_set_data_1 pd2d_set_data_2 set_color_index set_datablock_name - set_draw_against_y2 + set_draw_against_y2 set_draw_impulses set_draw_line set_draw_markers set_fill_curve set_line_color - set_line_style - set_line_width + set_line_style + set_line_width set_marker_frequency set_marker_scaling set_marker_style @@ -210,7 +210,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -266,7 +266,7 @@

    Arguments

    - +

    procedure, public :: clear_data => pd2d_clear_data @@ -373,7 +373,7 @@

    Arguments

    - +

    generic, public :: define_data => pd2d_set_data_1, pd2d_set_data_2 @@ -630,7 +630,7 @@

    - +

    procedure, public :: get_color_data => pd2d_get_c_array @@ -746,7 +746,7 @@

    - +

    procedure, public :: get_command_string => spd_get_cmd @@ -864,7 +864,7 @@

    - +

    procedure, public :: get_data_string => pd2d_get_data_cmd @@ -982,7 +982,7 @@

    - +

    procedure, public :: get_draw_against_y2 => pd2d_get_draw_against_y2 @@ -1332,7 +1332,7 @@

    - +

    procedure, public :: get_line_style => lpd_get_line_style @@ -1407,7 +1407,7 @@

    - +

    procedure, public :: get_line_width => lpd_get_line_width @@ -1738,7 +1738,7 @@

    - +

    procedure, public :: get_point_size_data => pd2d_get_ps_array @@ -2105,7 +2105,7 @@

    - +

    procedure, public :: get_x_data => pd2d_get_x_array @@ -2236,7 +2236,7 @@

    - +

    procedure, public :: get_y_data => pd2d_get_y_array @@ -2644,7 +2644,7 @@

    Arguments

    - +

    procedure, public :: set_draw_against_y2 => pd2d_set_draw_against_y2 @@ -3054,7 +3054,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => lpd_set_line_style @@ -3139,7 +3139,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => lpd_set_line_width @@ -3977,7 +3977,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_3d.html b/doc/type/plot_data_3d.html index 34c41763..b15a6ca9 100644 --- a/doc/type/plot_data_3d.html +++ b/doc/type/plot_data_3d.html @@ -74,7 +74,7 @@

    plot_data_3d
  • 20 statements + title="

    1.9% of total for derived types.

    Including implementation: 577 statements, 3.4% of total for derived types.">20 statements
  • @@ -130,37 +130,37 @@

    Type-Bound Procedures

    @@ -209,7 +209,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -265,7 +265,7 @@

    Arguments

    - +

    procedure, public :: clear_data => pd3d_clear_data @@ -372,7 +372,7 @@

    Arguments

    - +

    procedure, public :: define_data => pd3d_set_data_1 @@ -516,7 +516,7 @@

    Arguments

    - +

    procedure, public :: get_axes_string => pd3d_get_axes_cmd @@ -575,7 +575,7 @@

    - +

    procedure, public :: get_color_data => pd3d_get_c_array @@ -691,7 +691,7 @@

    - +

    procedure, public :: get_command_string => spd_get_cmd @@ -751,7 +751,7 @@

    - +

    procedure, public :: get_count => pd3d_get_data_count @@ -809,7 +809,7 @@

    - +

    procedure, public :: get_data_string => pd3d_get_data_cmd @@ -1216,7 +1216,7 @@

    - +

    procedure, public :: get_line_style => lpd_get_line_style @@ -1291,7 +1291,7 @@

    - +

    procedure, public :: get_line_width => lpd_get_line_width @@ -1622,7 +1622,7 @@

    - +

    procedure, public :: get_point_size_data => pd3d_get_c_array @@ -1916,7 +1916,7 @@

    - +

    procedure, public :: get_x => pd3d_get_x_data @@ -1989,7 +1989,7 @@

    - +

    procedure, public :: get_x_data => pd3d_get_x_array @@ -2047,7 +2047,7 @@

    - +

    procedure, public :: get_y => pd3d_get_y_data @@ -2120,7 +2120,7 @@

    - +

    procedure, public :: get_y_data => pd3d_get_y_array @@ -2786,7 +2786,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => lpd_set_line_style @@ -2871,7 +2871,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => lpd_set_line_width @@ -3528,7 +3528,7 @@

    Arguments

    - +

    procedure, public :: set_x => pd3d_set_x_data @@ -3611,7 +3611,7 @@

    Arguments

    - +

    procedure, public :: set_y => pd3d_set_y_data @@ -3792,7 +3792,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_bar.html b/doc/type/plot_data_bar.html index ea6a67f1..aa6a4102 100644 --- a/doc/type/plot_data_bar.html +++ b/doc/type/plot_data_bar.html @@ -74,7 +74,7 @@

    plot_data_bar
  • 47 statements + title="

    4.4% of total for derived types.

    Including implementation: 631 statements, 3.8% of total for derived types.">47 statements
  • @@ -130,29 +130,29 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name - define_data - get - get_axes_string + define_data + get + get_axes_string get_bar_color get_bar_per_label_count get_color_index - get_command_string - get_count + get_command_string + get_count get_data - get_data_string + get_data_string get_datablock_name - get_draw_against_y2 - get_is_filled - get_label + get_draw_against_y2 + get_is_filled + get_label get_line_color get_name get_series_name get_transparency get_use_labels - set + set set_bar_color set_color_index set_data_1 @@ -162,9 +162,9 @@

    Type-Bound Procedures

    set_data_5 set_data_6 set_datablock_name - set_draw_against_y2 - set_is_filled - set_label + set_draw_against_y2 + set_is_filled + set_label set_line_color set_name set_series_name @@ -196,7 +196,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -252,7 +252,7 @@

    Arguments

    - +

    procedure, public :: clear_data => pdb_clear_data @@ -359,7 +359,7 @@

    Arguments

    - +

    generic, public :: define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3, pdb_set_data_4, pdb_set_data_5, pdb_set_data_6 @@ -872,7 +872,7 @@

    Arguments

    - +

    procedure, public :: get => pdb_get_data @@ -960,7 +960,7 @@

    - +

    procedure, public :: get_axes_string => pdb_get_axes_cmd @@ -1210,7 +1210,7 @@

    - +

    procedure, public :: get_command_string => pdb_get_cmd @@ -1268,7 +1268,7 @@

    - +

    procedure, public :: get_count => pdb_get_count @@ -1399,7 +1399,7 @@

    - +

    procedure, public :: get_data_string => pdb_get_data_cmd @@ -1516,7 +1516,7 @@

    - +

    procedure, public :: get_draw_against_y2 => pdb_get_use_y2 @@ -1575,7 +1575,7 @@

    - +

    procedure, public :: get_is_filled => pdb_get_is_filled @@ -1633,7 +1633,7 @@

    - +

    procedure, public :: get_label => pdb_get_label @@ -2012,7 +2012,7 @@

    - +

    procedure, public :: set => pdb_set_data @@ -2918,7 +2918,7 @@

    Arguments

    - +

    procedure, public :: set_draw_against_y2 => pdb_set_use_y2 @@ -2987,7 +2987,7 @@

    Arguments

    - +

    procedure, public :: set_is_filled => pdb_set_is_filled @@ -3055,7 +3055,7 @@

    Arguments

    - +

    procedure, public :: set_label => pdb_set_label @@ -3509,7 +3509,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_box_whisker.html b/doc/type/plot_data_box_whisker.html index 731eeba3..92cd24ed 100644 --- a/doc/type/plot_data_box_whisker.html +++ b/doc/type/plot_data_box_whisker.html @@ -74,7 +74,7 @@

    plot_data_box_whisker
  • 41 statements + title="

    3.9% of total for derived types.

    Including implementation: 334 statements, 2.0% of total for derived types.">41 statements
  • @@ -130,20 +130,20 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name - define_data + define_data get_box_fill_opacity get_box_width get_color_index - get_command_string - get_data_string + get_command_string + get_data_string get_datablock_name - get_draw_against_y2 + get_draw_against_y2 get_fill_boxes get_line_color - get_line_width + get_line_width get_midline_color get_midline_width get_name @@ -153,10 +153,10 @@

    Type-Bound Procedures

    set_box_width set_color_index set_datablock_name - set_draw_against_y2 + set_draw_against_y2 set_fill_boxes set_line_color - set_line_width + set_line_width set_midline_color set_midline_width set_name @@ -188,7 +188,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -244,7 +244,7 @@

    Arguments

    - +

    procedure, public :: clear_data => pdbw_clear_data @@ -351,7 +351,7 @@

    Arguments

    - +

    procedure, public :: define_data => pdbw_define_data_xstring @@ -685,7 +685,7 @@

    - +

    procedure, public :: get_command_string => pdbw_get_cmd @@ -743,7 +743,7 @@

    - +

    procedure, public :: get_data_string => pdbw_get_data_cmd @@ -860,7 +860,7 @@

    - +

    procedure, public :: get_draw_against_y2 => pdbw_get_use_y2 @@ -1036,7 +1036,7 @@

    - +

    procedure, public :: get_line_width => pdbw_get_line_width @@ -1659,7 +1659,7 @@

    Arguments

    - +

    procedure, public :: set_draw_against_y2 => pdbw_set_use_y2 @@ -1865,7 +1865,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => pdbw_set_line_width @@ -2289,7 +2289,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_colored.html b/doc/type/plot_data_colored.html index 056bb52f..098acc4e 100644 --- a/doc/type/plot_data_colored.html +++ b/doc/type/plot_data_colored.html @@ -74,7 +74,7 @@

    plot_data_colored
  • 11 statements + title="

    1.0% of total for derived types.

    Including implementation: 83 statements, 0.5% of total for derived types.">11 statements
  • @@ -130,12 +130,12 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name get_color_index - get_command_string - get_data_string + get_command_string + get_data_string get_datablock_name get_line_color get_name @@ -169,7 +169,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -225,7 +225,7 @@

    Arguments

    - +

    procedure(pd_clear_action), public, deferred :: clear_data @@ -390,7 +390,7 @@

    - +

    procedure(get_string_result), public, deferred :: get_command_string @@ -448,7 +448,7 @@

    - +

    procedure(pd_get_string_result), public, deferred :: get_data_string @@ -969,7 +969,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_error_bars.html b/doc/type/plot_data_error_bars.html index fa385f82..d5541c64 100644 --- a/doc/type/plot_data_error_bars.html +++ b/doc/type/plot_data_error_bars.html @@ -74,7 +74,7 @@

    plot_data_error_bars
  • 29 statements + title="

    2.7% of total for derived types.

    Including implementation: 544 statements, 3.2% of total for derived types.">29 statements
  • @@ -130,19 +130,19 @@

    Type-Bound Procedures

    @@ -186,7 +186,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -242,7 +242,7 @@

    Arguments

    - +

    procedure, public :: clear_data => pde_clear_data @@ -1138,7 +1138,7 @@

    - +

    procedure, public :: get_command_string => pde_get_cmd @@ -1196,7 +1196,7 @@

    - +

    procedure, public :: get_count => pde_get_count @@ -1254,7 +1254,7 @@

    - +

    procedure, public :: get_data_string => pde_get_data_cmd @@ -1429,7 +1429,7 @@

    - +

    procedure, public :: get_line_width => pde_get_line_width @@ -2764,7 +2764,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => pde_set_line_width @@ -2986,7 +2986,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_function.html b/doc/type/plot_data_function.html index 33920278..e310c015 100644 --- a/doc/type/plot_data_function.html +++ b/doc/type/plot_data_function.html @@ -74,7 +74,7 @@

    plot_data_function
  • 20 statements + title="

    1.9% of total for derived types.

    Including implementation: 288 statements, 1.7% of total for derived types.">20 statements
  • @@ -130,13 +130,13 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name - define_data + define_data get_color_index - get_command_string - get_data_string + get_command_string + get_data_string get_datablock_name get_draw_impulses get_draw_line @@ -144,8 +144,8 @@

    Type-Bound Procedures

    get_function get_function_name get_line_color - get_line_style - get_line_width + get_line_style + get_line_width get_marker_frequency get_marker_scaling get_marker_style @@ -159,8 +159,8 @@

    Type-Bound Procedures

    set_draw_line set_draw_markers set_line_color - set_line_style - set_line_width + set_line_style + set_line_width set_marker_frequency set_marker_scaling set_marker_style @@ -194,7 +194,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -250,7 +250,7 @@

    Arguments

    - +

    procedure, public :: clear_data => pdf_clear_data @@ -357,7 +357,7 @@

    Arguments

    - +

    procedure, public :: define_data => pdf_define_data @@ -547,7 +547,7 @@

    - +

    procedure, public :: get_command_string => pdf_get_cmd @@ -605,7 +605,7 @@

    - +

    procedure, public :: get_data_string => pdf_get_data_cmd @@ -1070,7 +1070,7 @@

    - +

    procedure, public :: get_line_style => lpd_get_line_style @@ -1145,7 +1145,7 @@

    - +

    procedure, public :: get_line_width => lpd_get_line_width @@ -2059,7 +2059,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => lpd_set_line_style @@ -2144,7 +2144,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => lpd_set_line_width @@ -2747,7 +2747,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_histogram.html b/doc/type/plot_data_histogram.html index 51cb354e..736445a8 100644 --- a/doc/type/plot_data_histogram.html +++ b/doc/type/plot_data_histogram.html @@ -74,7 +74,7 @@

    plot_data_histogram
  • 23 statements + title="

    2.2% of total for derived types.

    Including implementation: 249 statements, 1.5% of total for derived types.">23 statements
  • @@ -130,19 +130,19 @@

    Type-Bound Procedures

    @@ -180,7 +180,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -236,7 +236,7 @@

    Arguments

    - +

    procedure, public :: clear_data => pdh_clear_data @@ -343,7 +343,7 @@

    Arguments

    - +

    procedure, public :: define_data => pdh_define_data @@ -426,7 +426,7 @@

    Arguments

    - +

    procedure, public :: get => pdh_get_bin_data @@ -524,7 +524,7 @@

    Arguments

    - +

    procedure, public :: get_axes_string => pdh_get_axes_cmd @@ -699,7 +699,7 @@

    - +

    procedure, public :: get_command_string => pdh_get_cmd @@ -757,7 +757,7 @@

    - +

    procedure, public :: get_data_string => pdh_get_data_cmd @@ -874,7 +874,7 @@

    - +

    procedure, public :: get_draw_against_y2 => pdh_get_use_y2 @@ -934,7 +934,7 @@

    - +

    procedure, public :: get_is_filled => pdh_get_is_filled @@ -1430,7 +1430,7 @@

    Arguments

    - +

    procedure, public :: set_draw_against_y2 => pdh_set_use_y2 @@ -1500,7 +1500,7 @@

    Arguments

    - +

    procedure, public :: set_is_filled => pdh_set_is_filled @@ -1720,7 +1720,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_data_tri_2d.html b/doc/type/plot_data_tri_2d.html index 318adb1a..a5fb1306 100644 --- a/doc/type/plot_data_tri_2d.html +++ b/doc/type/plot_data_tri_2d.html @@ -74,7 +74,7 @@

    plot_data_tri_2d
  • 16 statements + title="

    1.5% of total for derived types.

    Including implementation: 227 statements, 1.4% of total for derived types.">16 statements
  • @@ -130,23 +130,23 @@

    Type-Bound Procedures

    @@ -174,7 +174,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -230,7 +230,7 @@

    Arguments

    - +

    procedure, public :: clear_data => pdt2d_clear_data @@ -337,7 +337,7 @@

    Arguments

    - +

    procedure, public :: define_data => pdt2d_define_data @@ -463,7 +463,7 @@

    - +

    procedure, public :: get_command_string => pdt2d_get_cmd @@ -521,7 +521,7 @@

    - +

    procedure, public :: get_data_string => pdt2d_get_data_cmd @@ -696,7 +696,7 @@

    - +

    procedure, public :: get_line_style => pdt2d_get_line_style @@ -772,7 +772,7 @@

    - +

    procedure, public :: get_line_width => pdt2d_get_line_width @@ -1093,7 +1093,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => pdt2d_set_line_style @@ -1179,7 +1179,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => pdt2d_set_line_width @@ -1330,7 +1330,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_label.html b/doc/type/plot_label.html index 0cb818db..24138ebb 100644 --- a/doc/type/plot_label.html +++ b/doc/type/plot_label.html @@ -74,7 +74,7 @@

    plot_label
  • 16 statements + title="

    1.5% of total for derived types.

    Including implementation: 81 statements, 0.5% of total for derived types.">16 statements
  • @@ -131,12 +131,12 @@

    Type-Bound Procedures

    @@ -223,7 +223,7 @@

    - +

    procedure, public :: get_command_string => lbl_get_cmd @@ -281,7 +281,7 @@

    - +

    procedure, public :: get_is_visible => lbl_get_is_visible @@ -524,7 +524,7 @@

    Arguments

    - +

    procedure, public :: set_is_visible => lbl_set_is_visible @@ -744,7 +744,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_object.html b/doc/type/plot_object.html index 4002a05b..6026ee67 100644 --- a/doc/type/plot_object.html +++ b/doc/type/plot_object.html @@ -130,7 +130,7 @@

    Type-Bound Procedures

    @@ -157,7 +157,7 @@

    Type-Bound Procedures

    - +

    procedure(get_string_result), public, deferred :: get_command_string @@ -230,7 +230,7 @@

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/plot_polar.html b/doc/type/plot_polar.html index a8a40714..1302bca1 100644 --- a/doc/type/plot_polar.html +++ b/doc/type/plot_polar.html @@ -74,7 +74,7 @@

    plot_polar
  • 22 statements + title="

    2.1% of total for derived types.

    Including implementation: 797 statements, 4.7% of total for derived types.">22 statements
  • @@ -141,42 +141,42 @@

    Type-Bound Procedures

    - clear_all + clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count - get_autoscale + get_autoscale get_axis_equal get_border_line_width - get_bottom_margin - get_colormap - get_command_string - get_count - get_draw_border - get_font_name - get_font_size - get_label + get_bottom_margin + get_colormap + get_command_string + get_count + get_draw_border + get_font_name + get_font_size + get_label get_label_count - get_left_margin + get_left_margin get_legend get_radial_limits - get_right_margin + get_right_margin get_show_colorbar get_show_gridlines get_show_x_major_grid get_show_x_minor_grid get_show_y_major_grid get_show_y_minor_grid - get_terminal + get_terminal get_theta_direction get_theta_start_position get_tics_inward - get_title - get_top_margin + get_title + get_top_margin get_x_major_grid_color get_x_major_grid_line_style get_x_major_grid_line_width @@ -189,31 +189,31 @@

    Type-Bound Procedures

    get_y_minor_grid_color get_y_minor_grid_line_style get_y_minor_grid_line_width - initialize - is_title_defined + initialize + is_title_defined plr_push_data plt_push_data pop pop_arrow pop_label - push + push push_arrow push_label - save_file - set + save_file + set set_arrow - set_autoscale + set_autoscale set_axis_equal set_border_line_width - set_bottom_margin - set_colormap - set_draw_border - set_font_name - set_font_size - set_label - set_left_margin + set_bottom_margin + set_colormap + set_draw_border + set_font_name + set_font_size + set_label + set_left_margin set_radial_limits - set_right_margin + set_right_margin set_show_colorbar set_show_gridlines set_show_x_major_grid @@ -223,9 +223,9 @@

    Type-Bound Procedures

    set_theta_direction set_theta_start_position set_tics_inward - set_title - set_top_margin - set_window_size + set_title + set_top_margin + set_window_size set_x_major_grid_color set_x_major_grid_line_style set_x_major_grid_line_width @@ -291,7 +291,7 @@

    Arguments

    - + type(plot_polar), intent(inout) @@ -320,7 +320,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => plt_clear_all @@ -479,7 +479,7 @@

    Arguments

    - +

    procedure, public :: draw => plt_draw @@ -620,7 +620,7 @@

    Arguments

    - +

    procedure, public :: get => plt_get @@ -824,7 +824,7 @@

    - +

    procedure, public :: get_autoscale => plr_get_autoscale @@ -999,7 +999,7 @@

    - +

    procedure, public :: get_bottom_margin => plt_get_bottom_margin @@ -1058,7 +1058,7 @@

    - +

    procedure, public :: get_colormap => plt_get_colormap @@ -1117,7 +1117,7 @@

    - +

    procedure, public :: get_command_string => plr_get_cmd @@ -1175,7 +1175,7 @@

    - +

    procedure, public :: get_count => plt_get_count @@ -1233,7 +1233,7 @@

    - +

    procedure, public :: get_draw_border => plt_get_draw_border @@ -1291,7 +1291,7 @@

    - +

    procedure, public :: get_font_name => plt_get_font @@ -1349,7 +1349,7 @@

    - +

    procedure, public :: get_font_size => plt_get_font_size @@ -1407,7 +1407,7 @@

    - +

    procedure, public :: get_label => plt_get_label @@ -1538,7 +1538,7 @@

    - +

    procedure, public :: get_left_margin => plt_get_left_margin @@ -1714,7 +1714,7 @@

    - +

    procedure, public :: get_right_margin => plt_get_right_margin @@ -2121,7 +2121,7 @@

    - +

    procedure, public :: get_terminal => plt_get_term @@ -2376,7 +2376,7 @@

    - +

    procedure, public :: get_title => plt_get_title @@ -2434,7 +2434,7 @@

    - +

    procedure, public :: get_top_margin => plt_get_top_margin @@ -3257,7 +3257,7 @@

    - +

    procedure, public :: initialize => plr_init @@ -3381,7 +3381,7 @@

    Arguments

    - +

    procedure, public :: is_title_defined => plt_has_title @@ -3843,7 +3843,7 @@

    Arguments

    - +

    generic, public :: push => plt_push_data, plr_push_data @@ -4237,7 +4237,7 @@

    Arguments

    - +

    procedure, public :: save_file => plt_save @@ -4320,7 +4320,7 @@

    Arguments

    - +

    procedure, public :: set => plt_set @@ -4486,7 +4486,7 @@

    Arguments

    - +

    procedure, public :: set_autoscale => plr_set_autoscale @@ -4691,7 +4691,7 @@

    Arguments

    - +

    procedure, public :: set_bottom_margin => plt_set_bottom_margin @@ -4761,7 +4761,7 @@

    Arguments

    - +

    procedure, public :: set_colormap => plt_set_colormap @@ -4846,7 +4846,7 @@

    Arguments

    - +

    procedure, public :: set_draw_border => plt_set_draw_border @@ -4914,7 +4914,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => plt_set_font @@ -4982,7 +4982,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => plt_set_font_size @@ -5053,7 +5053,7 @@

    Arguments

    - +

    procedure, public :: set_label => plt_set_label @@ -5136,7 +5136,7 @@

    Arguments

    - +

    procedure, public :: set_left_margin => plt_set_left_margin @@ -5275,7 +5275,7 @@

    Arguments

    - +

    procedure, public :: set_right_margin => plt_set_right_margin @@ -5980,7 +5980,7 @@

    Arguments

    - +

    procedure, public :: set_title => plt_set_title @@ -6048,7 +6048,7 @@

    Arguments

    - +

    procedure, public :: set_top_margin => plt_set_top_margin @@ -6118,7 +6118,7 @@

    Arguments

    - +

    procedure, public :: set_window_size => plt_set_window_size @@ -7168,7 +7168,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/png_terminal.html b/doc/type/png_terminal.html index 4948c645..34a1c8fd 100644 --- a/doc/type/png_terminal.html +++ b/doc/type/png_terminal.html @@ -74,7 +74,7 @@

    png_terminal
  • 5 statements + title="

    0.5% of total for derived types.

    Including implementation: 150 statements, 0.9% of total for derived types.">5 statements
  • @@ -130,20 +130,20 @@

    Type-Bound Procedures

    @@ -172,7 +172,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => fterm_get_command_string @@ -289,7 +289,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -347,7 +347,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -405,7 +405,7 @@

    - +

    procedure, public :: get_id_string => png_get_term_string @@ -521,7 +521,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -763,7 +763,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -831,7 +831,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -967,7 +967,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1186,7 +1186,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/qt_terminal.html b/doc/type/qt_terminal.html index 166719e0..519fae48 100644 --- a/doc/type/qt_terminal.html +++ b/doc/type/qt_terminal.html @@ -130,18 +130,18 @@

    Type-Bound Procedures

    @@ -170,7 +170,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => term_get_command_string @@ -229,7 +229,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -287,7 +287,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -345,7 +345,7 @@

    - +

    procedure, public :: get_id_string => qt_get_term_string @@ -461,7 +461,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -635,7 +635,7 @@

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -703,7 +703,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -839,7 +839,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1058,7 +1058,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/rainbow_colormap.html b/doc/type/rainbow_colormap.html index 378e7710..cd188db4 100644 --- a/doc/type/rainbow_colormap.html +++ b/doc/type/rainbow_colormap.html @@ -74,7 +74,7 @@

    rainbow_colormap
  • 4 statements + title="

    0.4% of total for derived types.

    Including implementation: 168 statements, 1.0% of total for derived types.">4 statements
  • @@ -130,15 +130,23 @@

    Type-Bound Procedures

    @@ -165,6 +173,122 @@

    Type-Bound Procedures

    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +

    @@ -224,7 +348,123 @@

    - + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +522,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +640,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -516,7 +756,279 @@

    - + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +1166,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -805,7 +1317,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/scatter_plot_data.html b/doc/type/scatter_plot_data.html index c641d93b..699f106a 100644 --- a/doc/type/scatter_plot_data.html +++ b/doc/type/scatter_plot_data.html @@ -74,7 +74,7 @@

    scatter_plot_data
  • 25 statements + title="

    2.4% of total for derived types.

    Including implementation: 295 statements, 1.8% of total for derived types.">25 statements
  • @@ -130,22 +130,22 @@

    Type-Bound Procedures

  • @@ -201,7 +201,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -257,7 +257,7 @@

    Arguments

    - +

    procedure(pd_clear_action), public, deferred :: clear_data @@ -364,7 +364,7 @@

    Arguments

    - +

    procedure(spd_get_string_result), public, deferred :: get_axes_string @@ -480,7 +480,7 @@

    - +

    procedure, public :: get_command_string => spd_get_cmd @@ -540,7 +540,7 @@

    - +

    procedure(spd_get_int_value), public, deferred :: get_count @@ -598,7 +598,7 @@

    - +

    procedure(pd_get_string_result), public, deferred :: get_data_string @@ -1005,7 +1005,7 @@

    - +

    procedure, public :: get_line_style => lpd_get_line_style @@ -1080,7 +1080,7 @@

    - +

    procedure, public :: get_line_width => lpd_get_line_width @@ -1647,7 +1647,7 @@

    - +

    procedure(spd_get_value), public, deferred :: get_x @@ -1720,7 +1720,7 @@

    - +

    procedure(spd_get_value), public, deferred :: get_y @@ -2270,7 +2270,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => lpd_set_line_style @@ -2355,7 +2355,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => lpd_set_line_width @@ -3012,7 +3012,7 @@

    Arguments

    - +

    procedure(spd_set_value), public, deferred :: set_x @@ -3095,7 +3095,7 @@

    Arguments

    - +

    procedure(spd_set_value), public, deferred :: set_y @@ -3193,7 +3193,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/spectral_colormap.html b/doc/type/spectral_colormap.html new file mode 100644 index 00000000..feeeb9bf --- /dev/null +++ b/doc/type/spectral_colormap.html @@ -0,0 +1,1350 @@ + + + + + + + + + + + + + spectral_colormap – FPLOT + + + + + + + + + + + + + + +
    + +
    + +
    +
    +

    spectral_colormap + Derived Type + +

    +
    +
    +
    + +
    +
    + +
    +
    +
    + + +
    + +
    + + +
    +

    + type, public, extends(colormap) :: spectral_colormap

    +

    Defines the spectral colormap available at +https://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal.

    +
    + + + + +
    +

    Type-Bound Procedures

    +
    +
    +
    + +

    + procedure, public :: + get_axes_origin => cm_get_axes_origin + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_origin(this) result(rst) +

      + +

      Gets the relative x-y coordinates of the axes origin.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [x, y] coordinates, each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_axes_size => cm_get_axes_size + +

    +
    +
      +
    • +

      + private pure function cm_get_axes_size(this) result(rst) +

      + +

      Gets the relative width and height of the axes.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32), dimension(2) +

      +

      The [width, height], each in [0.0, 1.0].

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_color_string => spcm_get_clr + +

    +
    +
      +
    • +

      + private function spcm_get_clr(this) result(x) +

      + +

      Gets the GNUPLOT string defining the color distribution.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(spectral_colormap), + intent(in) + + ::this +

      The spectral_colormap object.

      +
      + +

      + Return Value + character(len=:), allocatable +

      +

      The command string.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_length => cm_get_colorbar_length + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_length(this) result(rst) +

      + +

      Gets the relative length of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The length in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_colorbar_thickness => cm_get_colorbar_thickness + +

    +
    +
      +
    • +

      + private pure function cm_get_colorbar_thickness(this) result(rst) +

      + +

      Gets the relative thickness of the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_command_string => cm_get_cmd + +

    +
    +
      +
    • +

      + private function cm_get_cmd(this) result(x) +

      + +

      Gets the GNUPLOT command string to represent this colormap object.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + character(len=:), allocatable +

      +

      The command string.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_draw_border => cm_get_draw_border + +

    +
    +
      +
    • +

      + private pure function cm_get_draw_border(this) result(rst) +

      + +

      Gets a logical value determining if the border should be drawn.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + logical +

      +

      Returns true if the border should be drawn; else, false.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_horizontal => cm_get_horizontal + +

    +
    +
      +
    • +

      + private pure function cm_get_horizontal(this) result(rst) +

      + +

      Gets a logical value determining if the colormap should be +drawn horizontally and below the plot.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + logical +

      +

      Returns true if the colormap should be drawn horizontally; +else, false.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_label => cm_get_label + +

    +
    +
      +
    • +

      + private pure function cm_get_label(this) result(rst) +

      + +

      Gets the label to associate with the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + character(len=:), allocatable +

      +

      The label.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + get_show_tics => cm_get_show_tics + +

    +
    +
      +
    • +

      + private pure function cm_get_show_tics(this) result(rst) +

      + +

      Gets a logical value determining if the tic marks should be drawn.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(in) + + ::this +

      The colormap object.

      +
      + +

      + Return Value + logical +

      +

      Returns true if the tic marks should be drawn; else, false.

      + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_origin => cm_set_axes_origin + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_origin(this, x) +

      + +

      Sets the axes origin coordinates, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [x, y] coordinates.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_axes_size => cm_set_axes_size + +

    +
    +
      +
    • +

      + private subroutine cm_set_axes_size(this, x) +

      + +

      Sets the axes width and height, each clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in), + dimension(2) + ::x +

      The requested [width, height].

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_length => cm_set_colorbar_length + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_length(this, x) +

      + +

      Sets the relative colorbar length, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested length; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_colorbar_thickness => cm_set_colorbar_thickness + +

    +
    +
      +
    • +

      + private subroutine cm_set_colorbar_thickness(this, x) +

      + +

      Sets the relative colorbar thickness, clamped to [0.0, 1.0].

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The requested thickness; 0 uses GNUPLOT's default.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_draw_border => cm_set_draw_border + +

    +
    +
      +
    • +

      + private subroutine cm_set_draw_border(this, x) +

      + +

      Sets a logical value determining if the border should be drawn.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + logical, + intent(in) + + ::x +

      Set to true if the border should be drawn; else, false.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_horizontal => cm_set_horizontal + +

    +
    +
      +
    • +

      + private subroutine cm_set_horizontal(this, x) +

      + +

      Sets a logical value determining if the colormap should be +drawn horizontally and below the plot.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + logical, + intent(in) + + ::x +

      Set to true if the colormap should be drawn horizontally; +else, false.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_label => cm_set_label + +

    +
    +
      +
    • +

      + private subroutine cm_set_label(this, x) +

      + +

      Sets the label to associate with the colorbar.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + character(len=*), + intent(in) + + ::x +

      The label.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    + +

    + procedure, public :: + set_show_tics => cm_set_show_tics + +

    +
    +
      +
    • +

      + private subroutine cm_set_show_tics(this, x) +

      + +

      Sets a logical value determining if the tic marks should be drawn.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(colormap), + intent(inout) + + ::this +

      The colormap object.

      +
      + + logical, + intent(in) + + ::x +

      Set to true if the tic marks should be drawn; else, false.

      +
      + + +
    • +
    +
    + +
    +
    + + +
    +
    + +
    +
    +
    +
    +
    +

    FPLOT was developed by Jason Christopherson
    © 2026 +

    +
    +
    +

    + Documentation generated by + FORD + on 2026-10-01 05:57

    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/type/surface_plot.html b/doc/type/surface_plot.html index 9dea6a7c..b7245eb1 100644 --- a/doc/type/surface_plot.html +++ b/doc/type/surface_plot.html @@ -74,7 +74,7 @@

    surface_plot
  • 28 statements + title="

    2.6% of total for derived types.

    Including implementation: 935 statements, 5.6% of total for derived types.">28 statements
  • @@ -130,33 +130,33 @@

    Type-Bound Procedures

    - clear_all + clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_allow_smoothing get_arrow get_arrow_count get_axis_equal get_azimuth get_border_line_width - get_bottom_margin - get_colormap - get_command_string + get_bottom_margin + get_colormap + get_command_string get_coordinate_system - get_count - get_draw_border + get_count + get_draw_border get_elevation - get_font_name - get_font_size - get_label + get_font_name + get_font_size + get_label get_label_count - get_left_margin + get_left_margin get_legend get_light_intensity - get_right_margin + get_right_margin get_show_colorbar get_show_contours get_show_gridlines @@ -168,21 +168,21 @@

    Type-Bound Procedures

    get_show_z_major_grid get_show_z_minor_grid get_specular_intensity - get_terminal + get_terminal get_tics_inward - get_title - get_top_margin + get_title + get_top_margin get_transparency get_use_lighting get_use_map_view - get_x_axis + get_x_axis get_x_major_grid_color get_x_major_grid_line_style get_x_major_grid_line_width get_x_minor_grid_color get_x_minor_grid_line_style get_x_minor_grid_line_width - get_y_axis + get_y_axis get_y_major_grid_color get_y_major_grid_line_style get_y_major_grid_line_width @@ -197,34 +197,34 @@

    Type-Bound Procedures

    get_z_minor_grid_color get_z_minor_grid_line_style get_z_minor_grid_line_width - initialize - is_title_defined + initialize + is_title_defined p3d_push_data plt_push_data pop pop_arrow pop_label - push + push push_arrow push_label - save_file - set + save_file + set set_allow_smoothing set_arrow set_axis_equal set_azimuth set_border_line_width - set_bottom_margin - set_colormap + set_bottom_margin + set_colormap set_coordinate_system - set_draw_border + set_draw_border set_elevation - set_font_name - set_font_size - set_label - set_left_margin + set_font_name + set_font_size + set_label + set_left_margin set_light_intensity - set_right_margin + set_right_margin set_show_colorbar set_show_contours set_show_gridlines @@ -237,20 +237,20 @@

    Type-Bound Procedures

    set_show_z_minor_grid set_specular_intensity set_tics_inward - set_title - set_top_margin + set_title + set_top_margin set_transparency set_use_lighting set_use_map_view - set_window_size - set_x_axis_title + set_window_size + set_x_axis_title set_x_major_grid_color set_x_major_grid_line_style set_x_major_grid_line_width set_x_minor_grid_color set_x_minor_grid_line_style set_x_minor_grid_line_width - set_y_axis_title + set_y_axis_title set_y_major_grid_color set_y_major_grid_line_style set_y_major_grid_line_width @@ -293,7 +293,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => plt_clear_all @@ -452,7 +452,7 @@

    Arguments

    - +

    procedure, public :: draw => plt_draw @@ -593,7 +593,7 @@

    Arguments

    - +

    procedure, public :: get => plt_get @@ -1030,7 +1030,7 @@

    - +

    procedure, public :: get_bottom_margin => plt_get_bottom_margin @@ -1089,7 +1089,7 @@

    - +

    procedure, public :: get_colormap => plt_get_colormap @@ -1148,7 +1148,7 @@

    - +

    procedure, public :: get_command_string => surf_get_cmd @@ -1276,7 +1276,7 @@

    - +

    procedure, public :: get_count => plt_get_count @@ -1334,7 +1334,7 @@

    - +

    procedure, public :: get_draw_border => plt_get_draw_border @@ -1450,7 +1450,7 @@

    - +

    procedure, public :: get_font_name => plt_get_font @@ -1508,7 +1508,7 @@

    - +

    procedure, public :: get_font_size => plt_get_font_size @@ -1566,7 +1566,7 @@

    - +

    procedure, public :: get_label => plt_get_label @@ -1697,7 +1697,7 @@

    - +

    procedure, public :: get_left_margin => plt_get_left_margin @@ -1873,7 +1873,7 @@

    - +

    procedure, public :: get_right_margin => plt_get_right_margin @@ -2573,7 +2573,7 @@

    - +

    procedure, public :: get_terminal => plt_get_term @@ -2690,7 +2690,7 @@

    - +

    procedure, public :: get_title => plt_get_title @@ -2748,7 +2748,7 @@

    - +

    procedure, public :: get_top_margin => plt_get_top_margin @@ -2984,7 +2984,7 @@

    - +

    procedure, public :: get_x_axis => p3d_get_x_axis @@ -3424,7 +3424,7 @@

    - +

    procedure, public :: get_y_axis => p3d_get_y_axis @@ -4364,7 +4364,7 @@

    - +

    procedure, public :: initialize => surf_init @@ -4488,7 +4488,7 @@

    Arguments

    - +

    procedure, public :: is_title_defined => plt_has_title @@ -4965,7 +4965,7 @@

    Arguments

    - +

    generic, public :: push => plt_push_data, p3d_push_data, surf_push_data @@ -5457,7 +5457,7 @@

    Arguments

    - +

    procedure, public :: save_file => plt_save @@ -5540,7 +5540,7 @@

    Arguments

    - +

    procedure, public :: set => plt_set @@ -5979,7 +5979,7 @@

    Arguments

    - +

    procedure, public :: set_bottom_margin => plt_set_bottom_margin @@ -6049,7 +6049,7 @@

    Arguments

    - +

    procedure, public :: set_colormap => plt_set_colormap @@ -6213,7 +6213,7 @@

    Arguments

    - +

    procedure, public :: set_draw_border => plt_set_draw_border @@ -6349,7 +6349,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => plt_set_font @@ -6417,7 +6417,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => plt_set_font_size @@ -6488,7 +6488,7 @@

    Arguments

    - +

    procedure, public :: set_label => plt_set_label @@ -6571,7 +6571,7 @@

    Arguments

    - +

    procedure, public :: set_left_margin => plt_set_left_margin @@ -6711,7 +6711,7 @@

    Arguments

    - +

    procedure, public :: set_right_margin => plt_set_right_margin @@ -7602,7 +7602,7 @@

    Arguments

    - +

    procedure, public :: set_title => plt_set_title @@ -7670,7 +7670,7 @@

    Arguments

    - +

    procedure, public :: set_top_margin => plt_set_top_margin @@ -7949,7 +7949,7 @@

    Arguments

    - +

    procedure, public :: set_window_size => plt_set_window_size @@ -8032,7 +8032,7 @@

    Arguments

    - +

    procedure, public :: set_x_axis_title => p3d_set_x_axis_title @@ -8542,7 +8542,7 @@

    Arguments

    - +

    procedure, public :: set_y_axis_title => p3d_set_y_axis_title @@ -9813,7 +9813,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/surface_plot_data.html b/doc/type/surface_plot_data.html index c81c784a..3e59db8a 100644 --- a/doc/type/surface_plot_data.html +++ b/doc/type/surface_plot_data.html @@ -74,7 +74,7 @@

    surface_plot_data
  • 20 statements + title="

    1.9% of total for derived types.

    Including implementation: 245 statements, 1.5% of total for derived types.">20 statements
  • @@ -130,24 +130,24 @@

    Type-Bound Procedures

    @@ -175,7 +175,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -231,7 +231,7 @@

    Arguments

    - +

    procedure, public :: clear_data => surfd_clear_data @@ -338,7 +338,7 @@

    Arguments

    - +

    procedure, public :: define_data => surfd_set_data_1 @@ -451,7 +451,7 @@

    Arguments

    - +

    procedure, public :: get_command_string => surfd_get_cmd @@ -510,7 +510,7 @@

    - +

    procedure, public :: get_data_string => surfd_get_data_cmd @@ -759,7 +759,7 @@

    - +

    procedure, public :: get_use_wireframe => surfd_get_wireframe @@ -818,7 +818,7 @@

    - +

    procedure, public :: get_x => surfd_get_x @@ -906,7 +906,7 @@

    - +

    procedure, public :: get_y => surfd_get_y @@ -1219,7 +1219,7 @@

    Arguments

    - +

    procedure, public :: set_use_wireframe => surfd_set_wireframe @@ -1288,7 +1288,7 @@

    Arguments

    - +

    procedure, public :: set_x => surfd_set_x @@ -1386,7 +1386,7 @@

    Arguments

    - +

    procedure, public :: set_y => surfd_set_y @@ -1597,7 +1597,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/svg_terminal.html b/doc/type/svg_terminal.html index 19bbc377..a73a2068 100644 --- a/doc/type/svg_terminal.html +++ b/doc/type/svg_terminal.html @@ -74,7 +74,7 @@

    svg_terminal
  • 5 statements + title="

    0.5% of total for derived types.

    Including implementation: 150 statements, 0.9% of total for derived types.">5 statements
  • @@ -130,20 +130,20 @@

    Type-Bound Procedures

    @@ -172,7 +172,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => fterm_get_command_string @@ -289,7 +289,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -347,7 +347,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -405,7 +405,7 @@

    - +

    procedure, public :: get_id_string => svg_get_term_string @@ -521,7 +521,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -763,7 +763,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -831,7 +831,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -967,7 +967,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1186,7 +1186,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/terminal.html b/doc/type/terminal.html index f9fb656b..0538b781 100644 --- a/doc/type/terminal.html +++ b/doc/type/terminal.html @@ -74,7 +74,7 @@

    terminal
  • 25 statements + title="

    2.4% of total for derived types.

    Including implementation: 144 statements, 0.9% of total for derived types.">25 statements
  • @@ -130,18 +130,18 @@

    Type-Bound Procedures

    @@ -170,7 +170,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => term_get_command_string @@ -229,7 +229,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -287,7 +287,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -345,7 +345,7 @@

    - +

    procedure(term_get_string_result), public, deferred :: get_id_string @@ -461,7 +461,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -635,7 +635,7 @@

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -703,7 +703,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -839,7 +839,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1058,7 +1058,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/tri_surface_plot_data.html b/doc/type/tri_surface_plot_data.html index e1aaf419..b0b3b6fd 100644 --- a/doc/type/tri_surface_plot_data.html +++ b/doc/type/tri_surface_plot_data.html @@ -74,7 +74,7 @@

    tri_surface_plot_data
  • 14 statements + title="

    1.3% of total for derived types.

    Including implementation: 182 statements, 1.1% of total for derived types.">14 statements
  • @@ -130,18 +130,18 @@

    Type-Bound Procedures

  • @@ -169,7 +169,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -225,7 +225,7 @@

    Arguments

    - +

    procedure, public :: clear_data => tspd_clear_data @@ -332,7 +332,7 @@

    Arguments

    - +

    procedure, public :: define_data => tspd_define_data @@ -400,7 +400,7 @@

    Arguments

    - +

    procedure, public :: get_command_string => tspd_get_cmd @@ -458,7 +458,7 @@

    - +

    procedure, public :: get_data_string => tspd_get_data_cmd @@ -633,7 +633,7 @@

    - +

    procedure, public :: get_use_wireframe => tspd_get_wireframe @@ -829,7 +829,7 @@

    Arguments

    - +

    procedure, public :: set_use_wireframe => tspd_set_wireframe @@ -913,7 +913,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/vector_field_plot_data.html b/doc/type/vector_field_plot_data.html index c46e2f59..cacc8382 100644 --- a/doc/type/vector_field_plot_data.html +++ b/doc/type/vector_field_plot_data.html @@ -74,7 +74,7 @@

    vector_field_plot_data
  • 15 statements + title="

    1.4% of total for derived types.

    Including implementation: 269 statements, 1.6% of total for derived types.">15 statements
  • @@ -130,14 +130,14 @@

    Type-Bound Procedures

    - clear_all - clear_data + clear_all + clear_data create_unique_datablock_name - define_data + define_data get_arrow_size get_color_index - get_command_string - get_data_string + get_command_string + get_data_string get_datablock_name get_fill_arrow get_line_color @@ -175,7 +175,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: clear_all => pd_clear @@ -231,7 +231,7 @@

    Arguments

    - +

    procedure, public :: clear_data => vfpd_clear_data @@ -338,7 +338,7 @@

    Arguments

    - +

    procedure, public :: define_data => vfpd_define_data @@ -600,7 +600,7 @@

    - +

    procedure, public :: get_command_string => vfpd_get_cmd @@ -659,7 +659,7 @@

    - +

    procedure, public :: get_data_string => vfpd_get_data_cmd @@ -1435,7 +1435,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/windows_terminal.html b/doc/type/windows_terminal.html index f0b4b12b..747a7110 100644 --- a/doc/type/windows_terminal.html +++ b/doc/type/windows_terminal.html @@ -130,18 +130,18 @@

    Type-Bound Procedures

    @@ -170,7 +170,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => term_get_command_string @@ -229,7 +229,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -287,7 +287,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -461,7 +461,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -635,7 +635,7 @@

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -703,7 +703,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -839,7 +839,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1058,7 +1058,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/wxt_terminal.html b/doc/type/wxt_terminal.html index ba0b0a8d..43f0415a 100644 --- a/doc/type/wxt_terminal.html +++ b/doc/type/wxt_terminal.html @@ -130,18 +130,18 @@

    Type-Bound Procedures

    @@ -170,7 +170,7 @@

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => term_get_command_string @@ -229,7 +229,7 @@

    - +

    procedure, public :: get_font_name => term_get_font_name @@ -287,7 +287,7 @@

    - +

    procedure, public :: get_font_size => term_get_font_size @@ -345,7 +345,7 @@

    - +

    procedure, public :: get_id_string => wxt_get_term_string @@ -461,7 +461,7 @@

    - +

    procedure, public :: get_title => term_get_title @@ -635,7 +635,7 @@

    - +

    procedure, public :: set_font_name => term_set_font_name @@ -703,7 +703,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => term_set_font_size @@ -839,7 +839,7 @@

    Arguments

    - +

    procedure, public :: set_title => term_set_title @@ -1058,7 +1058,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/x_axis.html b/doc/type/x_axis.html index 740dddfd..232866ea 100644 --- a/doc/type/x_axis.html +++ b/doc/type/x_axis.html @@ -74,7 +74,7 @@

    x_axis
  • 5 statements + title="

    0.5% of total for derived types.

    Including implementation: 374 statements, 2.2% of total for derived types.">5 statements
  • @@ -130,8 +130,9 @@

    Type-Bound Procedures

    - get_autoscale - get_command_string + get_auto_calculate_title_angle + get_autoscale + get_command_string get_id_string get_is_log_scaled get_limits @@ -145,6 +146,7 @@

    Type-Bound Procedures

    get_tic_label_x_offset get_tic_label_y_offset get_title + get_title_angle get_title_x_offset get_title_y_offset get_use_default_tic_label_format @@ -152,7 +154,8 @@

    Type-Bound Procedures

    get_zero_axis get_zero_axis_line_width is_title_defined - set_autoscale + set_auto_calculate_title_angle + set_autoscale set_is_log_scaled set_limits set_manual_tic_labels @@ -165,6 +168,7 @@

    Type-Bound Procedures

    set_tic_label_x_offset set_tic_label_y_offset set_title + set_title_angle set_title_x_offset set_title_y_offset set_use_default_tic_label_format @@ -197,7 +201,67 @@

    Type-Bound Procedures

    - + +

    + procedure, public :: + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_auto_calc_title_angle(this) result(x) +

      + +

      Gets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + logical +

      +

      True if GNUPLOT should automatically calculate the title +angle; else, false.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_autoscale => pa_get_autoscale @@ -257,7 +321,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -1098,6 +1162,64 @@

    + +

    + procedure, public :: + get_title_angle => pa_get_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_title_angle(this) result(x) +

      + +

      Gets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The axis title angle, in degrees.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -1508,7 +1630,77 @@

    - + +

    + procedure, public :: + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_auto_calc_title_angle(this, x) +

      + +

      Sets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + logical, + intent(in) + + ::x +

      Set to true to automatically calculate the title angle; +else, set to false.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_autoscale => pa_set_autoscale @@ -2430,6 +2622,74 @@

    Arguments

    +

  • + +

    + +
    +
    +
    +
    + +

    + procedure, public :: + set_title_angle => pa_set_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_title_angle(this, x) +

      + +

      Sets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The axis title angle, in degrees.

      +
      + +
    @@ -2865,7 +3125,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/y2_axis.html b/doc/type/y2_axis.html index 05e1ebfb..77eb19c0 100644 --- a/doc/type/y2_axis.html +++ b/doc/type/y2_axis.html @@ -74,7 +74,7 @@

    y2_axis
  • 5 statements + title="

    0.5% of total for derived types.

    Including implementation: 374 statements, 2.2% of total for derived types.">5 statements
  • @@ -130,8 +130,9 @@

    Type-Bound Procedures

    - get_autoscale - get_command_string + get_auto_calculate_title_angle + get_autoscale + get_command_string get_id_string get_is_log_scaled get_limits @@ -145,6 +146,7 @@

    Type-Bound Procedures

    get_tic_label_x_offset get_tic_label_y_offset get_title + get_title_angle get_title_x_offset get_title_y_offset get_use_default_tic_label_format @@ -152,7 +154,8 @@

    Type-Bound Procedures

    get_zero_axis get_zero_axis_line_width is_title_defined - set_autoscale + set_auto_calculate_title_angle + set_autoscale set_is_log_scaled set_limits set_manual_tic_labels @@ -165,6 +168,7 @@

    Type-Bound Procedures

    set_tic_label_x_offset set_tic_label_y_offset set_title + set_title_angle set_title_x_offset set_title_y_offset set_use_default_tic_label_format @@ -197,7 +201,67 @@

    Type-Bound Procedures

    - + +

    + procedure, public :: + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_auto_calc_title_angle(this) result(x) +

      + +

      Gets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + logical +

      +

      True if GNUPLOT should automatically calculate the title +angle; else, false.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_autoscale => pa_get_autoscale @@ -257,7 +321,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -1098,6 +1162,64 @@

    + +

    + procedure, public :: + get_title_angle => pa_get_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_title_angle(this) result(x) +

      + +

      Gets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The axis title angle, in degrees.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -1508,7 +1630,77 @@

    - + +

    + procedure, public :: + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_auto_calc_title_angle(this, x) +

      + +

      Sets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + logical, + intent(in) + + ::x +

      Set to true to automatically calculate the title angle; +else, set to false.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_autoscale => pa_set_autoscale @@ -2430,6 +2622,74 @@

    Arguments

    +

  • + +

    + +
    +
    +
    +
    + +

    + procedure, public :: + set_title_angle => pa_set_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_title_angle(this, x) +

      + +

      Sets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The axis title angle, in degrees.

      +
      + +
    @@ -2865,7 +3125,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/y_axis.html b/doc/type/y_axis.html index adc678a6..868ac29b 100644 --- a/doc/type/y_axis.html +++ b/doc/type/y_axis.html @@ -74,7 +74,7 @@

    y_axis
  • 5 statements + title="

    0.5% of total for derived types.

    Including implementation: 374 statements, 2.2% of total for derived types.">5 statements
  • @@ -130,8 +130,9 @@

    Type-Bound Procedures

    - get_autoscale - get_command_string + get_auto_calculate_title_angle + get_autoscale + get_command_string get_id_string get_is_log_scaled get_limits @@ -145,6 +146,7 @@

    Type-Bound Procedures

    get_tic_label_x_offset get_tic_label_y_offset get_title + get_title_angle get_title_x_offset get_title_y_offset get_use_default_tic_label_format @@ -152,7 +154,8 @@

    Type-Bound Procedures

    get_zero_axis get_zero_axis_line_width is_title_defined - set_autoscale + set_auto_calculate_title_angle + set_autoscale set_is_log_scaled set_limits set_manual_tic_labels @@ -165,6 +168,7 @@

    Type-Bound Procedures

    set_tic_label_x_offset set_tic_label_y_offset set_title + set_title_angle set_title_x_offset set_title_y_offset set_use_default_tic_label_format @@ -197,7 +201,67 @@

    Type-Bound Procedures

    - + +

    + procedure, public :: + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_auto_calc_title_angle(this) result(x) +

      + +

      Gets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + logical +

      +

      True if GNUPLOT should automatically calculate the title +angle; else, false.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_autoscale => pa_get_autoscale @@ -257,7 +321,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -1098,6 +1162,64 @@

    + +

    + procedure, public :: + get_title_angle => pa_get_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_title_angle(this) result(x) +

      + +

      Gets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The axis title angle, in degrees.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -1508,7 +1630,77 @@

    - + +

    + procedure, public :: + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_auto_calc_title_angle(this, x) +

      + +

      Sets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + logical, + intent(in) + + ::x +

      Set to true to automatically calculate the title angle; +else, set to false.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_autoscale => pa_set_autoscale @@ -2430,6 +2622,74 @@

    Arguments

    +

  • + +

    + +

    +
    +
    +
    + +

    + procedure, public :: + set_title_angle => pa_set_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_title_angle(this, x) +

      + +

      Sets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The axis title angle, in degrees.

      +
      + +
    @@ -2865,7 +3125,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/doc/type/z_axis.html b/doc/type/z_axis.html index bc9ccebe..ded07f1e 100644 --- a/doc/type/z_axis.html +++ b/doc/type/z_axis.html @@ -74,7 +74,7 @@

    z_axis
  • 5 statements + title="

    0.5% of total for derived types.

    Including implementation: 374 statements, 2.2% of total for derived types.">5 statements
  • @@ -130,8 +130,9 @@

    Type-Bound Procedures

    - get_autoscale - get_command_string + get_auto_calculate_title_angle + get_autoscale + get_command_string get_id_string get_is_log_scaled get_limits @@ -145,6 +146,7 @@

    Type-Bound Procedures

    get_tic_label_x_offset get_tic_label_y_offset get_title + get_title_angle get_title_x_offset get_title_y_offset get_use_default_tic_label_format @@ -152,7 +154,8 @@

    Type-Bound Procedures

    get_zero_axis get_zero_axis_line_width is_title_defined - set_autoscale + set_auto_calculate_title_angle + set_autoscale set_is_log_scaled set_limits set_manual_tic_labels @@ -165,6 +168,7 @@

    Type-Bound Procedures

    set_tic_label_x_offset set_tic_label_y_offset set_title + set_title_angle set_title_x_offset set_title_y_offset set_use_default_tic_label_format @@ -197,7 +201,67 @@

    Type-Bound Procedures

    - + +

    + procedure, public :: + get_auto_calculate_title_angle => pa_get_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_auto_calc_title_angle(this) result(x) +

      + +

      Gets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + logical +

      +

      True if GNUPLOT should automatically calculate the title +angle; else, false.

      + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: get_autoscale => pa_get_autoscale @@ -257,7 +321,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -1098,6 +1162,64 @@

    + +

    + procedure, public :: + get_title_angle => pa_get_title_angle + +

    +
    +
      +
    • +

      + private pure function pa_get_title_angle(this) result(x) +

      + +

      Gets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(in) + + ::this +

      The plot_axis object.

      +
      + +

      + Return Value + real(kind=real32) +

      +

      The axis title angle, in degrees.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -1508,7 +1630,77 @@

    - + +

    + procedure, public :: + set_auto_calculate_title_angle => pa_set_auto_calc_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_auto_calc_title_angle(this, x) +

      + +

      Sets whether GNUPLOT should automatically calculate the axis +title angle.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + logical, + intent(in) + + ::x +

      Set to true to automatically calculate the title angle; +else, set to false.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: set_autoscale => pa_set_autoscale @@ -2430,6 +2622,74 @@

    Arguments

    +

  • + +

    + +

    +
    +
    +
    + +

    + procedure, public :: + set_title_angle => pa_set_title_angle + +

    +
    +
      +
    • +

      + private subroutine pa_set_title_angle(this, x) +

      + +

      Sets the axis title angle, in degrees.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_axis), + intent(inout) + + ::this +

      The plot_axis object.

      +
      + + real(kind=real32), + intent(in) + + ::x +

      The axis title angle, in degrees.

      +
      + +
    @@ -2865,7 +3125,7 @@

    Arguments

    Documentation generated by FORD - on 2026-09-01 07:22

    + on 2026-10-01 05:57


    diff --git a/examples/surface_plot_example.f90 b/examples/surface_plot_example.f90 index 4e2ca14a..09519034 100644 --- a/examples/surface_plot_example.f90 +++ b/examples/surface_plot_example.f90 @@ -14,6 +14,7 @@ program example type(surface_plot) :: plt type(surface_plot_data) :: d1 type(rainbow_colormap) :: map + class(plot_axis), pointer :: zAxis ! Define the data xy = meshgrid(linspace(-5.0d0, 5.0d0, n), linspace(-5.0d0, 5.0d0, m)) @@ -37,6 +38,10 @@ program example call plt%set_y_axis_title("Y Axis") call plt%set_z_axis_title("Z Axis") + ! Rotate the z-axis title + zAxis => plt%get_z_axis() + call zAxis%set_title_angle(90.0) + ! Define the function to plot z = sqrt(x**2 + y**2) * sin(x**2 + y**2) call d1%define_data(x, y, z) diff --git a/fpm.toml b/fpm.toml index b09d587e..86367d59 100644 --- a/fpm.toml +++ b/fpm.toml @@ -1,5 +1,5 @@ name = "fplot" -version = "1.10.0" +version = "1.11.0" license = "GPL-3.0" author = "Jason Christopherson" maintainer = "Jason Christopherson" @@ -13,7 +13,6 @@ source-dir = "src" [dependencies] collections = { git = "https://github.com/jchristopherson/collections" } fstring = { git = "https://github.com/jchristopherson/fstring" } -geompack = { git = "https://github.com/jchristopherson/geompack" } forcolormap = { git = "https://github.com/vmagnin/forcolormap" } [dev-dependencies] diff --git a/images/colored_vector_plot_example.png b/images/colored_vector_plot_example.png index ce3ead69..926190e7 100644 Binary files a/images/colored_vector_plot_example.png and b/images/colored_vector_plot_example.png differ diff --git a/images/custom_colormap_example.png b/images/custom_colormap_example.png index 1d749193..d2fdcd8a 100644 Binary files a/images/custom_colormap_example.png and b/images/custom_colormap_example.png differ diff --git a/images/data_dependent_colors_2d_example.png b/images/data_dependent_colors_2d_example.png index d72ee7b2..2f470889 100644 Binary files a/images/data_dependent_colors_2d_example.png and b/images/data_dependent_colors_2d_example.png differ diff --git a/images/surface_plot_example.png b/images/surface_plot_example.png index ad57e719..03155864 100644 Binary files a/images/surface_plot_example.png and b/images/surface_plot_example.png differ diff --git a/images/surface_plot_example_2.png b/images/surface_plot_example_2.png index 547d227e..a30aaac5 100644 Binary files a/images/surface_plot_example_2.png and b/images/surface_plot_example_2.png differ diff --git a/images/variable_point_size_2d_example.png b/images/variable_point_size_2d_example.png index 98ce2dbf..5b2afb12 100644 Binary files a/images/variable_point_size_2d_example.png and b/images/variable_point_size_2d_example.png differ diff --git a/images/variable_point_size_3d_example.png b/images/variable_point_size_3d_example.png index 8a19665f..ffb32818 100644 Binary files a/images/variable_point_size_3d_example.png and b/images/variable_point_size_3d_example.png differ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ffebc8d8..21376007 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,6 +3,7 @@ set(dir ${CMAKE_CURRENT_SOURCE_DIR}) # Define the source files set(FPLOT_SOURCES + ${dir}/delaunay/delaunay.f90 ${dir}/fplot_core.f90 ${dir}/fplot_core_routines.f90 ${dir}/fplot_colors.f90 @@ -51,8 +52,8 @@ set(FPLOT_SOURCES ${FPLOT_SOURCES} PARENT_SCOPE) # Dependencies include(FetchContent) +set(BUILD_TESTING OFF) find_package(collections 1.1.0 QUIET) -find_package(geompack QUIET) find_package(fstring QUIET) if (NOT collections_FOUND) @@ -70,21 +71,6 @@ else() set(BUILD_COLLECTIONS FALSE) endif() -if (NOT geompack_FOUND) - message(STATUS "GEOMPACK could not be found. A reference version will be employed.") - FetchContent_Declare( - geompack - GIT_REPOSITORY "https://github.com/jchristopherson/geompack" - GIT_TAG main - ) - FetchContent_MakeAvailable(geompack) - set(GEOMPACK_LIBRARIES geompack) - set(BUILD_GEOMPACK TRUE) -else() - set(GEOMPACK_LIBRARIES geompack::geompack) - set(BUILD_GEOMPACK FALSE) -endif() - if (NOT fstring_FOUND) message(STATUS "FSTRING could not be found. A reference version will be employed.") FetchContent_Declare( @@ -113,7 +99,6 @@ target_link_libraries( ${PROJECT_NAME} PUBLIC ${COLLECTIONS_LIBRARIES} - ${GEOMPACK_LIBRARIES} ${FSTRING_LIBRARIES} $ ) @@ -157,11 +142,6 @@ if(${BUILD_SHARED_LIBS}) ARCHIVE DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - if(${BUILD_GEOMPACK}) - install(TARGETS ${GEOMPACK_LIBRARIES} - ARCHIVE DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() if(${BUILD_FSTRING}) install(TARGETS ${FSTRING_LIBRARIES} ARCHIVE DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -173,11 +153,6 @@ else() ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - if(${BUILD_GEOMPACK}) - install(TARGETS ${GEOMPACK_LIBRARIES} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() if(${BUILD_FSTRING}) install(TARGETS ${FSTRING_LIBRARIES} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/src/delaunay/delaunay.f90 b/src/delaunay/delaunay.f90 new file mode 100644 index 00000000..b81426df --- /dev/null +++ b/src/delaunay/delaunay.f90 @@ -0,0 +1,884 @@ +module delaunay + !! Provides a minimal, in-house implementation of the subset of the + !! GEOMPACK library used by FPLOT to construct 2D Delaunay + !! triangulations. + !! + !! Original FORTRAN77 version by Barry Joe. FORTRAN90 version by + !! John Burkardt. Reference: Barry Joe, GEOMPACK - a software + !! package for the generation of meshes using geometric algorithms, + !! Advances in Engineering Software, Volume 13, pages 325-331, 1991. + use iso_fortran_env, only : int32, real64 + implicit none + private + public :: r8tris2 + +contains +! ------------------------------------------------------------------------------ + subroutine r8tris2(node_num, node_xy, triangle_num, triangle_node, & + triangle_neighbor) + !! Constructs a Delaunay triangulation of 2D vertices. + !! + !! The routine constructs the Delaunay triangulation of a set of + !! 2D vertices using an incremental approach and diagonal edge + !! swaps. Vertices are first sorted in lexicographically + !! increasing (X,Y) order, and then are inserted one at a time + !! from outside the convex hull. + integer(int32), intent(in) :: node_num + !! The number of vertices. + real(real64), intent(inout), dimension(2, node_num) :: node_xy + !! The coordinates of the vertices. On output, the vertices + !! have been sorted into dictionary order. + integer(int32), intent(out) :: triangle_num + !! The number of triangles in the triangulation; + !! TRIANGLE_NUM is equal to 2*NODE_NUM - NB - 2, where NB is + !! the number of boundary vertices. + integer(int32), intent(out), dimension(3, 2 * node_num) :: & + triangle_node + !! The nodes that make up each triangle. The elements are + !! indices of the vertex array. The vertices of the + !! triangles are in counter clockwise order. + integer(int32), intent(out), dimension(3, 2 * node_num) :: & + triangle_neighbor + !! The triangle neighbor list. Positive elements are + !! indices of TRIANGLE_NODE; negative elements are used for + !! links of a counter clockwise linked list of boundary + !! edges; LINK = -(3*I + J-1) where I, J = triangle, edge + !! index; TRIANGLE_NEIGHBOR(J,I) refers to the neighbor + !! along the edge from vertex J to J+1 (mod 3). + + ! Local Variables + real(real64) :: cmax, tol + integer(int32) :: e, i, j, k, l, ledg, lr, ltri, m, m1, m2, & + n, redg, rtri, t, top + integer(int32), dimension(node_num) :: indx, stack + + ! Initialization + tol = 100.0d0 * epsilon(tol) + + ! Sort the vertices by increasing (x,y) + call r82vec_sort_heap_index_a(node_num, node_xy, indx) + call r82vec_permute(node_num, node_xy, indx) + + ! Make sure that the data points are "reasonably" distinct + m1 = 1 + do i = 2, node_num + m = m1 + m1 = i + k = 0 + do j = 1, 2 + cmax = max(abs(node_xy(j, m)), abs(node_xy(j, m1))) + if (tol * (cmax + 1.0d0) < & + abs(node_xy(j, m) - node_xy(j, m1))) then + k = j + exit + end if + end do + if (k == 0) then + error stop & + "R8TRIS2 - Fatal error! Two points are too close together." + end if + end do + + ! Starting from points M1 and M2, search for a third point M that + ! makes a "healthy" triangle (M1,M2,M) + m1 = 1 + m2 = 2 + j = 3 + do + if (node_num < j) then + error stop & + "R8TRIS2 - Fatal error! Could not find a non-collinear point." + end if + + m = j + lr = lrline(node_xy(1, m), node_xy(2, m), node_xy(1, m1), & + node_xy(2, m1), node_xy(1, m2), node_xy(2, m2), 0.0d0) + if (lr /= 0) exit + j = j + 1 + end do + + ! Set up the triangle information for (M1,M2,M), and for any + ! other triangles created because points were collinear with M1, + ! M2 + triangle_num = j - 2 + + if (lr == -1) then + triangle_node(1, 1) = m1 + triangle_node(2, 1) = m2 + triangle_node(3, 1) = m + triangle_neighbor(3, 1) = -3 + + do i = 2, triangle_num + m1 = m2 + m2 = i + 1 + triangle_node(1, i) = m1 + triangle_node(2, i) = m2 + triangle_node(3, i) = m + triangle_neighbor(1, i - 1) = -3 * i + triangle_neighbor(2, i - 1) = i + triangle_neighbor(3, i) = i - 1 + end do + + triangle_neighbor(1, triangle_num) = -3 * triangle_num - 1 + triangle_neighbor(2, triangle_num) = -5 + ledg = 2 + ltri = triangle_num + else + triangle_node(1, 1) = m2 + triangle_node(2, 1) = m1 + triangle_node(3, 1) = m + triangle_neighbor(1, 1) = -4 + + do i = 2, triangle_num + m1 = m2 + m2 = i + 1 + triangle_node(1, i) = m2 + triangle_node(2, i) = m1 + triangle_node(3, i) = m + triangle_neighbor(3, i - 1) = i + triangle_neighbor(1, i) = -3 * i - 3 + triangle_neighbor(2, i) = i - 1 + end do + + triangle_neighbor(3, triangle_num) = -3 * triangle_num + triangle_neighbor(2, 1) = -3 * triangle_num - 2 + ledg = 2 + ltri = 1 + end if + + ! Insert the vertices one at a time from outside the convex + ! hull, determine visible boundary edges, and apply diagonal + ! edge swaps until the Delaunay triangulation of the vertices + ! (so far) is obtained + top = 0 + + do i = j + 1, node_num + m = i + m1 = triangle_node(ledg, ltri) + + if (ledg <= 2) then + m2 = triangle_node(ledg + 1, ltri) + else + m2 = triangle_node(1, ltri) + end if + + lr = lrline(node_xy(1, m), node_xy(2, m), node_xy(1, m1), & + node_xy(2, m1), node_xy(1, m2), node_xy(2, m2), 0.0d0) + + if (0 < lr) then + rtri = ltri + redg = ledg + ltri = 0 + else + l = -triangle_neighbor(ledg, ltri) + rtri = l / 3 + redg = mod(l, 3) + 1 + end if + + call vbedg(node_xy(1, m), node_xy(2, m), node_num, node_xy, & + triangle_num, triangle_node, triangle_neighbor, ltri, & + ledg, rtri, redg) + + n = triangle_num + 1 + l = -triangle_neighbor(ledg, ltri) + + do + t = l / 3 + e = mod(l, 3) + 1 + l = -triangle_neighbor(e, t) + m2 = triangle_node(e, t) + + if (e <= 2) then + m1 = triangle_node(e + 1, t) + else + m1 = triangle_node(1, t) + end if + + triangle_num = triangle_num + 1 + triangle_neighbor(e, t) = triangle_num + triangle_node(1, triangle_num) = m1 + triangle_node(2, triangle_num) = m2 + triangle_node(3, triangle_num) = m + triangle_neighbor(1, triangle_num) = t + triangle_neighbor(2, triangle_num) = triangle_num - 1 + triangle_neighbor(3, triangle_num) = triangle_num + 1 + top = top + 1 + + if (node_num < top) then + error stop "R8TRIS2 - Fatal error! Stack overflow." + end if + + stack(top) = triangle_num + + if (t == rtri .and. e == redg) exit + end do + + triangle_neighbor(ledg, ltri) = -3 * n - 1 + triangle_neighbor(2, n) = -3 * triangle_num - 2 + triangle_neighbor(3, triangle_num) = -l + ltri = n + ledg = 2 + + call swapec(m, top, ltri, ledg, node_num, node_xy, & + triangle_num, triangle_node, triangle_neighbor, stack) + end do + + ! Now account for the sorting that was done + do i = 1, 3 + do j = 1, triangle_num + triangle_node(i, j) = indx(triangle_node(i, j)) + end do + end do + + call perm_inverse(node_num, indx) + call r82vec_permute(node_num, node_xy, indx) + end subroutine + +! ------------------------------------------------------------------------------ + pure subroutine r82vec_sort_heap_index_a(n, a, indx) + !! Computes an indexed heap ascending sort of an R82VEC. + !! + !! The sorting is not actually carried out. Rather an index + !! array is created which defines the sorting. + integer(int32), intent(in) :: n + !! The number of entries in the array. + real(real64), intent(in), dimension(2, n) :: a + !! The array to be index-sorted. + integer(int32), intent(out), dimension(n) :: indx + !! The sort index. The I-th element of the sorted array is + !! A(1:2,INDX(I)). + + ! Local Variables + real(real64), dimension(2) :: aval + integer(int32) :: i, indxt, ir, j, l + + if (n < 1) return + + do i = 1, n + indx(i) = i + end do + + if (n == 1) return + + l = n / 2 + 1 + ir = n + + do + if (1 < l) then + l = l - 1 + indxt = indx(l) + aval = a(:, indxt) + else + indxt = indx(ir) + aval = a(:, indxt) + indx(ir) = indx(1) + ir = ir - 1 + if (ir == 1) then + indx(1) = indxt + exit + end if + end if + + i = l + j = l + l + + do while (j <= ir) + if (j < ir) then + if (a(1, indx(j)) < a(1, indx(j + 1)) .or. & + (a(1, indx(j)) == a(1, indx(j + 1)) .and. & + a(2, indx(j)) < a(2, indx(j + 1)))) then + j = j + 1 + end if + end if + + if (aval(1) < a(1, indx(j)) .or. & + (aval(1) == a(1, indx(j)) .and. & + aval(2) < a(2, indx(j)))) then + indx(i) = indx(j) + i = j + j = j + j + else + j = ir + 1 + end if + end do + + indx(i) = indxt + end do + end subroutine + +! ------------------------------------------------------------------------------ + subroutine r82vec_permute(n, a, p) + !! Permutes an R82VEC in place, according to a given permutation. + integer(int32), intent(in) :: n + !! The number of objects. + real(real64), intent(inout), dimension(2, n) :: a + !! The array to be permuted. + integer(int32), intent(inout), dimension(n) :: p + !! The permutation. P(I) = J means that the I-th element of + !! the output array should be the J-th element of the input + !! array. + + ! Local Variables + real(real64), dimension(2) :: a_temp + integer(int32) :: ierror, iget, iput, istart + + call perm_check(n, p, ierror) + if (ierror /= 0) then + error stop & + "R82VEC_PERMUTE - Fatal error! P does not represent a permutation." + end if + + do istart = 1, n + if (p(istart) < 0) then + cycle + else if (p(istart) == istart) then + p(istart) = -p(istart) + cycle + else + a_temp = a(:, istart) + iget = istart + + do + iput = iget + iget = p(iget) + p(iput) = -p(iput) + + if (iget < 1 .or. n < iget) then + error stop & + "R82VEC_PERMUTE - Fatal error! Invalid permutation entry." + end if + + if (iget == istart) then + a(:, iput) = a_temp + exit + end if + + a(:, iput) = a(:, iget) + end do + end if + end do + + p = -p + end subroutine + +! ------------------------------------------------------------------------------ + pure subroutine perm_check(n, p, ierror) + !! Checks that a vector represents a permutation. + integer(int32), intent(in) :: n + !! The number of entries. + integer(int32), intent(in), dimension(n) :: p + !! The array to check. + integer(int32), intent(out) :: ierror + !! 0 if the array represents a permutation; otherwise, the + !! smallest missing value. + + ! Local Variables + integer(int32) :: ifind, iseek + + ierror = 0 + do iseek = 1, n + ierror = iseek + do ifind = 1, n + if (p(ifind) == iseek) then + ierror = 0 + exit + end if + end do + if (ierror /= 0) return + end do + end subroutine + +! ------------------------------------------------------------------------------ + subroutine perm_inverse(n, p) + !! Inverts a permutation in-place. + integer(int32), intent(in) :: n + !! The number of objects being permuted. + integer(int32), intent(inout), dimension(n) :: p + !! The permutation, in standard index form. On output, P + !! describes the inverse permutation. + + ! Local Variables + integer(int32) :: i, i0, i1, i2, ierror, is + + if (n <= 0) then + error stop "PERM_INVERSE - Fatal error! N <= 0." + end if + + call perm_check(n, p, ierror) + if (ierror /= 0) then + error stop & + "PERM_INVERSE - Fatal error! P does not represent a permutation." + end if + + is = 1 + do i = 1, n + i1 = p(i) + do while (i < i1) + i2 = p(i1) + p(i1) = -i2 + i1 = i2 + end do + is = -sign(1, p(i)) + p(i) = sign(p(i), is) + end do + + do i = 1, n + i1 = -p(i) + if (0 <= i1) then + i0 = i + do + i2 = p(i1) + p(i1) = i0 + if (i2 < 0) exit + i0 = i1 + i1 = i2 + end do + end if + end do + end subroutine + +! ------------------------------------------------------------------------------ + pure function lrline(xu, yu, xv1, yv1, xv2, yv2, dv) result(rst) + !! Determines if a point is left of, right of, or on a directed + !! line. + !! + !! The directed line is parallel to, and at a signed distance DV + !! from a directed base line from (XV1,YV1) to (XV2,YV2). + real(real64), intent(in) :: xu + !! The x-coordinate of the point whose position relative to + !! the directed line is to be determined. + real(real64), intent(in) :: yu + !! The y-coordinate of the point whose position relative to + !! the directed line is to be determined. + real(real64), intent(in) :: xv1 + !! The x-coordinate of the first point defining the base + !! line. + real(real64), intent(in) :: yv1 + !! The y-coordinate of the first point defining the base + !! line. + real(real64), intent(in) :: xv2 + !! The x-coordinate of the second point defining the base + !! line. + real(real64), intent(in) :: yv2 + !! The y-coordinate of the second point defining the base + !! line. + real(real64), intent(in) :: dv + !! The signed distance of the directed line from the + !! directed base line. DV is positive for a line to the + !! left of the base line. + integer(int32) :: rst + !! +1 if the point is to the right of the directed line; 0 if + !! the point is on the directed line; -1 if the point is to + !! the left of the directed line. + + ! Local Variables + real(real64) :: dx, dxu, dy, dyu, t, tol, tolabs + + tol = 100.0d0 * epsilon(tol) + + dx = xv2 - xv1 + dy = yv2 - yv1 + dxu = xu - xv1 + dyu = yu - yv1 + + tolabs = tol * max(abs(dx), abs(dy), abs(dxu), abs(dyu), abs(dv)) + + t = dy * dxu - dx * dyu + dv * sqrt(dx * dx + dy * dy) + + if (tolabs < t) then + rst = 1 + else if (-tolabs <= t) then + rst = 0 + else + rst = -1 + end if + end function + +! ------------------------------------------------------------------------------ + pure function diaedg(x0, y0, x1, y1, x2, y2, x3, y3) result(rst) + !! Chooses a diagonal edge. + !! + !! The routine determines whether 0--2 or 1--3 is the diagonal + !! edge that should be chosen, based on the circumcircle + !! criterion, where (X0,Y0), (X1,Y1), (X2,Y2), (X3,Y3) are the + !! vertices of a simple quadrilateral in counterclockwise order. + real(real64), intent(in) :: x0, y0, x1, y1, x2, y2, x3, y3 + !! The coordinates of the vertices of the quadrilateral. + integer(int32) :: rst + !! +1 if diagonal edge 02 is chosen; -1 if diagonal edge 13 + !! is chosen; 0 if the four vertices are cocircular. + + ! Local Variables + real(real64) :: ca, cb, dx10, dx12, dx30, dx32, dy10, dy12, dy30, & + dy32, s, tol, tola, tolb + + tol = 100.0d0 * epsilon(tol) + + dx10 = x1 - x0 + dy10 = y1 - y0 + dx12 = x1 - x2 + dy12 = y1 - y2 + dx30 = x3 - x0 + dy30 = y3 - y0 + dx32 = x3 - x2 + dy32 = y3 - y2 + + tola = tol * max(abs(dx10), abs(dy10), abs(dx30), abs(dy30)) + tolb = tol * max(abs(dx12), abs(dy12), abs(dx32), abs(dy32)) + + ca = dx10 * dx30 + dy10 * dy30 + cb = dx12 * dx32 + dy12 * dy32 + + if (tola < ca .and. tolb < cb) then + rst = -1 + else if (ca < -tola .and. cb < -tolb) then + rst = 1 + else + tola = max(tola, tolb) + s = (dx10 * dy30 - dx30 * dy10) * cb + & + (dx32 * dy12 - dx12 * dy32) * ca + if (tola < s) then + rst = -1 + else if (s < -tola) then + rst = 1 + else + rst = 0 + end if + end if + end function + +! ------------------------------------------------------------------------------ + pure function i4_modp(i, j) result(rst) + !! Returns the nonnegative remainder of I4 division. + integer(int32), intent(in) :: i + !! The number to be divided. + integer(int32), intent(in) :: j + !! The number that divides I. + integer(int32) :: rst + !! The nonnegative remainder when I is divided by J. + + rst = mod(i, j) + if (rst < 0) rst = rst + abs(j) + end function + +! ------------------------------------------------------------------------------ + pure function i4_wrap(ival, ilo, ihi) result(rst) + !! Forces an I4 to lie between given limits by wrapping. + integer(int32), intent(in) :: ival + !! The value to wrap. + integer(int32), intent(in) :: ilo + !! The lower bound. + integer(int32), intent(in) :: ihi + !! The upper bound. + integer(int32) :: rst + !! A "wrapped" version of IVAL. + + ! Local Variables + integer(int32) :: jhi, jlo, wide + + jlo = min(ilo, ihi) + jhi = max(ilo, ihi) + wide = jhi - jlo + 1 + + if (wide == 1) then + rst = jlo + else + rst = jlo + i4_modp(ival - jlo, wide) + end if + end function + +! ------------------------------------------------------------------------------ + pure subroutine vbedg(x, y, node_num, node_xy, triangle_num, & + triangle_node, triangle_neighbor, ltri, ledg, rtri, redg) + !! Determines which boundary edges are visible to a point. + !! + !! The point (X,Y) is assumed to be outside the convex hull of + !! the region covered by the 2D triangulation. + real(real64), intent(in) :: x + !! The x-coordinate of a point outside the convex hull of + !! the current triangulation. + real(real64), intent(in) :: y + !! The y-coordinate of a point outside the convex hull of + !! the current triangulation. + integer(int32), intent(in) :: node_num + !! The number of points. + real(real64), intent(in), dimension(2, node_num) :: node_xy + !! The coordinates of the vertices. + integer(int32), intent(in) :: triangle_num + !! The number of triangles. + integer(int32), intent(in), dimension(3, triangle_num) :: & + triangle_node + !! The triangle incidence list. + integer(int32), intent(in), dimension(3, triangle_num) :: & + triangle_neighbor + !! The triangle neighbor list; negative values are used for + !! links of a counterclockwise linked list of boundary + !! edges; LINK = -(3*I + J-1) where I, J = triangle, edge + !! index. + integer(int32), intent(inout) :: ltri + !! If LTRI /= 0 then this value is assumed to be already + !! computed and is not changed, else it is updated. On + !! output, LTRI is the index of the boundary triangle to the + !! left of the leftmost boundary triangle visible from + !! (X,Y). + integer(int32), intent(inout) :: ledg + !! The boundary edge of triangle LTRI to the left of the + !! leftmost boundary edge visible from (X,Y). 1 <= LEDG <= + !! 3. + integer(int32), intent(inout) :: rtri + !! On input, the index of the boundary triangle to begin the + !! search at. On output, the index of the rightmost + !! boundary triangle visible from (X,Y). + integer(int32), intent(inout) :: redg + !! The edge of triangle RTRI that is visible from (X,Y). + !! 1 <= REDG <= 3. + + ! Local Variables + integer(int32) :: a, b, e, l, lr, t + logical :: ldone + + ! Find the rightmost visible boundary edge using links, then + ! possibly the leftmost visible boundary edge using triangle + ! neighbor information + if (ltri == 0) then + ldone = .false. + ltri = rtri + ledg = redg + else + ldone = .true. + end if + + do + l = -triangle_neighbor(redg, rtri) + t = l / 3 + e = mod(l, 3) + 1 + a = triangle_node(e, t) + + if (e <= 2) then + b = triangle_node(e + 1, t) + else + b = triangle_node(1, t) + end if + + lr = lrline(x, y, node_xy(1, a), node_xy(2, a), & + node_xy(1, b), node_xy(2, b), 0.0d0) + + if (lr <= 0) exit + + rtri = t + redg = e + end do + + if (ldone) return + + t = ltri + e = ledg + + do + b = triangle_node(e, t) + e = i4_wrap(e - 1, 1, 3) + + do while (0 < triangle_neighbor(e, t)) + t = triangle_neighbor(e, t) + if (triangle_node(1, t) == b) then + e = 3 + else if (triangle_node(2, t) == b) then + e = 1 + else + e = 2 + end if + end do + + a = triangle_node(e, t) + + lr = lrline(x, y, node_xy(1, a), node_xy(2, a), & + node_xy(1, b), node_xy(2, b), 0.0d0) + + if (lr <= 0) exit + end do + + ltri = t + ledg = e + end subroutine + +! ------------------------------------------------------------------------------ + pure subroutine swapec(i, top, btri, bedg, node_num, node_xy, & + triangle_num, triangle_node, triangle_neighbor, stack) + !! Swaps diagonal edges until all triangles are Delaunay. + !! + !! The routine swaps diagonal edges in a 2D triangulation, based + !! on the empty circumcircle criterion, until all triangles are + !! Delaunay, given that I is the index of the new vertex added + !! to the triangulation. + integer(int32), intent(in) :: i + !! The index of the new vertex. + integer(int32), intent(inout) :: top + !! The index of the top of the stack. On output, TOP is + !! zero. + integer(int32), intent(inout) :: btri + !! On input, if positive, the triangle index of a boundary + !! edge whose updated index must be recorded. On output, + !! this may be updated because of swaps. + integer(int32), intent(inout) :: bedg + !! On input, if positive, the edge index of a boundary edge + !! whose updated index must be recorded. On output, this + !! may be updated because of swaps. + integer(int32), intent(in) :: node_num + !! The number of points. + real(real64), intent(in), dimension(2, node_num) :: node_xy + !! The coordinates of the points. + integer(int32), intent(in) :: triangle_num + !! The number of triangles. + integer(int32), intent(inout), dimension(3, triangle_num) :: & + triangle_node + !! The triangle incidence list. May be updated on output + !! because of swaps. + integer(int32), intent(inout), dimension(3, triangle_num) :: & + triangle_neighbor + !! The triangle neighbor list; negative values are used for + !! links of the counter-clockwise linked list of boundary + !! edges. May be updated on output because of swaps. + integer(int32), intent(inout), dimension(node_num) :: stack + !! On input, entries 1 through TOP contain the indices of + !! initial triangles (involving vertex I) put in the stack; + !! the edges opposite I should be in the interior; entries + !! TOP+1 through NODE_NUM are used as a stack. + + ! Local Variables + integer(int32) :: a, b, c, e, ee, em1, ep1, f, fm1, fp1, l, r, s, & + swap, t, tt, u + real(real64) :: x, y + + x = node_xy(1, i) + y = node_xy(2, i) + + do + if (top <= 0) exit + + t = stack(top) + top = top - 1 + + if (triangle_node(1, t) == i) then + e = 2 + b = triangle_node(3, t) + else if (triangle_node(2, t) == i) then + e = 3 + b = triangle_node(1, t) + else + e = 1 + b = triangle_node(2, t) + end if + + a = triangle_node(e, t) + u = triangle_neighbor(e, t) + + if (triangle_neighbor(1, u) == t) then + f = 1 + c = triangle_node(3, u) + else if (triangle_neighbor(2, u) == t) then + f = 2 + c = triangle_node(1, u) + else + f = 3 + c = triangle_node(2, u) + end if + + swap = diaedg(x, y, node_xy(1, a), node_xy(2, a), & + node_xy(1, c), node_xy(2, c), node_xy(1, b), & + node_xy(2, b)) + + if (swap == 1) then + em1 = i4_wrap(e - 1, 1, 3) + ep1 = i4_wrap(e + 1, 1, 3) + fm1 = i4_wrap(f - 1, 1, 3) + fp1 = i4_wrap(f + 1, 1, 3) + + triangle_node(ep1, t) = c + triangle_node(fp1, u) = i + r = triangle_neighbor(ep1, t) + s = triangle_neighbor(fp1, u) + triangle_neighbor(ep1, t) = u + triangle_neighbor(fp1, u) = t + triangle_neighbor(e, t) = s + triangle_neighbor(f, u) = r + + if (0 < triangle_neighbor(fm1, u)) then + top = top + 1 + stack(top) = u + end if + + if (0 < s) then + if (triangle_neighbor(1, s) == u) then + triangle_neighbor(1, s) = t + else if (triangle_neighbor(2, s) == u) then + triangle_neighbor(2, s) = t + else + triangle_neighbor(3, s) = t + end if + + top = top + 1 + if (node_num < top) then + error stop "SWAPEC - Fatal error! Stack overflow." + end if + stack(top) = t + else + if (u == btri .and. fp1 == bedg) then + btri = t + bedg = e + end if + + l = -(3 * t + e - 1) + tt = t + ee = em1 + + do while (0 < triangle_neighbor(ee, tt)) + tt = triangle_neighbor(ee, tt) + if (triangle_node(1, tt) == a) then + ee = 3 + else if (triangle_node(2, tt) == a) then + ee = 1 + else + ee = 2 + end if + end do + + triangle_neighbor(ee, tt) = l + end if + + if (0 < r) then + if (triangle_neighbor(1, r) == t) then + triangle_neighbor(1, r) = u + else if (triangle_neighbor(2, r) == t) then + triangle_neighbor(2, r) = u + else + triangle_neighbor(3, r) = u + end if + else + if (t == btri .and. ep1 == bedg) then + btri = u + bedg = f + end if + + l = -(3 * u + f - 1) + tt = u + ee = fm1 + + do while (0 < triangle_neighbor(ee, tt)) + tt = triangle_neighbor(ee, tt) + if (triangle_node(1, tt) == b) then + ee = 3 + else if (triangle_node(2, tt) == b) then + ee = 1 + else + ee = 2 + end if + end do + + triangle_neighbor(ee, tt) = l + end if + end if + end do + end subroutine + +! ------------------------------------------------------------------------------ +end module diff --git a/src/fplot_colormap.f90 b/src/fplot_colormap.f90 index da4ec14c..0bc91a3d 100644 --- a/src/fplot_colormap.f90 +++ b/src/fplot_colormap.f90 @@ -19,6 +19,7 @@ module fplot_colormap public :: grey_colormap public :: earth_colormap public :: custom_colormap + public :: spectral_colormap type, abstract, extends(plot_object) :: colormap !! A colormap object for a surface plot. @@ -26,10 +27,24 @@ module fplot_colormap !! The label to associate with the colormap. logical, private :: m_horizontal = .false. !! The colormap should be drawn horizontally. - logical, private :: m_drawBorder = .true. + logical, private :: m_drawBorder = .false. !! Draw the colormap border. - logical, private :: m_showTics = .true. + logical, private :: m_showTics = .false. !! Show the tic marks. + real(real32), private :: m_colorbarThickness = 0.02 + !! The relative thickness of the colorbar itself. A value of 0 + !! allows GNUPLOT to use it's defaults. This value is clamped to + !! the range [0.0, 1.0]. + real(real32), private :: m_colorbarLength = 0.4 + !! The relative length of the colorbar itself. A value of 0 + !! allows GNUPLOT to use it's defaults. This value is clamped to + !! the range [0.0, 1.0]. + real(real32), private :: m_axesSize(2) = [0.85, 0.85] + !! The size of the axes size defined as [width, height] + !! clamped to the interval [0.0, 1.0]. + real(real32), private :: m_axesOrigin(2) = [0.05, 0.05] + !! The x-y coordinates of the axes clamped to the interval + !! [0.0, 1.0]. contains procedure, public :: get_command_string => cm_get_cmd procedure(cm_get_string_result), deferred, public :: get_color_string @@ -41,6 +56,14 @@ module fplot_colormap procedure, public :: set_draw_border => cm_set_draw_border procedure, public :: get_show_tics => cm_get_show_tics procedure, public :: set_show_tics => cm_set_show_tics + procedure, public :: get_colorbar_thickness => cm_get_colorbar_thickness + procedure, public :: set_colorbar_thickness => cm_set_colorbar_thickness + procedure, public :: get_colorbar_length => cm_get_colorbar_length + procedure, public :: set_colorbar_length => cm_set_colorbar_length + procedure, public :: get_axes_size => cm_get_axes_size + procedure, public :: set_axes_size => cm_set_axes_size + procedure, public :: get_axes_origin => cm_get_axes_origin + procedure, public :: set_axes_origin => cm_set_axes_origin end type interface @@ -109,6 +132,13 @@ function cm_get_string_result(this) result(x) end type ! ------------------------------------------------------------------------------ + type, extends(colormap) :: spectral_colormap + !! Defines the spectral colormap available at + !! https://github.com/Gnuplotting/gnuplot-palettes/blob/master/spectral.pal. + contains + procedure, public :: get_color_string => spcm_get_clr + end type + contains ! ****************************************************************************** ! COLORMAP MEMBERS @@ -122,9 +152,14 @@ function cm_get_cmd(this) result(x) ! Local Variables type(string_builder) :: str + real(real32) :: sz(2), origin(2), length, thickness ! Initialization call str%initialize() + sz = this%get_axes_size() + origin = this%get_axes_origin() + length = this%get_colorbar_length() + thickness = this%get_colorbar_thickness() ! Palette Definition call str%append("set palette defined (") @@ -143,14 +178,45 @@ function cm_get_cmd(this) result(x) call str%append(new_line('a')) call str%append("set colorbox horizontal") call str%append(new_line('a')) - call str%append("set size 0.8,0.8; set origin 0.1,0.2") + call str%append("set size ") + call str%append(to_string(sz(1))) + call str%append(",") + call str%append(to_string(sz(2))) + call str%append("; set origin ") + call str%append(to_string(origin(1))) + call str%append(",") + call str%append(to_string(origin(2) + 0.075)) call str%append(new_line('a')) - call str%append("set colorbox user origin 0.1,0.175 size 0.8,0.055") + call str%append("set colorbox user origin ") + call str%append(to_string(0.5 - 0.5 * length)) + call str%append(",0.1 size ") + call str%append(to_string(length)) + call str%append(",") + call str%append(to_string(thickness)) if (len(this%get_label()) > 0) then call str%append(new_line('a')) call str%append("set cblabel offset 0,0.8") end if + else + call str%append(new_line('a')) + call str%append("set colorbox vertical") + call str%append(new_line('a')) + call str%append("set size ") + call str%append(to_string(sz(1))) + call str%append(",") + call str%append(to_string(sz(2))) + call str%append("; set origin ") + call str%append(to_string(origin(1))) + call str%append(",") + call str%append(to_string(origin(2))) + call str%append(new_line('a')) + call str%append("set colorbox user origin 0.9,") + call str%append(to_string(0.5 - 0.5 * length)) + call str%append(" size ") + call str%append(to_string(thickness)) + call str%append(",") + call str%append(to_string(length)) end if ! Border & Tic Marks @@ -262,6 +328,86 @@ subroutine cm_set_show_tics(this, x) this%m_showTics = x end subroutine +! ------------------------------------------------------------------------------ + pure function cm_get_colorbar_thickness(this) result(rst) + !! Gets the relative thickness of the colorbar. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32) :: rst + !! The thickness in [0.0, 1.0]; 0 uses GNUPLOT's default. + rst = this%m_colorbarThickness + end function + +! -------------------- + subroutine cm_set_colorbar_thickness(this, x) + !! Sets the relative colorbar thickness, clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), intent(in) :: x + !! The requested thickness; 0 uses GNUPLOT's default. + this%m_colorbarThickness = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_colorbar_length(this) result(rst) + !! Gets the relative length of the colorbar. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32) :: rst + !! The length in [0.0, 1.0]; 0 uses GNUPLOT's default. + rst = this%m_colorbarLength + end function + +! -------------------- + subroutine cm_set_colorbar_length(this, x) + !! Sets the relative colorbar length, clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), intent(in) :: x + !! The requested length; 0 uses GNUPLOT's default. + this%m_colorbarLength = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_axes_size(this) result(rst) + !! Gets the relative width and height of the axes. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32), dimension(2) :: rst + !! The [width, height], each in [0.0, 1.0]. + rst = this%m_axesSize + end function + +! -------------------- + subroutine cm_set_axes_size(this, x) + !! Sets the axes width and height, each clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), dimension(2), intent(in) :: x + !! The requested [width, height]. + this%m_axesSize = max(0.0, min(1.0, x)) + end subroutine + +! ------------------------------------------------------------------------------ + pure function cm_get_axes_origin(this) result(rst) + !! Gets the relative x-y coordinates of the axes origin. + class(colormap), intent(in) :: this + !! The colormap object. + real(real32), dimension(2) :: rst + !! The [x, y] coordinates, each in [0.0, 1.0]. + rst = this%m_axesOrigin + end function + +! -------------------- + subroutine cm_set_axes_origin(this, x) + !! Sets the axes origin coordinates, each clamped to [0.0, 1.0]. + class(colormap), intent(inout) :: this + !! The colormap object. + real(real32), dimension(2), intent(in) :: x + !! The requested [x, y] coordinates. + this%m_axesOrigin = max(0.0, min(1.0, x)) + end subroutine + ! ------------------------------------------------------------------------------ ! TO DO: ! - Set user-defined tic labels & limits (ref: http://gnuplot.sourceforge.net/demo_5.4/cerf.html) @@ -487,5 +633,29 @@ subroutine custom_final(this) end if end subroutine +! ****************************************************************************** +! SPECTRAL_COLORMAP MEMBERS +! ------------------------------------------------------------------------------ + function spcm_get_clr(this) result(x) + !! Gets the GNUPLOT string defining the color distribution. + class(spectral_colormap), intent(in) :: this + !! The spectral_colormap object. + character(len = :), allocatable :: x + !! The command string. + + type(string_builder) :: str + + call str%append("0 '#D53E4F',") + call str%append("1 '#F46D43',") + call str%append("2 '#FDAE61',") + call str%append("3 '#FEE08B',") + call str%append("4 '#E6F598',") + call str%append("5 '#ABDDA4',") + call str%append("6 '#66C2A5',") + call str%append("7 '#3288BD'") + + x = char(str%to_string()) + end function + ! ------------------------------------------------------------------------------ end module diff --git a/src/fplot_multiplot.f90 b/src/fplot_multiplot.f90 index 6dad1481..6ea6bb9c 100644 --- a/src/fplot_multiplot.f90 +++ b/src/fplot_multiplot.f90 @@ -34,6 +34,13 @@ module fplot_multiplot !! Has a title? class(terminal), pointer :: m_terminal => null() !! The GNUPLOT terminal object to target. + real(real32), private :: m_leftMargin = 0.12 + real(real32), private :: m_rightMargin = 0.95 + real(real32), private :: m_bottomMargin = 0.10 + real(real32), private :: m_topMargin = 0.95 + real(real32), private :: m_horizontalSpacing = 0.0 + real(real32), private :: m_verticalSpacing = 0.0 + logical, private :: m_useAutoMargins = .true. contains final :: mp_clean procedure, public :: get_command_string => mp_get_command @@ -54,6 +61,20 @@ module fplot_multiplot procedure, public :: get_font_size => mp_get_font_size procedure, public :: set_font_size => mp_set_font_size procedure, public :: set_window_size => mp_set_window_size + procedure, public :: get_left_margin => mp_get_left_margin + procedure, public :: set_left_margin => mp_set_left_margin + procedure, public :: get_right_margin => mp_get_right_margin + procedure, public :: set_right_margin => mp_set_right_margin + procedure, public :: get_top_margin => mp_get_top_margin + procedure, public :: set_top_margin => mp_set_top_margin + procedure, public :: get_bottom_margin => mp_get_bottom_margin + procedure, public :: set_bottom_margin => mp_set_bottom_margin + procedure, public :: get_horizontal_spacing => mp_get_horizontal_spacing + procedure, public :: set_horizontal_spacing => mp_set_horizontal_spacing + procedure, public :: get_vertical_spacing => mp_get_vertical_spacing + procedure, public :: set_vertical_spacing => mp_set_vertical_spacing + procedure, public :: get_use_auto_generated_margins => mp_get_use_auto_generated_margins + procedure, public :: set_use_auto_generated_margins => mp_set_use_auto_generated_margins end type contains @@ -87,6 +108,20 @@ function mp_get_command(this) result(x) call str%append(this%get_title()) call str%append('"') end if + if (.not.this%get_use_auto_generated_margins()) then + call str%append(" margins ") + call str%append(to_string(this%get_left_margin())) + call str%append(",") + call str%append(to_string(this%get_right_margin())) + call str%append(",") + call str%append(to_string(this%get_bottom_margin())) + call str%append(",") + call str%append(to_string(this%get_top_margin())) + end if + call str%append(" spacing ") + call str%append(to_string(this%get_horizontal_spacing())) + call str%append(",") + call str%append(to_string(this%get_vertical_spacing())) call str%append(new_line('a')) ! Write commands for each plot object @@ -506,8 +541,6 @@ subroutine mp_set_font_size(this, x) call term%set_font_size(x) end subroutine -! ****************************************************************************** -! ADDED AUG. 16, 2026 - V1.9.0 ! ------------------------------------------------------------------------------ subroutine mp_set_window_size(this, width, height) !! Sets the height and width of the plot window. @@ -524,5 +557,203 @@ subroutine mp_set_window_size(this, width, height) end if end subroutine +! ------------------------------------------------------------------------------ + pure function mp_get_left_margin(this) result(rst) + !! Gets the left margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_leftMargin + end function + +! -------------------- + subroutine mp_set_left_margin(this, x) + !! Sets the left margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_leftMargin = 0.0 + else if (x > 1.0) then + this%m_leftMargin = 1.0 + else + this%m_leftMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_right_margin(this) result(rst) + !! Gets the right margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_rightMargin + end function + +! -------------------- + subroutine mp_set_right_margin(this, x) + !! Sets the right margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_rightMargin = 0.0 + else if (x > 1.0) then + this%m_rightMargin = 1.0 + else + this%m_rightMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_top_margin(this) result(rst) + !! Gets the top margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_topMargin + end function + +! -------------------- + subroutine mp_set_top_margin(this, x) + !! Sets the top margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_topMargin = 0.0 + else if (x > 1.0) then + this%m_topMargin = 1.0 + else + this%m_topMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_bottom_margin(this) result(rst) + !! Gets the bottom margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The margin value. + rst = this%m_bottomMargin + end function + +! -------------------- + subroutine mp_set_bottom_margin(this, x) + !! Sets the bottom margin. The value exists in the range [0, 1]. This + !! margin is a global margin for the multiplot. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The margin value. This value will be clamped to the range + !! [0, 1]. + if (x < 0.0) then + this%m_bottomMargin = 0.0 + else if (x > 1.0) then + this%m_bottomMargin = 1.0 + else + this%m_bottomMargin = x + end if + this%m_useAutoMargins = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_horizontal_spacing(this) result(rst) + !! Gets the horizontal spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The spacing value. + rst = this%m_horizontalSpacing + end function + +! -------------------- + subroutine mp_set_horizontal_spacing(this, x) + !! Sets the horizontal spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The spacing value. This value will be clamped to zero if + !! a negative value is supplied. + if (x < 0.0) then + this%m_horizontalSpacing = 0.0 + else + this%m_horizontalSpacing = x + end if + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_vertical_spacing(this) result(rst) + !! Gets the vertical spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + real(real32) :: rst + !! The spacing value. + rst = this%m_verticalSpacing + end function + +! -------------------- + subroutine mp_set_vertical_spacing(this, x) + !! Sets the vertical spacing between plots. The value must be + !! zero or positive. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + real(real32), intent(in) :: x + !! The spacing value. This value will be clamped to zero if + !! a negative value is supplied. + if (x < 0.0) then + this%m_verticalSpacing = 0.0 + else + this%m_verticalSpacing = x + end if + end subroutine + +! ------------------------------------------------------------------------------ + pure function mp_get_use_auto_generated_margins(this) result(rst) + !! Gets a value determining if the global margins should be + !! automatically calculated. + class(multiplot), intent(in) :: this + !! The [[multiplot]] object. + logical :: rst + !! True if the margins should be automatically calculated; else, + !! false to use manually defined margins. + rst = this%m_useAutoMargins + end function + +! -------------------- + subroutine mp_set_use_auto_generated_margins(this, x) + !! Sets a value determining if the global margins should be + !! automatically calculated. + class(multiplot), intent(inout) :: this + !! The [[multiplot]] object. + logical, intent(in) :: x + !! True if the margins should be automatically calculated; else, + !! false to use manually defined margins. + this%m_useAutoMargins = x + end subroutine + ! ------------------------------------------------------------------------------ end module diff --git a/src/fplot_plot_axis.f90 b/src/fplot_plot_axis.f90 index 5d0de852..bb6a2e6b 100644 --- a/src/fplot_plot_axis.f90 +++ b/src/fplot_plot_axis.f90 @@ -79,6 +79,11 @@ module fplot_plot_axis !! Use manual (user-defined) tic labels? type(name_value_pair), private, allocatable, dimension(:) :: m_ticLabels !! A list of user-defined tic labels. + real(real32), private :: m_titleAngle = 0.0 + !! The angle at which to rotate the axis title. + logical, private :: m_autoCalcTitleAngle = .true. + !! True if GNUPLOT should automatically rotate the title; else, + !! false if the m_titleAngle property should determine the angle. contains procedure, public :: get_title => pa_get_title procedure, public :: set_title => pa_set_title @@ -123,6 +128,12 @@ module fplot_plot_axis procedure, public :: set_title_x_offset => pa_set_title_x_offset procedure, public :: get_title_y_offset => pa_get_title_y_offset procedure, public :: set_title_y_offset => pa_set_title_y_offset + procedure, public :: get_title_angle => pa_get_title_angle + procedure, public :: set_title_angle => pa_set_title_angle + procedure, public :: get_auto_calculate_title_angle => & + pa_get_auto_calc_title_angle + procedure, public :: set_auto_calculate_title_angle => & + pa_set_auto_calc_title_angle procedure, public :: get_use_manual_tic_labels => & pa_get_use_manual_tic_labels procedure, public :: set_use_manual_tic_labels => & @@ -387,6 +398,12 @@ function pa_get_cmd_string(this) result(txt) call str%append(this%get_title()) call str%append('"') + ! Rotation + if (.not.this%get_auto_calculate_title_angle()) then + call str%append(" rotate by ") + call str%append(to_string(this%get_title_angle())) + end if + ! Offsets if (this%get_title_x_offset() /= 0 .or. & this%get_title_y_offset() /= 0) & @@ -750,6 +767,51 @@ subroutine pa_set_title_y_offset(this, x) this%m_titleYOffset = x end subroutine +! ------------------------------------------------------------------------------ + pure function pa_get_title_angle(this) result(x) + !! Gets the axis title angle, in degrees. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + real(real32) :: x + !! The axis title angle, in degrees. + x = this%m_titleAngle + end function + +! -------------------- + subroutine pa_set_title_angle(this, x) + !! Sets the axis title angle, in degrees. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + real(real32), intent(in) :: x + !! The axis title angle, in degrees. + this%m_titleAngle = x + this%m_autoCalcTitleAngle = .false. + end subroutine + +! ------------------------------------------------------------------------------ + pure function pa_get_auto_calc_title_angle(this) result(x) + !! Gets whether GNUPLOT should automatically calculate the axis + !! title angle. + class(plot_axis), intent(in) :: this + !! The plot_axis object. + logical :: x + !! True if GNUPLOT should automatically calculate the title + !! angle; else, false. + x = this%m_autoCalcTitleAngle + end function + +! -------------------- + subroutine pa_set_auto_calc_title_angle(this, x) + !! Sets whether GNUPLOT should automatically calculate the axis + !! title angle. + class(plot_axis), intent(inout) :: this + !! The plot_axis object. + logical, intent(in) :: x + !! Set to true to automatically calculate the title angle; + !! else, set to false. + this%m_autoCalcTitleAngle = x + end subroutine + ! ------------------------------------------------------------------------------ pure function pa_get_use_manual_tic_labels(this) result(rst) !! Gets a value determining if manual tic labels should be used. diff --git a/src/fplot_triangulations_delaunay_2d.f90 b/src/fplot_triangulations_delaunay_2d.f90 index bf52fee8..0290065a 100644 --- a/src/fplot_triangulations_delaunay_2d.f90 +++ b/src/fplot_triangulations_delaunay_2d.f90 @@ -1,6 +1,6 @@ module fplot_triangulations_delaunay_2d use iso_fortran_env - use geompack + use delaunay use fplot_errors implicit none private diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8eb922d5..5a0230a8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,11 +2,14 @@ set(fplot_test_sources fplot_test.f90 fplot_3d_test.f90 fplot_arrow_test.f90 + fplot_colormap_test.f90 + fplot_delaunay_test.f90 ) find_package(fortran_test_helper QUIET) if (NOT fortran_test_helper_FOUND) include(FetchContent) + set(BUILD_TESTING OFF) FetchContent_Declare( fortran_test_helper GIT_TAG "origin/main" diff --git a/test/fplot_colormap_test.f90 b/test/fplot_colormap_test.f90 new file mode 100644 index 00000000..f5b91176 --- /dev/null +++ b/test/fplot_colormap_test.f90 @@ -0,0 +1,40 @@ +module fplot_colormap_test + use iso_fortran_env, only : real32 + use fplot_colormap, only : rainbow_colormap + implicit none +contains + function test_colormap_accessors() result(rst) + logical :: rst + type(rainbow_colormap) :: map + + rst = .false. + if (map%get_colorbar_thickness() /= 0.02) return + if (map%get_colorbar_length() /= 0.4) return + if (any(map%get_axes_size() /= [0.85, 0.85])) return + if (any(map%get_axes_origin() /= [0.05, 0.05])) return + + call map%set_colorbar_thickness(0.25) + call map%set_colorbar_length(0.75) + call map%set_axes_size([0.25, 0.75]) + call map%set_axes_origin([0.75, 0.25]) + if (map%get_colorbar_thickness() /= 0.25) return + if (map%get_colorbar_length() /= 0.75) return + if (any(map%get_axes_size() /= [0.25, 0.75])) return + if (any(map%get_axes_origin() /= [0.75, 0.25])) return + + call map%set_colorbar_thickness(-0.5) + call map%set_colorbar_length(1.5) + call map%set_axes_size([-0.5, 1.5]) + call map%set_axes_origin([1.5, -0.5]) + if (map%get_colorbar_thickness() /= 0.0) return + if (map%get_colorbar_length() /= 1.0) return + if (any(map%get_axes_size() /= [0.0, 1.0])) return + if (any(map%get_axes_origin() /= [1.0, 0.0])) return + + call map%set_colorbar_thickness(1.5) + call map%set_colorbar_length(-0.5) + if (map%get_colorbar_thickness() /= 1.0) return + if (map%get_colorbar_length() /= 0.0) return + rst = .true. + end function +end module \ No newline at end of file diff --git a/test/fplot_delaunay_test.f90 b/test/fplot_delaunay_test.f90 new file mode 100644 index 00000000..21c1b804 --- /dev/null +++ b/test/fplot_delaunay_test.f90 @@ -0,0 +1,126 @@ +module fplot_delaunay_test + use iso_fortran_env + use delaunay + use fplot_core + implicit none +contains +! ------------------------------------------------------------------------------ +function test_r8tris2_square() result(rst) + ! Arguments + logical :: rst + + ! Parameters + integer(int32), parameter :: npts = 4 + + ! Local Variables + real(real64) :: xy(2, npts) + integer(int32) :: ntri + integer(int32) :: tri(3, 2 * npts), nbr(3, 2 * npts) + + ! Initialization + rst = .true. + + ! Define the corners of a unit square + xy(:,1) = [0.0d0, 0.0d0] + xy(:,2) = [1.0d0, 0.0d0] + xy(:,3) = [1.0d0, 1.0d0] + xy(:,4) = [0.0d0, 1.0d0] + + ! Test + call r8tris2(npts, xy, ntri, tri, nbr) + + ! A convex quadrilateral should always produce exactly 2 triangles + if (ntri /= 2) then + rst = .false. + print "(A)", "TEST FAILED: test_r8tris2_square -1" + end if + + ! Every reported vertex index must be within the valid point range + if (any(tri(:,1:ntri) < 1) .or. any(tri(:,1:ntri) > npts)) then + rst = .false. + print "(A)", "TEST FAILED: test_r8tris2_square -2" + end if +end function + +! ------------------------------------------------------------------------------ +function test_r8tris2_triangle_count() result(rst) + ! Arguments + logical :: rst + + ! Parameters + integer(int32), parameter :: npts = 6 + + ! Local Variables + real(real64) :: xy(2, npts) + integer(int32) :: ntri + integer(int32) :: tri(3, 2 * npts), nbr(3, 2 * npts) + + ! Initialization + rst = .true. + + ! Define a set of points: 5 on a pentagon, and 1 in the center + xy(:,1) = [0.0d0, 1.0d0] + xy(:,2) = [0.951057d0, 0.309017d0] + xy(:,3) = [0.587785d0, -0.809017d0] + xy(:,4) = [-0.587785d0, -0.809017d0] + xy(:,5) = [-0.951057d0, 0.309017d0] + xy(:,6) = [0.0d0, 0.0d0] + + ! Test + call r8tris2(npts, xy, ntri, tri, nbr) + + ! For a point set with NB boundary points, the triangle count should + ! be 2 * NODE_NUM - NB - 2. Here, all 5 outer points lie on the + ! convex hull, so NB = 5, and the expected count is 2*6 - 5 - 2 = 5 + if (ntri /= 5) then + rst = .false. + print "(A)", "TEST FAILED: test_r8tris2_triangle_count -1" + end if +end function + +! ------------------------------------------------------------------------------ +function test_delaunay_tri_2d() result(rst) + ! Arguments + logical :: rst + + ! Parameters + integer(int32), parameter :: npts = 4 + real(real64), parameter :: x(npts) = [0.0d0, 1.0d0, 1.0d0, 0.0d0] + real(real64), parameter :: y(npts) = [0.0d0, 0.0d0, 1.0d0, 1.0d0] + + ! Local Variables + type(delaunay_tri_2d) :: tri + integer(int32) :: i + + ! Initialization + rst = .true. + call tri%create(x, y) + + ! Test + if (tri%get_point_count() /= npts) then + rst = .false. + print "(A)", "TEST FAILED: test_delaunay_tri_2d -1" + end if + + if (tri%get_triangle_count() /= 2) then + rst = .false. + print "(A)", "TEST FAILED: test_delaunay_tri_2d -2" + end if + + ! The center of the square must lie within one of the triangles + i = tri%find_triangle(0.5d0, 0.5d0) + if (i == -1) then + rst = .false. + print "(A)", "TEST FAILED: test_delaunay_tri_2d -3" + end if + + ! A point well outside the square must not be found in any triangle + i = tri%find_triangle(10.0d0, 10.0d0) + if (i /= -1) then + rst = .false. + print "(A)", "TEST FAILED: test_delaunay_tri_2d -4" + end if +end function + +! ------------------------------------------------------------------------------ +end module diff --git a/test/fplot_test.f90 b/test/fplot_test.f90 index e375e32d..135f6abe 100644 --- a/test/fplot_test.f90 +++ b/test/fplot_test.f90 @@ -1,6 +1,8 @@ program main use fplot_3d_test use fplot_arrow_test + use fplot_colormap_test + use fplot_delaunay_test implicit none ! Local Variables @@ -13,4 +15,16 @@ program main check = test_arrow() if (.not.check) stop 2 + + check = test_r8tris2_square() + if (.not.check) stop 3 + + check = test_r8tris2_triangle_count() + if (.not.check) stop 4 + + check = test_delaunay_tri_2d() + if (.not.check) stop 5 + + check = test_colormap_accessors() + if (.not.check) stop 6 end program \ No newline at end of file