From 329a032ac0bbbfe95b8eb6d56b04a3d4e7e666d2 Mon Sep 17 00:00:00 2001 From: Jason Christopherson Date: Tue, 16 Jun 2026 06:51:54 -0500 Subject: [PATCH 1/4] Implement datablocks --- src/fplot_filled_plot_data.f90 | 13 +++++- src/fplot_plot_2d.f90 | 25 +++++------ src/fplot_plot_3d.f90 | 25 +++++------ src/fplot_plot_data.f90 | 62 +++++++++++++++++++++++++++- src/fplot_plot_data_2d.f90 | 8 ++++ src/fplot_plot_data_3d.f90 | 4 ++ src/fplot_plot_data_bar.f90 | 17 +++++++- src/fplot_plot_data_box_whisker.f90 | 11 ++++- src/fplot_plot_data_error_bars.f90 | 32 +++++++++++++- src/fplot_plot_data_histogram.f90 | 7 +++- src/fplot_plot_data_tri_2d.f90 | 12 +++++- src/fplot_plot_polar.f90 | 22 ++++++---- src/fplot_surface_plot_data.f90 | 12 +++++- src/fplot_tri_surface_plot_data.f90 | 12 +++++- src/fplot_vector_field_plot_data.f90 | 13 +++++- 15 files changed, 223 insertions(+), 52 deletions(-) diff --git a/src/fplot_filled_plot_data.f90 b/src/fplot_filled_plot_data.f90 index 165adb3..01d40d1 100644 --- a/src/fplot_filled_plot_data.f90 +++ b/src/fplot_filled_plot_data.f90 @@ -85,14 +85,18 @@ function fpd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Establish filled data @@ -192,6 +196,11 @@ subroutine fpd_define_data(this, x, y, yc, err) 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) diff --git a/src/fplot_plot_2d.f90 b/src/fplot_plot_2d.f90 index 57812ee..9ec780f 100644 --- a/src/fplot_plot_2d.f90 +++ b/src/fplot_plot_2d.f90 @@ -296,27 +296,28 @@ function p2d_get_cmd(this) result(x) call str%append("unset jitter") end if - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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(", ") + 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 data to plot + ! 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(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") - ! if (i /= n) then - ! call str%append("e") - ! end if + call str%append(ptr%get_command_string()) + if (i /= n) call str%append(", ") end do ! End diff --git a/src/fplot_plot_3d.f90 b/src/fplot_plot_3d.f90 index 22aa7b7..51c351e 100644 --- a/src/fplot_plot_3d.f90 +++ b/src/fplot_plot_3d.f90 @@ -290,27 +290,28 @@ function p3d_get_cmd(this) result(x) call str%append("set mapping spherical") end if - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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(", ") + 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 data to plot + ! 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(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") - ! if (i /= n) then - ! call str%append("e") - ! end if + call str%append(ptr%get_command_string()) + if (i /= n) call str%append(", ") end do ! End diff --git a/src/fplot_plot_data.f90 b/src/fplot_plot_data.f90 index 5171745..6599df2 100644 --- a/src/fplot_plot_data.f90 +++ b/src/fplot_plot_data.f90 @@ -24,9 +24,16 @@ module fplot_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(pd_get_string_result), deferred, public :: get_data_string end type @@ -194,6 +201,53 @@ subroutine pd_set_name(this, txt) 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_number(r) + r = r * huge(count) + count = floor(r) + str = "PlotData" // to_string(count) + call this%set_datablock_name(char(str)) + end subroutine + ! ****************************************************************************** ! PLOT_DATA_COLORED ! ------------------------------------------------------------------------------ @@ -260,14 +314,18 @@ function spd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Lines, points, or filled diff --git a/src/fplot_plot_data_2d.f90 b/src/fplot_plot_data_2d.f90 index 8310bf0..5adce19 100644 --- a/src/fplot_plot_data_2d.f90 +++ b/src/fplot_plot_data_2d.f90 @@ -249,6 +249,10 @@ subroutine pd2d_set_data_1(this, x, y, c, ps, err) 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", & @@ -374,6 +378,10 @@ subroutine pd2d_set_data_2(this, y, err) 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) diff --git a/src/fplot_plot_data_3d.f90 b/src/fplot_plot_data_3d.f90 index eb879e6..1474524 100644 --- a/src/fplot_plot_data_3d.f90 +++ b/src/fplot_plot_data_3d.f90 @@ -283,6 +283,10 @@ subroutine pd3d_set_data_1(this, x, y, z, c, ps, err) 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", & diff --git a/src/fplot_plot_data_bar.f90 b/src/fplot_plot_data_bar.f90 index 1b1159a..2af7801 100644 --- a/src/fplot_plot_data_bar.f90 +++ b/src/fplot_plot_data_bar.f90 @@ -188,8 +188,9 @@ function pdb_get_cmd(this) result(x) ! Initialization call str%initialize() - ! Starting off... - call str%append(' "-" ') + ! Data Block + call str%append(" $") + call str%append(this%get_datablock_name()) ! Tic Labels if (this%get_use_labels() .and. allocated(this%m_barData) .and. & @@ -456,6 +457,10 @@ subroutine pdb_set_data_1_core(this, x, err) 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) @@ -492,6 +497,10 @@ subroutine pdb_set_data_2_core(this, labels, x, err) 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", & @@ -540,6 +549,10 @@ subroutine pdb_set_data_3_core(this, labels, x, fmt, err) 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", & diff --git a/src/fplot_plot_data_box_whisker.f90 b/src/fplot_plot_data_box_whisker.f90 index 79c56b8..b88f6f0 100644 --- a/src/fplot_plot_data_box_whisker.f90 +++ b/src/fplot_plot_data_box_whisker.f90 @@ -90,6 +90,10 @@ subroutine pdbw_define_data_xstring(this, x, boxmin, boxmax, whiskermin, & 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) @@ -121,9 +125,12 @@ function pdbw_get_cmd(this) result(rst) 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:xtic(1) with candlesticks') - call str%append(' "-" using ($0+1):2:3:4:5:(') + 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") diff --git a/src/fplot_plot_data_error_bars.f90 b/src/fplot_plot_data_error_bars.f90 index aab2560..e71c70a 100644 --- a/src/fplot_plot_data_error_bars.f90 +++ b/src/fplot_plot_data_error_bars.f90 @@ -67,14 +67,18 @@ function pde_get_cmd(this) result(cmd) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Color @@ -225,6 +229,10 @@ subroutine pde_define_x_err(this, x, y, xerr, err) 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", & @@ -284,6 +292,10 @@ subroutine pde_define_y_err(this, x, y, yerr, err) 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", & @@ -344,6 +356,10 @@ subroutine pde_define_xy_err(this, x, y, xerr, yerr, err) 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", & @@ -487,6 +503,10 @@ subroutine pde_define_x_err_lim(this, x, y, xmin, xmax, err) 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, & @@ -557,6 +577,10 @@ subroutine pde_define_y_err_lim(this, x, y, ymin, ymax, err) 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, & @@ -633,6 +657,10 @@ subroutine pde_define_xy_err_lim(this, x, y, xmin, xmax, ymin, & 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, & diff --git a/src/fplot_plot_data_histogram.f90 b/src/fplot_plot_data_histogram.f90 index e943ae3..ef12f2e 100644 --- a/src/fplot_plot_data_histogram.f90 +++ b/src/fplot_plot_data_histogram.f90 @@ -110,6 +110,10 @@ subroutine pdh_define_data(this, x, err) 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) @@ -162,7 +166,8 @@ function pdh_get_cmd(this) result(rst) type(color) :: clr ! Process - call str%append(' "-" ') + call str%append(" $") + call str%append(this%get_datablock_name()) call str%append(" with boxes ") ! Color diff --git a/src/fplot_plot_data_tri_2d.f90 b/src/fplot_plot_data_tri_2d.f90 index 703836e..4b7ddf2 100644 --- a/src/fplot_plot_data_tri_2d.f90 +++ b/src/fplot_plot_data_tri_2d.f90 @@ -146,14 +146,18 @@ function pdt2d_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Lines @@ -194,6 +198,10 @@ subroutine pdt2d_define_data(this, tri) 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() diff --git a/src/fplot_plot_polar.f90 b/src/fplot_plot_polar.f90 index ce171d3..c08d257 100644 --- a/src/fplot_plot_polar.f90 +++ b/src/fplot_plot_polar.f90 @@ -220,24 +220,28 @@ function plr_get_cmd(this) result(x) ! call str%append(lbl%get_command_string()) ! end do - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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(", ") + 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 data to plot + ! 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(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") + call str%append(ptr%get_command_string()) + if (i /= n) call str%append(", ") end do ! End diff --git a/src/fplot_surface_plot_data.f90 b/src/fplot_surface_plot_data.f90 index 914cf60..ce5ed02 100644 --- a/src/fplot_surface_plot_data.f90 +++ b/src/fplot_surface_plot_data.f90 @@ -192,14 +192,18 @@ function surfd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! PM3D or wireframe? @@ -278,6 +282,10 @@ subroutine surfd_set_data_1(this, x, y, z, err) 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", & diff --git a/src/fplot_tri_surface_plot_data.f90 b/src/fplot_tri_surface_plot_data.f90 index 3dcba63..692ce1b 100644 --- a/src/fplot_tri_surface_plot_data.f90 +++ b/src/fplot_tri_surface_plot_data.f90 @@ -141,14 +141,18 @@ function tspd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! PM3D or wireframe? @@ -198,6 +202,10 @@ subroutine tspd_define_data(this, tri) 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() diff --git a/src/fplot_vector_field_plot_data.f90 b/src/fplot_vector_field_plot_data.f90 index c4041e1..9c03b26 100644 --- a/src/fplot_vector_field_plot_data.f90 +++ b/src/fplot_vector_field_plot_data.f90 @@ -118,14 +118,18 @@ function vfpd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Property Definition @@ -208,6 +212,11 @@ subroutine vfpd_define_data(this, x, y, dx, dy, c, err) 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 From a946fe2a49695c033d8c43a7b5a5214c6ca49d48 Mon Sep 17 00:00:00 2001 From: Jason Christopherson Date: Tue, 16 Jun 2026 06:53:44 -0500 Subject: [PATCH 2/4] Clean up --- examples/triangle_mesh_surface_example.f90 | 4 ++-- examples/triangulation_2d_example.f90 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/triangle_mesh_surface_example.f90 b/examples/triangle_mesh_surface_example.f90 index deeb7bf..34920ff 100644 --- a/examples/triangle_mesh_surface_example.f90 +++ b/examples/triangle_mesh_surface_example.f90 @@ -33,10 +33,10 @@ program example ! Print the interpolated values print '(A)', "Interpolated Value:" - print '(AF0.3AF0.3AF0.3)', achar(9), xi, achar(9), yi, achar(9), zi + print '(A, F0.3, A, F0.3, A, F0.3)', achar(9), xi, achar(9), yi, achar(9), zi print '(A)', "Actual Values:" - print '(AF0.3AF0.3AF0.3)', achar(9), xi, achar(9), yi, achar(9), & + print '(A, F0.3, A, F0.3, A, F0.3)', achar(9), xi, achar(9), yi, achar(9), & sin(xi) + sin(yi) ! Generate the plot diff --git a/examples/triangulation_2d_example.f90 b/examples/triangulation_2d_example.f90 index d0745d2..bf4e867 100644 --- a/examples/triangulation_2d_example.f90 +++ b/examples/triangulation_2d_example.f90 @@ -27,7 +27,7 @@ program example call tri%create(x, y) ! Display the number of points and elements - print '(AI0AI0A)', "The triangulation consists of ", & + print '(A, I0, A, I0, A)', "The triangulation consists of ", & tri%get_point_count(), " points, and ", tri%get_triangle_count(), & " triangles." From 0218ad3c7f310a656fef675c7c8212bdb95ebdd4 Mon Sep 17 00:00:00 2001 From: Jason Christopherson Date: Tue, 16 Jun 2026 07:03:34 -0500 Subject: [PATCH 3/4] Update version info --- CMakeLists.txt | 2 +- fpm.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab88dc4..aa1a6c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.24) project( fplot LANGUAGES Fortran - VERSION 1.8.6 + VERSION 1.8.8 ) # Confgiure everything diff --git a/fpm.toml b/fpm.toml index e6c03d7..173f699 100644 --- a/fpm.toml +++ b/fpm.toml @@ -1,5 +1,5 @@ name = "fplot" -version = "1.8.6" +version = "1.8.8" license = "GPL-3.0" author = "Jason Christopherson" maintainer = "Jason Christopherson" From ec1e8e1de4f53f389c0a6c5fef0b11946e9f71e8 Mon Sep 17 00:00:00 2001 From: Jason Christopherson Date: Tue, 16 Jun 2026 07:04:17 -0500 Subject: [PATCH 4/4] Update documentation --- doc/index.html | 2 +- doc/interface/cm_get_string_result.html | 6 +- doc/interface/get_string_result.html | 6 +- doc/interface/operator(==).html | 6 +- doc/interface/operator(SLASH=).html | 6 +- doc/interface/pa_get_string_result.html | 6 +- doc/interface/pd_get_string_result.html | 6 +- doc/interface/simplify_polyline.html | 18 +- doc/interface/spd_get_int_value.html | 6 +- doc/interface/spd_get_string_result.html | 6 +- doc/interface/spd_get_value.html | 8 +- doc/interface/spd_set_value.html | 8 +- doc/interface/term_get_string_result.html | 6 +- doc/lists/files.html | 2 +- doc/lists/modules.html | 2 +- doc/lists/procedures.html | 2 +- doc/lists/types.html | 2 +- doc/module/fplot_arrow.html | 10 +- doc/module/fplot_colormap.html | 90 +- doc/module/fplot_colors.html | 10 +- doc/module/fplot_constants.html | 2 +- doc/module/fplot_core.html | 60 +- doc/module/fplot_core_routines.html | 10 +- doc/module/fplot_delaunay_tri_surface.html | 10 +- doc/module/fplot_errors.html | 18 +- doc/module/fplot_filled_plot_data.html | 33 +- doc/module/fplot_label.html | 8 +- doc/module/fplot_latex_terminal.html | 20 +- doc/module/fplot_legend.html | 14 +- doc/module/fplot_multiplot.html | 46 +- doc/module/fplot_plot.html | 56 +- doc/module/fplot_plot_2d.html | 46 +- doc/module/fplot_plot_3d.html | 46 +- doc/module/fplot_plot_axis.html | 30 +- doc/module/fplot_plot_bar.html | 38 +- doc/module/fplot_plot_data.html | 97 +- doc/module/fplot_plot_data_2d.html | 53 +- doc/module/fplot_plot_data_3d.html | 57 +- doc/module/fplot_plot_data_bar.html | 49 +- doc/module/fplot_plot_data_box_whisker.html | 33 +- doc/module/fplot_plot_data_error_bars.html | 29 +- doc/module/fplot_plot_data_histogram.html | 35 +- doc/module/fplot_plot_data_tri_2d.html | 39 +- doc/module/fplot_plot_object.html | 6 +- doc/module/fplot_plot_polar.html | 38 +- doc/module/fplot_png_terminal.html | 20 +- doc/module/fplot_qt_terminal.html | 18 +- doc/module/fplot_simplify.html | 24 +- doc/module/fplot_stats_plots.html | 40 +- doc/module/fplot_surface_plot.html | 40 +- doc/module/fplot_surface_plot_data.html | 43 +- doc/module/fplot_terminal.html | 24 +- doc/module/fplot_tri_surface_plot_data.html | 29 +- .../fplot_triangulations_delaunay_2d.html | 8 +- doc/module/fplot_vector_field_plot_data.html | 23 +- doc/module/fplot_windows_terminal.html | 16 +- doc/module/fplot_wxt_terminal.html | 18 +- doc/proc/linspace.html | 6 +- doc/proc/logspace.html | 6 +- doc/proc/meshgrid.html | 6 +- .../report_array_size_mismatch_error.html | 4 +- doc/proc/report_file_create_error.html | 8 +- .../report_matrix_size_mismatch_error.html | 4 +- doc/proc/report_memory_error.html | 6 +- doc/search.html | 2 +- doc/sourcefile/fplot_arrow.f90.html | 4 +- doc/sourcefile/fplot_colormap.f90.html | 2 +- doc/sourcefile/fplot_colors.f90.html | 2 +- doc/sourcefile/fplot_constants.f90.html | 2 +- doc/sourcefile/fplot_core.f90.html | 2 +- doc/sourcefile/fplot_core_routines.f90.html | 2 +- .../fplot_delaunay_tri_surface.f90.html | 4 +- doc/sourcefile/fplot_errors.f90.html | 2 +- .../fplot_filled_plot_data.f90.html | 241 +-- doc/sourcefile/fplot_label.f90.html | 2 +- doc/sourcefile/fplot_latex_terminal.f90.html | 2 +- doc/sourcefile/fplot_legend.f90.html | 4 +- doc/sourcefile/fplot_multiplot.f90.html | 4 +- doc/sourcefile/fplot_plot.f90.html | 4 +- doc/sourcefile/fplot_plot_2d.f90.html | 333 ++-- doc/sourcefile/fplot_plot_3d.f90.html | 377 ++--- doc/sourcefile/fplot_plot_axis.f90.html | 8 +- doc/sourcefile/fplot_plot_bar.f90.html | 2 +- doc/sourcefile/fplot_plot_data.f90.html | 1356 +++++++++-------- doc/sourcefile/fplot_plot_data_2d.f90.html | 418 ++--- doc/sourcefile/fplot_plot_data_3d.f90.html | 314 ++-- doc/sourcefile/fplot_plot_data_bar.f90.html | 775 +++++----- .../fplot_plot_data_box_whisker.f90.html | 577 +++---- .../fplot_plot_data_error_bars.f90.html | 1252 +++++++-------- .../fplot_plot_data_histogram.f90.html | 391 ++--- .../fplot_plot_data_tri_2d.f90.html | 258 ++-- doc/sourcefile/fplot_plot_object.f90.html | 2 +- doc/sourcefile/fplot_plot_polar.f90.html | 294 ++-- doc/sourcefile/fplot_png_terminal.f90.html | 2 +- doc/sourcefile/fplot_qt_terminal.f90.html | 2 +- doc/sourcefile/fplot_simplify.f90.html | 4 +- doc/sourcefile/fplot_stats_plots.f90.html | 2 +- doc/sourcefile/fplot_surface_plot.f90.html | 2 +- .../fplot_surface_plot_data.f90.html | 250 +-- doc/sourcefile/fplot_terminal.f90.html | 2 +- .../fplot_tri_surface_plot_data.f90.html | 140 +- .../fplot_triangulations_delaunay_2d.f90.html | 2 +- .../fplot_vector_field_plot_data.f90.html | 375 ++--- .../fplot_windows_terminal.f90.html | 2 +- doc/sourcefile/fplot_wxt_terminal.f90.html | 2 +- doc/src/fplot_filled_plot_data.f90 | 13 +- doc/src/fplot_plot_2d.f90 | 25 +- doc/src/fplot_plot_3d.f90 | 25 +- doc/src/fplot_plot_axis.f90 | 4 +- doc/src/fplot_plot_data.f90 | 62 +- doc/src/fplot_plot_data_2d.f90 | 8 + doc/src/fplot_plot_data_3d.f90 | 4 + doc/src/fplot_plot_data_bar.f90 | 17 +- doc/src/fplot_plot_data_box_whisker.f90 | 11 +- doc/src/fplot_plot_data_error_bars.f90 | 32 +- doc/src/fplot_plot_data_histogram.f90 | 7 +- doc/src/fplot_plot_data_tri_2d.f90 | 12 +- doc/src/fplot_plot_polar.f90 | 22 +- doc/src/fplot_surface_plot_data.f90 | 12 +- doc/src/fplot_tri_surface_plot_data.f90 | 12 +- doc/src/fplot_vector_field_plot_data.f90 | 13 +- doc/tipuesearch/tipuesearch_content.js | 2 +- doc/type/color.html | 2 +- doc/type/colormap.html | 22 +- doc/type/cool_colormap.html | 22 +- doc/type/correlation_plot.html | 44 +- doc/type/custom_colormap.html | 24 +- doc/type/delaunay_tri_2d.html | 4 +- doc/type/delaunay_tri_surface.html | 2 +- doc/type/earth_colormap.html | 22 +- doc/type/filled_plot_data.html | 209 ++- doc/type/grey_colormap.html | 22 +- doc/type/hot_colormap.html | 24 +- doc/type/latex_terminal.html | 32 +- doc/type/legend.html | 16 +- doc/type/multiplot.html | 66 +- doc/type/name_value_pair.html | 2 +- doc/type/parula_colormap.html | 24 +- doc/type/plot.html | 64 +- doc/type/plot_2d.html | 74 +- doc/type/plot_3d.html | 74 +- doc/type/plot_arrow.html | 8 +- doc/type/plot_axis.html | 16 +- doc/type/plot_bar.html | 72 +- doc/type/plot_data.html | 197 ++- doc/type/plot_data_2d.html | 249 ++- doc/type/plot_data_3d.html | 257 +++- doc/type/plot_data_bar.html | 241 ++- doc/type/plot_data_box_whisker.html | 209 ++- doc/type/plot_data_colored.html | 197 ++- doc/type/plot_data_error_bars.html | 201 ++- doc/type/plot_data_histogram.html | 213 ++- doc/type/plot_data_tri_2d.html | 217 ++- doc/type/plot_label.html | 6 +- doc/type/plot_object.html | 6 +- doc/type/plot_polar.html | 62 +- doc/type/png_terminal.html | 36 +- doc/type/qt_terminal.html | 34 +- doc/type/rainbow_colormap.html | 24 +- doc/type/scatter_plot_data.html | 225 ++- doc/type/surface_plot.html | 68 +- doc/type/surface_plot_data.html | 233 ++- doc/type/terminal.html | 34 +- doc/type/tri_surface_plot_data.html | 209 ++- doc/type/vector_field_plot_data.html | 189 ++- doc/type/windows_terminal.html | 30 +- doc/type/wxt_terminal.html | 34 +- doc/type/x_axis.html | 16 +- doc/type/y2_axis.html | 16 +- doc/type/y_axis.html | 16 +- doc/type/z_axis.html | 16 +- 171 files changed, 8174 insertions(+), 5032 deletions(-) diff --git a/doc/index.html b/doc/index.html index 11ac89d..2671874 100644 --- a/doc/index.html +++ b/doc/index.html @@ -140,7 +140,7 @@

Derived Types

Documentation generated by FORD - on 2026-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/cm_get_string_result.html b/doc/interface/cm_get_string_result.html index ad06c89..1e68548 100644 --- a/doc/interface/cm_get_string_result.html +++ b/doc/interface/cm_get_string_result.html @@ -153,7 +153,7 @@

Arguments

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

Arguments

-

Return Value character(len=:),allocatable

+

Return Value character(len=:),allocatable

The string.

Description

Retrieves a string result from a colormap object.

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

Description

Documentation generated by FORD - on 2026-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/get_string_result.html b/doc/interface/get_string_result.html index e771d51..b71853f 100644 --- a/doc/interface/get_string_result.html +++ b/doc/interface/get_string_result.html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/operator(==).html b/doc/interface/operator(==).html index bca2605..3b76f3d 100644 --- a/doc/interface/operator(==).html +++ b/doc/interface/operator(==).html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/operator(SLASH=).html b/doc/interface/operator(SLASH=).html index 00ac285..ca591c6 100644 --- a/doc/interface/operator(SLASH=).html +++ b/doc/interface/operator(SLASH=).html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/pa_get_string_result.html b/doc/interface/pa_get_string_result.html index 9201391..cada3b7 100644 --- a/doc/interface/pa_get_string_result.html +++ b/doc/interface/pa_get_string_result.html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/pd_get_string_result.html b/doc/interface/pd_get_string_result.html index 079899b..4ca3c12 100644 --- a/doc/interface/pd_get_string_result.html +++ b/doc/interface/pd_get_string_result.html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/simplify_polyline.html b/doc/interface/simplify_polyline.html index 2d6b402..23e554d 100644 --- a/doc/interface/simplify_polyline.html +++ b/doc/interface/simplify_polyline.html @@ -172,7 +172,7 @@

Arguments

- + real(kind=real64), intent(in), @@ -188,7 +188,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), @@ -331,7 +331,7 @@

Arguments

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

Arguments

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

Documentation generated by FORD - on 2026-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/spd_get_int_value.html b/doc/interface/spd_get_int_value.html index 784297d..2c8553f 100644 --- a/doc/interface/spd_get_int_value.html +++ b/doc/interface/spd_get_int_value.html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/spd_get_string_result.html b/doc/interface/spd_get_string_result.html index 0e27b5f..0ab27a1 100644 --- a/doc/interface/spd_get_string_result.html +++ b/doc/interface/spd_get_string_result.html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/spd_get_value.html b/doc/interface/spd_get_value.html index 5afe452..1600882 100644 --- a/doc/interface/spd_get_value.html +++ b/doc/interface/spd_get_value.html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/spd_set_value.html b/doc/interface/spd_set_value.html index b4996f8..fd8cb2a 100644 --- a/doc/interface/spd_set_value.html +++ b/doc/interface/spd_set_value.html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/interface/term_get_string_result.html b/doc/interface/term_get_string_result.html index 52a31ab..f8a5449 100644 --- a/doc/interface/term_get_string_result.html +++ b/doc/interface/term_get_string_result.html @@ -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-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/lists/files.html b/doc/lists/files.html index ec3f886..9ee89b2 100644 --- a/doc/lists/files.html +++ b/doc/lists/files.html @@ -244,7 +244,7 @@

Source Files

Documentation generated by FORD - on 2026-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/lists/modules.html b/doc/lists/modules.html index 1eb4e79..25c9107 100644 --- a/doc/lists/modules.html +++ b/doc/lists/modules.html @@ -289,7 +289,7 @@

Modules

Documentation generated by FORD - on 2026-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/lists/procedures.html b/doc/lists/procedures.html index 63da867..7ad9daa 100644 --- a/doc/lists/procedures.html +++ b/doc/lists/procedures.html @@ -198,7 +198,7 @@

Procedures

Documentation generated by FORD - on 2026-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/lists/types.html b/doc/lists/types.html index 0b588d8..8774fcd 100644 --- a/doc/lists/types.html +++ b/doc/lists/types.html @@ -382,7 +382,7 @@

Derived Types

Documentation generated by FORD - on 2026-06-14 08:02

+ on 2026-06-16 07:03


diff --git a/doc/module/fplot_arrow.html b/doc/module/fplot_arrow.html index b7365fc..b7c2dc3 100644 --- a/doc/module/fplot_arrow.html +++ b/doc/module/fplot_arrow.html @@ -74,7 +74,7 @@

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

    Uses

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

      Type-Bound Procedures

      procedure, public :: - get_command_string => par_get_cmd + get_command_string => par_get_cmd @@ -351,7 +351,7 @@

      Type-Bound Procedures

      Documentation generated by FORD - on 2026-06-14 08:02

      + on 2026-06-16 07:03


      diff --git a/doc/module/fplot_colormap.html b/doc/module/fplot_colormap.html index 8d92f56..98d3781 100644 --- a/doc/module/fplot_colormap.html +++ b/doc/module/fplot_colormap.html @@ -168,12 +168,12 @@

      Uses

      • @@ -216,7 +216,7 @@

        Arguments

        - + class(colormap), intent(in) @@ -273,12 +273,12 @@

        Type-Bound Procedures

        procedure, public :: - get_command_string => cm_get_cmd + get_command_string => cm_get_cmd procedure, public :: - get_draw_border => cm_get_draw_border + get_draw_border => cm_get_draw_border @@ -288,7 +288,7 @@

        Type-Bound Procedures

        procedure, public :: - get_label => cm_get_label + get_label => cm_get_label @@ -298,7 +298,7 @@

        Type-Bound Procedures

        procedure, public :: - set_draw_border => cm_set_draw_border + set_draw_border => cm_set_draw_border @@ -308,7 +308,7 @@

        Type-Bound Procedures

        procedure, public :: - set_label => cm_set_label + set_label => cm_set_label @@ -346,12 +346,12 @@

        Type-Bound Procedures

        procedure, public :: - get_command_string => cm_get_cmd + get_command_string => cm_get_cmd procedure, public :: - get_draw_border => cm_get_draw_border + get_draw_border => cm_get_draw_border @@ -361,7 +361,7 @@

        Type-Bound Procedures

        procedure, public :: - get_label => cm_get_label + get_label => cm_get_label @@ -371,7 +371,7 @@

        Type-Bound Procedures

        procedure, public :: - set_draw_border => cm_set_draw_border + set_draw_border => cm_set_draw_border @@ -381,7 +381,7 @@

        Type-Bound Procedures

        procedure, public :: - set_label => cm_set_label + set_label => cm_set_label @@ -434,12 +434,12 @@

        Type-Bound Procedures

        procedure, public :: - get_command_string => cm_get_cmd + get_command_string => cm_get_cmd procedure, public :: - get_draw_border => cm_get_draw_border + get_draw_border => cm_get_draw_border @@ -449,7 +449,7 @@

        Type-Bound Procedures

        procedure, public :: - get_label => cm_get_label + get_label => cm_get_label @@ -464,7 +464,7 @@

        Type-Bound Procedures

        procedure, public :: - set_draw_border => cm_set_draw_border + set_draw_border => cm_set_draw_border @@ -474,7 +474,7 @@

        Type-Bound Procedures

        procedure, public :: - set_label => cm_set_label + set_label => cm_set_label @@ -512,12 +512,12 @@

        Type-Bound Procedures

        procedure, public :: - get_command_string => cm_get_cmd + get_command_string => cm_get_cmd procedure, public :: - get_draw_border => cm_get_draw_border + get_draw_border => cm_get_draw_border @@ -527,7 +527,7 @@

        Type-Bound Procedures

        procedure, public :: - get_label => cm_get_label + get_label => cm_get_label @@ -537,7 +537,7 @@

        Type-Bound Procedures

        procedure, public :: - set_draw_border => cm_set_draw_border + set_draw_border => cm_set_draw_border @@ -547,7 +547,7 @@

        Type-Bound Procedures

        procedure, public :: - set_label => cm_set_label + set_label => cm_set_label @@ -585,12 +585,12 @@

        Type-Bound Procedures

        procedure, public :: - get_command_string => cm_get_cmd + get_command_string => cm_get_cmd procedure, public :: - get_draw_border => cm_get_draw_border + get_draw_border => cm_get_draw_border @@ -600,7 +600,7 @@

        Type-Bound Procedures

        procedure, public :: - get_label => cm_get_label + get_label => cm_get_label @@ -610,7 +610,7 @@

        Type-Bound Procedures

        procedure, public :: - set_draw_border => cm_set_draw_border + set_draw_border => cm_set_draw_border @@ -620,7 +620,7 @@

        Type-Bound Procedures

        procedure, public :: - set_label => cm_set_label + set_label => cm_set_label @@ -658,12 +658,12 @@

        Type-Bound Procedures

        procedure, public :: - get_command_string => cm_get_cmd + get_command_string => cm_get_cmd procedure, public :: - get_draw_border => cm_get_draw_border + get_draw_border => cm_get_draw_border @@ -673,7 +673,7 @@

        Type-Bound Procedures

        procedure, public :: - get_label => cm_get_label + get_label => cm_get_label @@ -683,7 +683,7 @@

        Type-Bound Procedures

        procedure, public :: - set_draw_border => cm_set_draw_border + set_draw_border => cm_set_draw_border @@ -693,7 +693,7 @@

        Type-Bound Procedures

        procedure, public :: - set_label => cm_set_label + set_label => cm_set_label @@ -731,12 +731,12 @@

        Type-Bound Procedures

        procedure, public :: - get_command_string => cm_get_cmd + get_command_string => cm_get_cmd procedure, public :: - get_draw_border => cm_get_draw_border + get_draw_border => cm_get_draw_border @@ -746,7 +746,7 @@

        Type-Bound Procedures

        procedure, public :: - get_label => cm_get_label + get_label => cm_get_label @@ -756,7 +756,7 @@

        Type-Bound Procedures

        procedure, public :: - set_draw_border => cm_set_draw_border + set_draw_border => cm_set_draw_border @@ -766,7 +766,7 @@

        Type-Bound Procedures

        procedure, public :: - set_label => cm_set_label + set_label => cm_set_label @@ -804,12 +804,12 @@

        Type-Bound Procedures

        procedure, public :: - get_command_string => cm_get_cmd + get_command_string => cm_get_cmd procedure, public :: - get_draw_border => cm_get_draw_border + get_draw_border => cm_get_draw_border @@ -819,7 +819,7 @@

        Type-Bound Procedures

        procedure, public :: - get_label => cm_get_label + get_label => cm_get_label @@ -829,7 +829,7 @@

        Type-Bound Procedures

        procedure, public :: - set_draw_border => cm_set_draw_border + set_draw_border => cm_set_draw_border @@ -839,7 +839,7 @@

        Type-Bound Procedures

        procedure, public :: - set_label => cm_set_label + set_label => cm_set_label @@ -874,7 +874,7 @@

        Type-Bound Procedures

        Documentation generated by FORD - on 2026-06-14 08:02

        + on 2026-06-16 07:03


        diff --git a/doc/module/fplot_colors.html b/doc/module/fplot_colors.html index 98b2e78..9b7c822 100644 --- a/doc/module/fplot_colors.html +++ b/doc/module/fplot_colors.html @@ -555,7 +555,7 @@

        Arguments

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

        Arguments

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

        Arguments

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

        Arguments

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

        Type-Bound Procedures

        Documentation generated by FORD - on 2026-06-14 08:02

        + on 2026-06-16 07:03


        diff --git a/doc/module/fplot_constants.html b/doc/module/fplot_constants.html index 5cc7dbb..700c5e2 100644 --- a/doc/module/fplot_constants.html +++ b/doc/module/fplot_constants.html @@ -1283,7 +1283,7 @@

        Variables

        Documentation generated by FORD - on 2026-06-14 08:02

        + on 2026-06-16 07:03


        diff --git a/doc/module/fplot_core.html b/doc/module/fplot_core.html index fbd9136..ce3e231 100644 --- a/doc/module/fplot_core.html +++ b/doc/module/fplot_core.html @@ -145,43 +145,43 @@

        Uses

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

        Uses

        Documentation generated by FORD - on 2026-06-14 08:02

        + on 2026-06-16 07:03


        diff --git a/doc/module/fplot_core_routines.html b/doc/module/fplot_core_routines.html index 90ebd7d..a2d3cf0 100644 --- a/doc/module/fplot_core_routines.html +++ b/doc/module/fplot_core_routines.html @@ -220,7 +220,7 @@

        Arguments

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

        Arguments

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

        Arguments

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

        Arguments

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

        Documentation generated by FORD - on 2026-06-14 08:02

        + on 2026-06-16 07:03


        diff --git a/doc/module/fplot_delaunay_tri_surface.html b/doc/module/fplot_delaunay_tri_surface.html index f774478..c6f69d5 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
      • 134 statements + title=" 1.7% of total for modules and submodules.">134 statements
      • @@ -150,11 +150,11 @@

        Uses

        @@ -266,7 +266,7 @@

        Type-Bound Procedures

        Documentation generated by FORD - on 2026-06-14 08:02

        + on 2026-06-16 07:03


        diff --git a/doc/module/fplot_errors.html b/doc/module/fplot_errors.html index 76050d4..8f5b613 100644 --- a/doc/module/fplot_errors.html +++ b/doc/module/fplot_errors.html @@ -168,8 +168,8 @@

        Uses

        @@ -311,7 +311,7 @@

        Arguments

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

        Arguments

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

        Arguments

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

        Arguments

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

        Arguments

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

        Arguments

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

        Arguments

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

        Arguments

        Documentation generated by FORD - on 2026-06-14 08:02

        + on 2026-06-16 07:03


        diff --git a/doc/module/fplot_filled_plot_data.html b/doc/module/fplot_filled_plot_data.html index 4b78336..5e24130 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
      • 120 statements + title=" 1.6% of total for modules and submodules.">125 statements
      • @@ -150,11 +150,11 @@

        Uses

        • @@ -192,12 +192,17 @@

          Type-Bound Procedures

          procedure, public :: - define_data => fpd_define_data + 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 + get_axes_string => fpd_get_axes_cmd @@ -207,7 +212,7 @@

          Type-Bound Procedures

          procedure, public :: - get_command_string => fpd_get_cmd + get_command_string => fpd_get_cmd @@ -217,7 +222,12 @@

          Type-Bound Procedures

          procedure, public :: - get_draw_against_y2 => fpd_get_draw_against_y2 + get_datablock_name => pd_get_datablock_name + + + + procedure, public :: + get_draw_against_y2 => fpd_get_draw_against_y2 @@ -237,7 +247,12 @@

          Type-Bound Procedures

          procedure, public :: - set_draw_against_y2 => fpd_set_draw_against_y2 + set_datablock_name => pd_set_datablock_name + + + + procedure, public :: + set_draw_against_y2 => fpd_set_draw_against_y2 @@ -277,7 +292,7 @@

          Type-Bound Procedures

          Documentation generated by FORD - on 2026-06-14 08:02

          + on 2026-06-16 07:03


          diff --git a/doc/module/fplot_label.html b/doc/module/fplot_label.html index 9f119d1..aefeed2 100644 --- a/doc/module/fplot_label.html +++ b/doc/module/fplot_label.html @@ -150,10 +150,10 @@

          Uses

          @@ -195,7 +195,7 @@

          Type-Bound Procedures

          procedure, public :: - get_command_string => lbl_get_cmd + get_command_string => lbl_get_cmd @@ -260,7 +260,7 @@

          Type-Bound Procedures

          Documentation generated by FORD - on 2026-06-14 08:02

          + on 2026-06-16 07:03


          diff --git a/doc/module/fplot_latex_terminal.html b/doc/module/fplot_latex_terminal.html index abebf37..7c2d43f 100644 --- a/doc/module/fplot_latex_terminal.html +++ b/doc/module/fplot_latex_terminal.html @@ -150,10 +150,10 @@

          Uses

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

          Type-Bound Procedures

          procedure, public :: - get_command_string => tex_get_command_string + get_command_string => tex_get_command_string @@ -200,12 +200,12 @@

          Type-Bound Procedures

          procedure, public :: - get_font_name => term_get_font_name + get_font_name => term_get_font_name procedure, public :: - get_font_size => term_get_font_size + get_font_size => term_get_font_size @@ -220,7 +220,7 @@

          Type-Bound Procedures

          procedure, public :: - get_title => term_get_title + get_title => term_get_title @@ -240,12 +240,12 @@

          Type-Bound Procedures

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

          Type-Bound Procedures

          procedure, public :: - set_title => term_set_title + set_title => term_set_title @@ -295,7 +295,7 @@

          Type-Bound Procedures

          Documentation generated by FORD - on 2026-06-14 08:02

          + on 2026-06-16 07:03


          diff --git a/doc/module/fplot_legend.html b/doc/module/fplot_legend.html index cf79967..3b76596 100644 --- a/doc/module/fplot_legend.html +++ b/doc/module/fplot_legend.html @@ -74,7 +74,7 @@

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

          Uses

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

          Type-Bound Procedures

          procedure, public :: - get_command_string => leg_get_command_txt + get_command_string => leg_get_command_txt procedure, public :: - get_draw_border => leg_get_box + get_draw_border => leg_get_box @@ -230,7 +230,7 @@

          Type-Bound Procedures

          procedure, public :: - set_draw_border => leg_set_box + set_draw_border => leg_set_box @@ -290,7 +290,7 @@

          Type-Bound Procedures

          Documentation generated by FORD - on 2026-06-14 08:02

          + on 2026-06-16 07:03


          diff --git a/doc/module/fplot_multiplot.html b/doc/module/fplot_multiplot.html index 8651fdc..a99d877 100644 --- a/doc/module/fplot_multiplot.html +++ b/doc/module/fplot_multiplot.html @@ -74,7 +74,7 @@

          fplot_multiplot
        • 304 statements + title=" 3.9% of total for modules and submodules.">304 statements
        • @@ -150,19 +150,19 @@

          Uses

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

            Components

            - + class(terminal), public, @@ -240,12 +240,12 @@

            Type-Bound Procedures

            procedure, public :: - draw => mp_draw + draw => mp_draw procedure, public :: - get => mp_get + get => mp_get @@ -255,17 +255,17 @@

            Type-Bound Procedures

            procedure, public :: - get_command_string => mp_get_command + get_command_string => mp_get_command procedure, public :: - get_font_name => mp_get_font + get_font_name => mp_get_font procedure, public :: - get_font_size => mp_get_font_size + get_font_size => mp_get_font_size @@ -280,47 +280,47 @@

            Type-Bound Procedures

            procedure, public :: - get_terminal => mp_get_term + get_terminal => mp_get_term procedure, public :: - get_title => mp_get_title + get_title => mp_get_title procedure, public :: - initialize => mp_init + initialize => mp_init procedure, public :: - is_title_defined => mp_has_title + is_title_defined => mp_has_title procedure, public :: - save_file => mp_save + save_file => mp_save procedure, public :: - set => mp_set + set => mp_set procedure, public :: - set_font_name => mp_set_font + set_font_name => mp_set_font procedure, public :: - set_font_size => mp_set_font_size + set_font_size => mp_set_font_size procedure, public :: - set_title => mp_set_title + set_title => mp_set_title @@ -350,7 +350,7 @@

            Type-Bound Procedures

            Documentation generated by FORD - on 2026-06-14 08:02

            + on 2026-06-16 07:03


            diff --git a/doc/module/fplot_plot.html b/doc/module/fplot_plot.html index 5f93dcf..a8563ac 100644 --- a/doc/module/fplot_plot.html +++ b/doc/module/fplot_plot.html @@ -74,7 +74,7 @@

            fplot_plot
          • 562 statements + title=" 7.2% of total for modules and submodules.">562 statements
          • @@ -150,24 +150,24 @@

            Uses

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

              Type-Bound Procedures

              procedure, public :: - draw => plt_draw + draw => plt_draw @@ -230,7 +230,7 @@

              Type-Bound Procedures

              procedure, public :: - get => plt_get + get => plt_get @@ -260,7 +260,7 @@

              Type-Bound Procedures

              procedure, public :: - get_command_string => plt_get_cmd + get_command_string => plt_get_cmd @@ -275,17 +275,17 @@

              Type-Bound Procedures

              procedure, public :: - get_font_name => plt_get_font + get_font_name => plt_get_font procedure, public :: - get_font_size => plt_get_font_size + get_font_size => plt_get_font_size procedure, public :: - get_label => plt_get_label + get_label => plt_get_label @@ -320,7 +320,7 @@

              Type-Bound Procedures

              procedure, public :: - get_terminal => plt_get_term + get_terminal => plt_get_term @@ -330,7 +330,7 @@

              Type-Bound Procedures

              procedure, public :: - get_title => plt_get_title + get_title => plt_get_title @@ -340,12 +340,12 @@

              Type-Bound Procedures

              procedure, public :: - initialize => plt_init + initialize => plt_init procedure, public :: - is_title_defined => plt_has_title + is_title_defined => plt_has_title @@ -380,7 +380,7 @@

              Type-Bound Procedures

              procedure, public :: - save_file => plt_save + save_file => plt_save @@ -415,17 +415,17 @@

              Type-Bound Procedures

              procedure, public :: - set_font_name => plt_set_font + set_font_name => plt_set_font procedure, public :: - set_font_size => plt_set_font_size + set_font_size => plt_set_font_size procedure, public :: - set_label => plt_set_label + set_label => plt_set_label @@ -455,7 +455,7 @@

              Type-Bound Procedures

              procedure, public :: - set_title => plt_set_title + set_title => plt_set_title @@ -490,7 +490,7 @@

              Type-Bound Procedures

              Documentation generated by FORD - on 2026-06-14 08:02

              + on 2026-06-16 07:03


              diff --git a/doc/module/fplot_plot_2d.html b/doc/module/fplot_plot_2d.html index 00a9163..c3a020e 100644 --- a/doc/module/fplot_plot_2d.html +++ b/doc/module/fplot_plot_2d.html @@ -74,7 +74,7 @@

              fplot_plot_2d
            • 288 statements + title=" 3.8% of total for modules and submodules.">292 statements
            • @@ -150,13 +150,13 @@

              Uses

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

                Type-Bound Procedures

                procedure, public :: - draw => plt_draw + draw => plt_draw @@ -228,7 +228,7 @@

                Type-Bound Procedures

                procedure, public :: - get => plt_get + get => plt_get @@ -258,7 +258,7 @@

                Type-Bound Procedures

                procedure, public :: - get_command_string => p2d_get_cmd + get_command_string => p2d_get_cmd @@ -273,12 +273,12 @@

                Type-Bound Procedures

                procedure, public :: - get_font_name => plt_get_font + get_font_name => plt_get_font procedure, public :: - get_font_size => plt_get_font_size + get_font_size => plt_get_font_size @@ -293,7 +293,7 @@

                Type-Bound Procedures

                procedure, public :: - get_label => plt_get_label + get_label => plt_get_label @@ -333,7 +333,7 @@

                Type-Bound Procedures

                procedure, public :: - get_terminal => plt_get_term + get_terminal => plt_get_term @@ -343,7 +343,7 @@

                Type-Bound Procedures

                procedure, public :: - get_title => plt_get_title + get_title => plt_get_title @@ -363,7 +363,7 @@

                Type-Bound Procedures

                procedure, public :: - get_x_axis => p2d_get_x_axis + get_x_axis => p2d_get_x_axis @@ -373,17 +373,17 @@

                Type-Bound Procedures

                procedure, public :: - get_y_axis => p2d_get_y_axis + get_y_axis => p2d_get_y_axis procedure, public :: - initialize => p2d_init + initialize => p2d_init procedure, public :: - is_title_defined => plt_has_title + is_title_defined => plt_has_title @@ -418,7 +418,7 @@

                Type-Bound Procedures

                procedure, public :: - save_file => plt_save + save_file => plt_save @@ -453,12 +453,12 @@

                Type-Bound Procedures

                procedure, public :: - set_font_name => plt_set_font + set_font_name => plt_set_font procedure, public :: - set_font_size => plt_set_font_size + set_font_size => plt_set_font_size @@ -473,7 +473,7 @@

                Type-Bound Procedures

                procedure, public :: - set_label => plt_set_label + set_label => plt_set_label @@ -508,7 +508,7 @@

                Type-Bound Procedures

                procedure, public :: - set_title => plt_set_title + set_title => plt_set_title @@ -553,7 +553,7 @@

                Type-Bound Procedures

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/module/fplot_plot_3d.html b/doc/module/fplot_plot_3d.html index 6cf72b1..054f657 100644 --- a/doc/module/fplot_plot_3d.html +++ b/doc/module/fplot_plot_3d.html @@ -74,7 +74,7 @@

                fplot_plot_3d
              • 286 statements + title=" 3.7% of total for modules and submodules.">290 statements
              • @@ -150,14 +150,14 @@

                Uses

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

                Type-Bound Procedures

                procedure, public :: - draw => plt_draw + draw => plt_draw @@ -214,7 +214,7 @@

                Type-Bound Procedures

                procedure, public :: - get => plt_get + get => plt_get @@ -249,7 +249,7 @@

                Type-Bound Procedures

                procedure, public :: - get_command_string => pb_get_cmd + get_command_string => pb_get_cmd @@ -264,12 +264,12 @@

                Type-Bound Procedures

                procedure, public :: - get_font_name => plt_get_font + get_font_name => plt_get_font procedure, public :: - get_font_size => plt_get_font_size + get_font_size => plt_get_font_size @@ -284,7 +284,7 @@

                Type-Bound Procedures

                procedure, public :: - get_label => plt_get_label + get_label => plt_get_label @@ -324,7 +324,7 @@

                Type-Bound Procedures

                procedure, public :: - get_terminal => plt_get_term + get_terminal => plt_get_term @@ -334,7 +334,7 @@

                Type-Bound Procedures

                procedure, public :: - get_title => plt_get_title + get_title => plt_get_title @@ -354,7 +354,7 @@

                Type-Bound Procedures

                procedure, public :: - get_x_axis => p2d_get_x_axis + get_x_axis => p2d_get_x_axis @@ -364,17 +364,17 @@

                Type-Bound Procedures

                procedure, public :: - get_y_axis => p2d_get_y_axis + get_y_axis => p2d_get_y_axis procedure, public :: - initialize => p2d_init + initialize => p2d_init procedure, public :: - is_title_defined => plt_has_title + is_title_defined => plt_has_title @@ -409,7 +409,7 @@

                Type-Bound Procedures

                procedure, public :: - save_file => plt_save + save_file => plt_save @@ -449,12 +449,12 @@

                Type-Bound Procedures

                procedure, public :: - set_font_name => plt_set_font + set_font_name => plt_set_font procedure, public :: - set_font_size => plt_set_font_size + set_font_size => plt_set_font_size @@ -469,7 +469,7 @@

                Type-Bound Procedures

                procedure, public :: - set_label => plt_set_label + set_label => plt_set_label @@ -504,7 +504,7 @@

                Type-Bound Procedures

                procedure, public :: - set_title => plt_set_title + set_title => plt_set_title @@ -549,7 +549,7 @@

                Type-Bound Procedures

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/module/fplot_plot_data.html b/doc/module/fplot_plot_data.html index 867e0e2..27317ea 100644 --- a/doc/module/fplot_plot_data.html +++ b/doc/module/fplot_plot_data.html @@ -74,7 +74,7 @@

                fplot_plot_data
              • 344 statements + title=" 4.8% of total for modules and submodules.">376 statements
              • @@ -167,12 +167,12 @@

                Uses

                • @@ -215,7 +215,7 @@

                  Arguments

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

                  Arguments

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

                  Arguments

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

                  Arguments

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

                  Arguments

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

                  Arguments

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

                  Arguments

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

                  Arguments

                  - + real(kind=real64), intent(in) @@ -517,14 +517,24 @@

                  Type-Bound Procedures

                  + + + + + get_command_string + get_data_string + + + + @@ -534,6 +544,11 @@

                  Type-Bound Procedures

                  + + + + @@ -562,17 +577,27 @@

                  Type-Bound Procedures

                  + + + + + get_command_string + get_data_string + + + + @@ -592,6 +617,11 @@

                  Type-Bound Procedures

                  + + + + @@ -623,9 +653,14 @@

                  Type-Bound Procedures

                  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 :: + set_datablock_name => pd_set_datablock_name
                  procedure, public :: set_name => pd_set_name
                  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 :: + set_datablock_name => pd_set_datablock_name
                  procedure, public :: set_line_color => pdc_set_line_color
                  + + + + + get_axes_string @@ -635,7 +670,7 @@

                  Type-Bound Procedures

                  + get_command_string => spd_get_cmd @@ -645,7 +680,12 @@

                  Type-Bound Procedures

                  + get_data_string + + + + @@ -670,7 +710,7 @@

                  Type-Bound Procedures

                  + get_line_style => spd_get_line_style @@ -720,12 +760,12 @@

                  Type-Bound Procedures

                  + get_x + get_y @@ -735,6 +775,11 @@

                  Type-Bound Procedures

                  + + + + @@ -755,7 +800,7 @@

                  Type-Bound Procedures

                  + set_line_style => spd_set_line_style @@ -805,12 +850,12 @@

                  Type-Bound Procedures

                  + set_x + set_y @@ -840,7 +885,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_data_2d.html b/doc/module/fplot_plot_data_2d.html index b21112a..dd00fa9 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
                • 305 statements + title=" 4.0% of total for modules and submodules.">311 statements
                • @@ -150,10 +150,10 @@

                  Uses

                • procedure, public :: + create_unique_datablock_name => pd_create_unique_datablock_name
                  procedure(spd_get_string_result), public, deferred :: - get_axes_string
                  procedure, public :: - get_command_string => spd_get_cmd
                  procedure(pd_get_string_result), public, deferred :: - get_data_string
                  procedure, public :: + get_datablock_name => pd_get_datablock_name
                  procedure, public :: - get_line_style => spd_get_line_style
                  procedure(spd_get_value), public, deferred :: - get_x
                  procedure(spd_get_value), public, deferred :: - get_y
                  procedure, public :: + set_datablock_name => pd_set_datablock_name
                  procedure, public :: set_draw_line => spd_set_draw_line
                  procedure, public :: - set_line_style => spd_set_line_style
                  procedure(spd_set_value), public, deferred :: - set_x
                  procedure(spd_set_value), public, deferred :: - set_y
                  + + + + @@ -202,7 +207,7 @@

                  Type-Bound Procedures

                  + get_color_data => pd2d_get_c_array @@ -212,22 +217,27 @@

                  Type-Bound Procedures

                  + get_command_string => spd_get_cmd + get_count => pd2d_get_data_count + get_data_string => pd2d_get_data_cmd + get_datablock_name => pd_get_datablock_name + + + + @@ -252,7 +262,7 @@

                  Type-Bound Procedures

                  + get_line_style => spd_get_line_style @@ -282,7 +292,7 @@

                  Type-Bound Procedures

                  + get_point_size_data => pd2d_get_ps_array @@ -307,22 +317,22 @@

                  Type-Bound Procedures

                  + get_x => pd2d_get_x_data + get_x_data => pd2d_get_x_array + get_y => pd2d_get_y_data + get_y_data => pd2d_get_y_array @@ -342,7 +352,12 @@

                  Type-Bound Procedures

                  + set_datablock_name => pd_set_datablock_name + + + + @@ -367,7 +382,7 @@

                  Type-Bound Procedures

                  + set_line_style => spd_set_line_style @@ -417,12 +432,12 @@

                  Type-Bound Procedures

                  + set_x => pd2d_set_x_data + set_y => pd2d_set_y_data @@ -452,7 +467,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_data_3d.html b/doc/module/fplot_plot_data_3d.html index 5489b75..4632232 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
                • 309 statements + title=" 4.0% of total for modules and submodules.">312 statements
                • @@ -150,10 +150,10 @@

                  Uses

                • + create_unique_datablock_name => pd_create_unique_datablock_name + + + + + get_axes_string => pd3d_get_axes_cmd + get_color_data => pd3d_get_c_array @@ -212,17 +217,22 @@

                  Type-Bound Procedures

                  + get_command_string => spd_get_cmd + get_count => pd3d_get_data_count + get_data_string => pd3d_get_data_cmd + + + + @@ -247,7 +257,7 @@

                  Type-Bound Procedures

                  + get_line_style => spd_get_line_style @@ -277,7 +287,7 @@

                  Type-Bound Procedures

                  + get_point_size_data => pd3d_get_c_array @@ -302,27 +312,27 @@

                  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 + get_z => pd3d_get_z_data @@ -337,6 +347,11 @@

                  Type-Bound Procedures

                  + + + + @@ -357,7 +372,7 @@

                  Type-Bound Procedures

                  + set_line_style => spd_set_line_style @@ -407,17 +422,17 @@

                  Type-Bound Procedures

                  + set_x => pd3d_set_x_data + set_y => pd3d_set_y_data + set_z => pd3d_set_z_data @@ -447,7 +462,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_data_bar.html b/doc/module/fplot_plot_data_bar.html index 5c8e9f1..80370fb 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
                • 351 statements + title=" 4.6% of total for modules and submodules.">361 statements
                • @@ -150,11 +150,11 @@

                  Uses

                • 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_color_data => pd2d_get_c_array
                  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_draw_against_y2 => pd2d_get_draw_against_y2
                  procedure, public :: + get_draw_against_y2 => pd2d_get_draw_against_y2
                  procedure, public :: - get_line_style => spd_get_line_style
                  procedure, public :: - get_point_size_data => pd2d_get_ps_array
                  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 :: - set_draw_against_y2 => pd2d_set_draw_against_y2
                  procedure, public :: + set_draw_against_y2 => pd2d_set_draw_against_y2
                  procedure, public :: - set_line_style => spd_set_line_style
                  procedure, public :: - set_x => pd2d_set_x_data
                  procedure, public :: - set_y => pd2d_set_y_data
                  procedure, public :: - define_data => pd3d_set_data_1
                  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_datablock_name => pd_get_datablock_name
                  procedure, public :: - get_line_style => spd_get_line_style
                  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 :: - get_z => pd3d_get_z_data
                  procedure, public :: + set_datablock_name => pd_set_datablock_name
                  procedure, public :: set_draw_line => spd_set_draw_line
                  procedure, public :: - set_line_style => spd_set_line_style
                  procedure, public :: - set_x => pd3d_set_x_data
                  procedure, public :: - set_y => pd3d_set_y_data
                  procedure, public :: - set_z => pd3d_set_z_data
                  + + + + + define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3 + get => pdb_get_data + get_axes_string => pdb_get_axes_cmd @@ -217,12 +222,12 @@

                  Type-Bound Procedures

                  + get_command_string => pdb_get_cmd + get_count => pdb_get_count @@ -232,22 +237,27 @@

                  Type-Bound Procedures

                  + get_data_string => pdb_get_data_cmd + get_datablock_name => pd_get_datablock_name + get_draw_against_y2 => pdb_get_use_y2 + get_is_filled => pdb_get_is_filled + + + + @@ -272,7 +282,7 @@

                  Type-Bound Procedures

                  + set => pdb_set_data @@ -297,17 +307,22 @@

                  Type-Bound Procedures

                  + set_datablock_name => pd_set_datablock_name + + + + + set_is_filled => pdb_set_is_filled + set_label => pdb_set_label @@ -357,7 +372,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_data_box_whisker.html b/doc/module/fplot_plot_data_box_whisker.html index 9d0ab0a..3034d80 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
                • 219 statements + title=" 2.9% of total for modules and submodules.">224 statements
                • @@ -150,11 +150,11 @@

                  Uses

                • + create_unique_datablock_name => pd_create_unique_datablock_name + + + + @@ -212,12 +217,17 @@

                  Type-Bound Procedures

                  + get_command_string => pdbw_get_cmd + get_data_string => pdbw_get_data_cmd + + + + @@ -237,7 +247,7 @@

                  Type-Bound Procedures

                  + get_line_width => pdbw_get_line_width @@ -272,6 +282,11 @@

                  Type-Bound Procedures

                  + + + + @@ -287,7 +302,7 @@

                  Type-Bound Procedures

                  + set_line_width => pdbw_set_line_width @@ -332,7 +347,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_data_error_bars.html b/doc/module/fplot_plot_data_error_bars.html index bc8fb6b..f521c41 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
                • 444 statements + title=" 6.0% of total for modules and submodules.">464 statements
                • @@ -150,11 +150,11 @@

                  Uses

                • 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
                  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 :: + get_label => pdb_get_label
                  procedure, public :: - set => pdb_set_data
                  procedure, public :: - set_draw_against_y2 => pdb_set_use_y2
                  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 :: - define_data => pdbw_define_data_xstring
                  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_datablock_name => pd_get_datablock_name
                  procedure, public :: - get_line_width => pdbw_get_line_width
                  procedure, public :: + set_datablock_name => pd_set_datablock_name
                  procedure, public :: set_draw_against_y2 => pdbw_set_use_y2
                  procedure, public :: - set_line_width => pdbw_set_line_width
                  + + + + @@ -212,17 +217,22 @@

                  Type-Bound Procedures

                  + get_command_string => pde_get_cmd + get_count => pde_get_count + get_data_string => pde_get_data_cmd + + + + @@ -292,6 +302,11 @@

                  Type-Bound Procedures

                  + + + + @@ -332,7 +347,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_data_histogram.html b/doc/module/fplot_plot_data_histogram.html index b79a517..1870e55 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
                • 180 statements + title=" 2.4% of total for modules and submodules.">184 statements
                • @@ -150,11 +150,11 @@

                  Uses

                • + + + + @@ -217,22 +222,27 @@

                  Type-Bound Procedures

                  + get_command_string => pdh_get_cmd + get_data_string => pdh_get_data_cmd + get_datablock_name => pd_get_datablock_name + get_draw_against_y2 => pdh_get_use_y2 + + + + @@ -267,12 +277,17 @@

                  Type-Bound Procedures

                  + set_datablock_name => pd_set_datablock_name + + + + + set_is_filled => pdh_set_is_filled @@ -312,7 +327,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_data_tri_2d.html b/doc/module/fplot_plot_data_tri_2d.html index 1ba5fe5..29b0dec 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
                • 155 statements + title=" 2.1% of total for modules and submodules.">160 statements
                • @@ -150,11 +150,11 @@

                  Uses

                • + create_unique_datablock_name => pd_create_unique_datablock_name + + + + @@ -202,12 +207,17 @@

                  Type-Bound Procedures

                  + get_command_string => pdt2d_get_cmd + + + + + get_datablock_name => pd_get_datablock_name @@ -217,12 +227,12 @@

                  Type-Bound Procedures

                  + get_line_style => pdt2d_get_line_style + get_line_width => pdt2d_get_line_width @@ -237,17 +247,22 @@

                  Type-Bound Procedures

                  + + + + + set_line_style => pdt2d_set_line_style + set_line_width => pdt2d_set_line_width @@ -282,7 +297,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_object.html b/doc/module/fplot_plot_object.html index bd7cbdf..1606804 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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_plot_polar.html b/doc/module/fplot_plot_polar.html index e6e52c2..474e065 100644 --- a/doc/module/fplot_plot_polar.html +++ b/doc/module/fplot_plot_polar.html @@ -74,7 +74,7 @@

                  fplot_plot_polar
                • 206 statements + title=" 2.7% of total for modules and submodules.">210 statements
                • @@ -150,14 +150,14 @@

                  Uses

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

                  Type-Bound Procedures

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

                  Type-Bound Procedures

                  + get_command_string => plr_get_cmd @@ -279,17 +279,17 @@

                  Type-Bound Procedures

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

                  Type-Bound Procedures

                  + get_terminal => plt_get_term @@ -349,7 +349,7 @@

                  Type-Bound Procedures

                  + get_title => plt_get_title @@ -364,7 +364,7 @@

                  Type-Bound Procedures

                  + is_title_defined => plt_has_title @@ -399,7 +399,7 @@

                  Type-Bound Procedures

                  + save_file => plt_save @@ -439,17 +439,17 @@

                  Type-Bound Procedures

                  + set_font_name => plt_set_font + set_font_size => plt_set_font_size + set_label => plt_set_label @@ -494,7 +494,7 @@

                  Type-Bound Procedures

                  + set_title => plt_set_title @@ -529,7 +529,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_png_terminal.html b/doc/module/fplot_png_terminal.html index b773032..2f23510 100644 --- a/doc/module/fplot_png_terminal.html +++ b/doc/module/fplot_png_terminal.html @@ -150,8 +150,8 @@

                  Uses

                  + get_command_string => png_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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_qt_terminal.html b/doc/module/fplot_qt_terminal.html index e5fc8b4..8b25572 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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_simplify.html b/doc/module/fplot_simplify.html index 33bf207..6470e58 100644 --- a/doc/module/fplot_simplify.html +++ b/doc/module/fplot_simplify.html @@ -74,7 +74,7 @@

                  fplot_simplify
                • 219 statements + title=" 2.8% of total for modules and submodules.">219 statements
                • @@ -150,9 +150,9 @@

                  Uses

                  @@ -195,7 +195,7 @@

                  Arguments

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

                  Arguments

                  @@ -243,7 +243,7 @@

                  Arguments

                  @@ -289,7 +289,7 @@

                  Arguments

                  @@ -305,7 +305,7 @@

                  Arguments

                  @@ -321,7 +321,7 @@

                  Arguments

                  @@ -353,7 +353,7 @@

                  Arguments

                  @@ -431,7 +431,7 @@

                  Arguments

                  @@ -484,7 +484,7 @@

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_stats_plots.html b/doc/module/fplot_stats_plots.html index 71086cc..522f83b 100644 --- a/doc/module/fplot_stats_plots.html +++ b/doc/module/fplot_stats_plots.html @@ -150,20 +150,20 @@

                  Uses

                  + draw => cp_draw + get => cp_get @@ -217,17 +217,17 @@

                  Type-Bound Procedures

                  + get_command_string => cp_get_command + get_font_name => cp_get_font + get_font_size => cp_get_font_size @@ -242,27 +242,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 @@ -292,7 +292,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_surface_plot.html b/doc/module/fplot_surface_plot.html index 27462b4..7e1b91b 100644 --- a/doc/module/fplot_surface_plot.html +++ b/doc/module/fplot_surface_plot.html @@ -150,11 +150,11 @@

                  Uses

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

                  Type-Bound Procedures

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

                  Type-Bound Procedures

                  + get_command_string => surf_get_cmd @@ -282,17 +282,17 @@

                  Type-Bound Procedures

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

                  Type-Bound Procedures

                  + get_terminal => plt_get_term @@ -357,7 +357,7 @@

                  Type-Bound Procedures

                  + get_title => plt_get_title @@ -382,12 +382,12 @@

                  Type-Bound Procedures

                  + get_x_axis => p3d_get_x_axis + get_y_axis => p3d_get_y_axis @@ -407,7 +407,7 @@

                  Type-Bound Procedures

                  + is_title_defined => plt_has_title @@ -442,7 +442,7 @@

                  Type-Bound Procedures

                  + save_file => plt_save @@ -497,17 +497,17 @@

                  Type-Bound Procedures

                  + set_font_name => plt_set_font + set_font_size => plt_set_font_size + set_label => plt_set_label @@ -557,7 +557,7 @@

                  Type-Bound Procedures

                  + set_title => plt_set_title @@ -612,7 +612,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_surface_plot_data.html b/doc/module/fplot_surface_plot_data.html index 818865d..ad83ddf 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
                • 197 statements + title=" 2.6% of total for modules and submodules.">202 statements
                • @@ -150,9 +150,9 @@

                  Uses

                • + create_unique_datablock_name => pd_create_unique_datablock_name + + + + + + + + + get_data_string => surfd_get_data_cmd + get_datablock_name => pd_get_datablock_name @@ -216,22 +226,27 @@

                  Type-Bound Procedures

                  + get_use_wireframe => surfd_get_wireframe + + + + + get_y => surfd_get_y + get_z => surfd_get_z + set_datablock_name => pd_set_datablock_name @@ -241,22 +256,22 @@

                  Type-Bound Procedures

                  + set_use_wireframe => surfd_set_wireframe + set_x => surfd_set_x + set_y => surfd_set_y + set_z => surfd_set_z @@ -286,7 +301,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_terminal.html b/doc/module/fplot_terminal.html index 9e4e044..8a6399c 100644 --- a/doc/module/fplot_terminal.html +++ b/doc/module/fplot_terminal.html @@ -161,10 +161,10 @@

                  Uses

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

                  Arguments

                  @@ -258,22 +258,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 @@ -283,7 +283,7 @@

                  Type-Bound Procedures

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

                  Type-Bound Procedures

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

                  Type-Bound Procedures

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

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_tri_surface_plot_data.html b/doc/module/fplot_tri_surface_plot_data.html index 1d2e367..af46b82 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
                • 128 statements + title=" 1.7% of total for modules and submodules.">133 statements
                • @@ -191,17 +191,27 @@

                  Type-Bound Procedures

                • + create_unique_datablock_name => pd_create_unique_datablock_name + define_data => tspd_define_data + get_command_string => tspd_get_cmd + + + + + + + + @@ -211,7 +221,12 @@

                  Type-Bound Procedures

                  + get_use_wireframe => tspd_get_wireframe + + + + @@ -221,7 +236,7 @@

                  Type-Bound Procedures

                  + set_use_wireframe => tspd_set_wireframe @@ -251,7 +266,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_triangulations_delaunay_2d.html b/doc/module/fplot_triangulations_delaunay_2d.html index ca79310..447b1bc 100644 --- a/doc/module/fplot_triangulations_delaunay_2d.html +++ b/doc/module/fplot_triangulations_delaunay_2d.html @@ -150,10 +150,10 @@

                  Uses

                  @@ -250,7 +250,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_vector_field_plot_data.html b/doc/module/fplot_vector_field_plot_data.html index 8618363..6c0ffc3 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
                • 195 statements + title=" 2.6% of total for modules and submodules.">200 statements
                • @@ -150,11 +150,11 @@

                  Uses

                • + + + + @@ -217,6 +222,11 @@

                  Type-Bound Procedures

                  + + + + @@ -247,6 +257,11 @@

                  Type-Bound Procedures

                  + + + + @@ -287,7 +302,7 @@

                  Type-Bound Procedures

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_windows_terminal.html b/doc/module/fplot_windows_terminal.html index f985fff..c62fae2 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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/module/fplot_wxt_terminal.html b/doc/module/fplot_wxt_terminal.html index 7106b5c..e74e036 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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/proc/linspace.html b/doc/proc/linspace.html index ecbf049..a6455a0 100644 --- a/doc/proc/linspace.html +++ b/doc/proc/linspace.html @@ -183,7 +183,7 @@

                  Arguments

                  @@ -201,7 +201,7 @@

                  Arguments

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

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

                  Return Value

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/proc/logspace.html b/doc/proc/logspace.html index 85eb267..6c44fae 100644 --- a/doc/proc/logspace.html +++ b/doc/proc/logspace.html @@ -183,7 +183,7 @@

                  Arguments

                  @@ -201,7 +201,7 @@

                  Arguments

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

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

                  Return Value

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/proc/meshgrid.html b/doc/proc/meshgrid.html index 26b404d..18c37e3 100644 --- a/doc/proc/meshgrid.html +++ b/doc/proc/meshgrid.html @@ -153,7 +153,7 @@

                  Arguments

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

                  Arguments

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

                  Return Value

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/proc/report_array_size_mismatch_error.html b/doc/proc/report_array_size_mismatch_error.html index 2849b38..b2ae3e6 100644 --- a/doc/proc/report_array_size_mismatch_error.html +++ b/doc/proc/report_array_size_mismatch_error.html @@ -164,7 +164,7 @@

                  Arguments

                  @@ -302,7 +302,7 @@

                  Variables

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/proc/report_file_create_error.html b/doc/proc/report_file_create_error.html index 476789b..5d40c3d 100644 --- a/doc/proc/report_file_create_error.html +++ b/doc/proc/report_file_create_error.html @@ -164,7 +164,7 @@

                  Arguments

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

                  Arguments

                  @@ -209,7 +209,7 @@

                  Arguments

                  @@ -287,7 +287,7 @@

                  Variables

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/proc/report_matrix_size_mismatch_error.html b/doc/proc/report_matrix_size_mismatch_error.html index ff5c4e5..72e8687 100644 --- a/doc/proc/report_matrix_size_mismatch_error.html +++ b/doc/proc/report_matrix_size_mismatch_error.html @@ -164,7 +164,7 @@

                  Arguments

                  @@ -332,7 +332,7 @@

                  Variables

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/proc/report_memory_error.html b/doc/proc/report_memory_error.html index 2304a1a..9b26c19 100644 --- a/doc/proc/report_memory_error.html +++ b/doc/proc/report_memory_error.html @@ -164,7 +164,7 @@

                  Arguments

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

                  Arguments

                  @@ -272,7 +272,7 @@

                  Variables

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/search.html b/doc/search.html index 4a16c53..76ccbd5 100644 --- a/doc/search.html +++ b/doc/search.html @@ -95,7 +95,7 @@

                  Search Results

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_arrow.f90.html b/doc/sourcefile/fplot_arrow.f90.html index 015c22c..aa1fe67 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.8% of total for source files.">296 statements
                • @@ -740,7 +740,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_colormap.f90.html b/doc/sourcefile/fplot_colormap.f90.html index 07323f4..92e2a9c 100644 --- a/doc/sourcefile/fplot_colormap.f90.html +++ b/doc/sourcefile/fplot_colormap.f90.html @@ -661,7 +661,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_colors.f90.html b/doc/sourcefile/fplot_colors.f90.html index 37f0904..3c10285 100644 --- a/doc/sourcefile/fplot_colors.f90.html +++ b/doc/sourcefile/fplot_colors.f90.html @@ -362,7 +362,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_constants.f90.html b/doc/sourcefile/fplot_constants.f90.html index 9b3bd6e..b1c3b48 100644 --- a/doc/sourcefile/fplot_constants.f90.html +++ b/doc/sourcefile/fplot_constants.f90.html @@ -340,7 +340,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_core.f90.html b/doc/sourcefile/fplot_core.f90.html index 9c77c10..f58bcee 100644 --- a/doc/sourcefile/fplot_core.f90.html +++ b/doc/sourcefile/fplot_core.f90.html @@ -426,7 +426,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_core_routines.f90.html b/doc/sourcefile/fplot_core_routines.f90.html index f0895e7..f2bea46 100644 --- a/doc/sourcefile/fplot_core_routines.f90.html +++ b/doc/sourcefile/fplot_core_routines.f90.html @@ -258,7 +258,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_delaunay_tri_surface.f90.html b/doc/sourcefile/fplot_delaunay_tri_surface.f90.html index bd2adcd..68a4bf3 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
                • 134 statements + title=" 1.7% of total for source files.">134 statements
                • @@ -404,7 +404,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_errors.f90.html b/doc/sourcefile/fplot_errors.f90.html index 4b64096..71d5176 100644 --- a/doc/sourcefile/fplot_errors.f90.html +++ b/doc/sourcefile/fplot_errors.f90.html @@ -294,7 +294,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_filled_plot_data.f90.html b/doc/sourcefile/fplot_filled_plot_data.f90.html index 3b6c7ad..23e5650 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
                • 120 statements + title=" 1.6% of total for source files.">125 statements
                • @@ -238,123 +238,132 @@

                  Source Code

                  ! 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 - - ! 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()) + ! 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('"') - ! End - x = char(str%to_string()) - end function + ! Define the axes structure + call str%append(" ") + call str%append(this%get_axes_string()) -! ------------------------------------------------------------------------------ - 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 + ! 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 -! ------------------------------------------------------------------------------ - 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 - - ! 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 - -! ------------------------------------------------------------------------------ -end module + ! 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 + +! ------------------------------------------------------------------------------ +end module @@ -373,7 +382,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_label.f90.html b/doc/sourcefile/fplot_label.f90.html index c6d9efd..212613b 100644 --- a/doc/sourcefile/fplot_label.f90.html +++ b/doc/sourcefile/fplot_label.f90.html @@ -337,7 +337,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_latex_terminal.f90.html b/doc/sourcefile/fplot_latex_terminal.f90.html index d6cb54f..9047736 100644 --- a/doc/sourcefile/fplot_latex_terminal.f90.html +++ b/doc/sourcefile/fplot_latex_terminal.f90.html @@ -271,7 +271,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_legend.f90.html b/doc/sourcefile/fplot_legend.f90.html index eef87cf..89d04bc 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.9% of total for source files.">151 statements
                • @@ -439,7 +439,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


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

                  fplot_multiplot.f90
                • 304 statements + title=" 3.9% of total for source files.">304 statements
                • @@ -659,7 +659,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot.f90.html b/doc/sourcefile/fplot_plot.f90.html index 189a316..cbbd80d 100644 --- a/doc/sourcefile/fplot_plot.f90.html +++ b/doc/sourcefile/fplot_plot.f90.html @@ -74,7 +74,7 @@

                  fplot_plot.f90
                • 562 statements + title=" 7.2% of total for source files.">562 statements
                • @@ -1138,7 +1138,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_2d.f90.html b/doc/sourcefile/fplot_plot_2d.f90.html index 9a22021..6630be0 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
                • 288 statements + title=" 3.8% of total for source files.">292 statements
                • @@ -449,171 +449,172 @@

                  Source Code

                  call str%append("unset jitter") end if - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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 - - ! Define the data to plot - do i = 1, n - ptr => this%get(i) - if (.not.associated(ptr)) cycle - call str%append(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") - ! if (i /= n) then - ! call str%append("e") - ! end if - 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 - -! ------------------------------------------------------------------------------ -end module + 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 + +! ------------------------------------------------------------------------------ + 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 + +! ------------------------------------------------------------------------------ +end module @@ -632,7 +633,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_3d.f90.html b/doc/sourcefile/fplot_plot_3d.f90.html index 65f0a54..1917f7a 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
                • 286 statements + title=" 3.7% of total for source files.">290 statements
                • @@ -443,193 +443,194 @@

                  Source Code

                  call str%append("set mapping spherical") end if - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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 - - ! Define the data to plot - do i = 1, n - ptr => this%get(i) - if (.not.associated(ptr)) cycle - call str%append(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") - ! if (i /= n) then - ! call str%append("e") - ! end if - 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 - -! ------------------------------------------------------------------------------ -end module + 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 + +! ------------------------------------------------------------------------------ +end module @@ -648,7 +649,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_axis.f90.html b/doc/sourcefile/fplot_plot_axis.f90.html index 4a80d31..eba0dc3 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=" 6.0% of total for source files.">470 statements
                • @@ -413,7 +413,7 @@

                  Source Code

                  ! -------------------- 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 + !! 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. @@ -941,7 +941,7 @@

                  Source Code

                  ! -------------------- 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. + !! 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 @@ -1021,7 +1021,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_bar.f90.html b/doc/sourcefile/fplot_plot_bar.f90.html index 192cd5b..dcfebe6 100644 --- a/doc/sourcefile/fplot_plot_bar.f90.html +++ b/doc/sourcefile/fplot_plot_bar.f90.html @@ -251,7 +251,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_data.f90.html b/doc/sourcefile/fplot_plot_data.f90.html index 6d0d60f..2702778 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
                • 344 statements + title=" 4.8% of total for source files.">376 statements
                • @@ -177,659 +177,717 @@

                  Source Code

                  private character(len = PLOTDATA_MAX_NAME_LENGTH) :: m_name = "" !! The name to associate with the data set. - contains - procedure, public :: get_name => pd_get_name - procedure, public :: set_name => pd_set_name - procedure(pd_get_string_result), deferred, public :: get_data_string - 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 - 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) :: scatter_plot_data - !! A plot_data object for describing scatter plot data sets. - private - logical :: m_drawLine = .true. - !! Draw a line connecting the dots? - logical :: m_drawMarkers = .false. - !! Draw the markers? - integer(int32) :: m_markerFrequency = 1 - !! Marker frequency. - real(real32) :: m_lineWidth = 1.0 - !! Line width. - integer(int32) :: m_lineStyle = LINE_SOLID - !! Line style. - integer(int32) :: m_markerType = MARKER_FILLED_CIRCLE - !! Marker type. - real(real32) :: m_markerSize = 0.5 - !! Marker size multiplier. - logical :: m_simplifyData = .true. - !! True if large data sets should be simplified before sending to - !! GNUPLOT. - real(real64) :: 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 :: m_dataDependentColors = .false. - !! Determines if the data should utilize data-dependent colors. - logical :: m_filledCurve = .false. - !! Fill the curve? - logical :: m_useVariableSizePoints = .false. - !! Use variable size data points? - contains - procedure, public :: get_command_string => spd_get_cmd - procedure, public :: get_line_width => spd_get_line_width - procedure, public :: set_line_width => spd_set_line_width - procedure, public :: get_line_style => spd_get_line_style - procedure, public :: set_line_style => spd_set_line_style - procedure, public :: get_draw_line => spd_get_draw_line - procedure, public :: set_draw_line => spd_set_draw_line - procedure, public :: get_draw_markers => spd_get_draw_markers - procedure, public :: set_draw_markers => spd_set_draw_markers - procedure, public :: get_marker_style => spd_get_marker_style - procedure, public :: set_marker_style => spd_set_marker_style - procedure, public :: get_marker_scaling => spd_get_marker_scaling - procedure, public :: set_marker_scaling => spd_set_marker_scaling - procedure, public :: get_marker_frequency => spd_get_marker_frequency - procedure, public :: set_marker_frequency => spd_set_marker_frequency - 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 - -! ****************************************************************************** -! 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 + 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(pd_get_string_result), deferred, public :: get_data_string + 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 + 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) :: scatter_plot_data + !! A plot_data object for describing scatter plot data sets. + private + logical :: m_drawLine = .true. + !! Draw a line connecting the dots? + logical :: m_drawMarkers = .false. + !! Draw the markers? + integer(int32) :: m_markerFrequency = 1 + !! Marker frequency. + real(real32) :: m_lineWidth = 1.0 + !! Line width. + integer(int32) :: m_lineStyle = LINE_SOLID + !! Line style. + integer(int32) :: m_markerType = MARKER_FILLED_CIRCLE + !! Marker type. + real(real32) :: m_markerSize = 0.5 + !! Marker size multiplier. + logical :: m_simplifyData = .true. + !! True if large data sets should be simplified before sending to + !! GNUPLOT. + real(real64) :: 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 :: m_dataDependentColors = .false. + !! Determines if the data should utilize data-dependent colors. + logical :: m_filledCurve = .false. + !! Fill the curve? + logical :: m_useVariableSizePoints = .false. + !! Use variable size data points? + contains + procedure, public :: get_command_string => spd_get_cmd + procedure, public :: get_line_width => spd_get_line_width + procedure, public :: set_line_width => spd_set_line_width + procedure, public :: get_line_style => spd_get_line_style + procedure, public :: set_line_style => spd_set_line_style + procedure, public :: get_draw_line => spd_get_draw_line + procedure, public :: set_draw_line => spd_set_draw_line + procedure, public :: get_draw_markers => spd_get_draw_markers + procedure, public :: set_draw_markers => spd_set_draw_markers + procedure, public :: get_marker_style => spd_get_marker_style + procedure, public :: set_marker_style => spd_set_marker_style + procedure, public :: get_marker_scaling => spd_get_marker_scaling + procedure, public :: set_marker_scaling => spd_set_marker_scaling + procedure, public :: get_marker_frequency => spd_get_marker_frequency + procedure, public :: set_marker_frequency => spd_set_marker_frequency + 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 -! ****************************************************************************** -! 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() - - ! 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_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 + 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 + +! ****************************************************************************** +! 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 + +! ****************************************************************************** +! 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 -! ------------------------------------------------------------------------------ - pure function spd_get_line_width(this) result(x) - !! Gets the width of the line, in pixels. - class(scatter_plot_data), intent(in) :: this - !! The scatter_plot_data object. - real(real32) :: x - !! The line width. - x = this%m_lineWidth - end function - -! -------------------- - subroutine spd_set_line_width(this, x) - !! Sets the width of the line, in pixels. - class(scatter_plot_data), intent(inout) :: this - !! The scatter_plot_data object. - real(real32), intent(in) :: x - !! The line width. - this%m_lineWidth = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function spd_get_line_style(this) result(x) - !! Gets the line style. - class(scatter_plot_data), intent(in) :: this - !! The scatter_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 spd_set_line_style(this, x) - !! Sets the line style. - class(scatter_plot_data), intent(inout) :: this - !! The scatter_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 spd_get_draw_line(this) result(x) - !! Gets a value determining if a line should be drawn. - class(scatter_plot_data), intent(in) :: this - !! The scatter_plot_data object. - logical :: x - !! Returns true if the line should be drawn; else, false. - x = this%m_drawLine - end function - -! -------------------- - subroutine spd_set_draw_line(this, x) - !! Sets a value determining if a line should be drawn. - class(scatter_plot_data), intent(inout) :: this - !! The scatter_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 spd_get_draw_markers(this) result(x) - !! Gets a value determining if data point markers should be drawn. - class(scatter_plot_data), intent(in) :: this - !! The scatter_plot_data object. - logical :: x - !! Returns true if the markers should be drawn; else, false. - x = this%m_drawMarkers - end function - -! -------------------- - subroutine spd_set_draw_markers(this, x) - !! Sets a value determining if data point markers should be drawn. - class(scatter_plot_data), intent(inout) :: this - !! The scatter_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 spd_get_marker_style(this) result(x) - !! Gets the marker style. - class(scatter_plot_data), intent(in) :: this - !! The scatter_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 spd_set_marker_style(this, x) - !! Sets the marker style. - class(scatter_plot_data), intent(inout) :: this - !! The scatter_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 + ! Lines, points, or filled + if (this%get_fill_curve()) then + call str%append(" with filledcurves") + 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_line_width(this) result(x) + !! Gets the width of the line, in pixels. + class(scatter_plot_data), intent(in) :: this + !! The scatter_plot_data object. + real(real32) :: x + !! The line width. + x = this%m_lineWidth + end function + +! -------------------- + subroutine spd_set_line_width(this, x) + !! Sets the width of the line, in pixels. + class(scatter_plot_data), intent(inout) :: this + !! The scatter_plot_data object. + real(real32), intent(in) :: x + !! The line width. + this%m_lineWidth = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function spd_get_line_style(this) result(x) + !! Gets the line style. + class(scatter_plot_data), intent(in) :: this + !! The scatter_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 spd_set_line_style(this, x) + !! Sets the line style. + class(scatter_plot_data), intent(inout) :: this + !! The scatter_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 spd_get_draw_line(this) result(x) + !! Gets a value determining if a line should be drawn. + class(scatter_plot_data), intent(in) :: this + !! The scatter_plot_data object. + logical :: x + !! Returns true if the line should be drawn; else, false. + x = this%m_drawLine + end function + +! -------------------- + subroutine spd_set_draw_line(this, x) + !! Sets a value determining if a line should be drawn. + class(scatter_plot_data), intent(inout) :: this + !! The scatter_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 spd_get_draw_markers(this) result(x) + !! Gets a value determining if data point markers should be drawn. + class(scatter_plot_data), intent(in) :: this + !! The scatter_plot_data object. + logical :: x + !! Returns true if the markers should be drawn; else, false. + x = this%m_drawMarkers + end function + +! -------------------- + subroutine spd_set_draw_markers(this, x) + !! Sets a value determining if data point markers should be drawn. + class(scatter_plot_data), intent(inout) :: this + !! The scatter_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 spd_get_marker_style(this) result(x) + !! Gets the marker style. + class(scatter_plot_data), intent(in) :: this + !! The scatter_plot_data object. + integer(int32) :: x + !! The marker type. The marker type must be one of the following: !! - !! - MARKER_PLUS + !! - MARKER_ASTERISK !! - !! - 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 spd_get_marker_scaling(this) result(x) - !! Gets the marker scaling. - class(scatter_plot_data), intent(in) :: this - !! The scatter_plot_data object. - real(real32) :: x - !! The scaling factor. - x = this%m_markerSize - end function - -! -------------------- - subroutine spd_set_marker_scaling(this, x) - !! Sets the marker scaling. - class(scatter_plot_data), intent(inout) :: this - !! The scatter_plot_data object. - real(real32), intent(in) :: x - !! The scaling factor. - this%m_markerSize = x - end subroutine - -! ------------------------------------------------------------------------------ - pure function spd_get_marker_frequency(this) result(x) - !! Gets the marker frequency. - class(scatter_plot_data), intent(in) :: this - !! The scatter_plot_data object. - integer(int32) :: x - !! The marker frequency. - x = this%m_markerFrequency - end function - -! -------------------- - subroutine spd_set_marker_frequency(this, x) - !! Sets the marker frequency. - class(scatter_plot_data), intent(inout) :: this - !! The scatter_plot_data object. - integer(int32), intent(in) :: x - !! The marker frequency. - this%m_markerFrequency = x - end subroutine - -! ------------------------------------------------------------------------------ - 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 + !! - 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 spd_set_marker_style(this, x) + !! Sets the marker style. + class(scatter_plot_data), intent(inout) :: this + !! The scatter_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 spd_get_marker_scaling(this) result(x) + !! Gets the marker scaling. + class(scatter_plot_data), intent(in) :: this + !! The scatter_plot_data object. + real(real32) :: x + !! The scaling factor. + x = this%m_markerSize + end function + +! -------------------- + subroutine spd_set_marker_scaling(this, x) + !! Sets the marker scaling. + class(scatter_plot_data), intent(inout) :: this + !! The scatter_plot_data object. + real(real32), intent(in) :: x + !! The scaling factor. + this%m_markerSize = x + end subroutine + +! ------------------------------------------------------------------------------ + pure function spd_get_marker_frequency(this) result(x) + !! Gets the marker frequency. + class(scatter_plot_data), intent(in) :: this + !! The scatter_plot_data object. + integer(int32) :: x + !! The marker frequency. + x = this%m_markerFrequency + end function + +! -------------------- + subroutine spd_set_marker_frequency(this, x) + !! Sets the marker frequency. + class(scatter_plot_data), intent(inout) :: this + !! The scatter_plot_data object. + integer(int32), intent(in) :: x + !! The marker frequency. + this%m_markerFrequency = x + end subroutine + +! ------------------------------------------------------------------------------ + 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, intent(in) :: x - !! True if variable size points should be used; else, false. - this%m_useVariableSizePoints = x - end subroutine + logical :: rst + !! True if data-dependent colors should be used; else, false. + rst = this%m_dataDependentColors + end function -! ------------------------------------------------------------------------------ -end module +! -------------------- + 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 @@ -848,7 +906,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_data_2d.f90.html b/doc/sourcefile/fplot_plot_data_2d.f90.html index 80bf8fb..d73753c 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
                • 305 statements + title=" 4.0% of total for source files.">311 statements
                • @@ -402,212 +402,220 @@

                  Source Code

                  errmgr => deferr 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 - - ! 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. + 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 - ! 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. +! ------------------------------------------------------------------------------ +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 - ! 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 - -! ****************************************************************************** -! ADDED: JAN. 12, 2024 - JAC -! ------------------------------------------------------------------------------ -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 +! ------------------------------------------------------------------------------ +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 + +! ****************************************************************************** +! ADDED: JAN. 12, 2024 - JAC +! ------------------------------------------------------------------------------ +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. -! ------------------------------------------------------------------------------ -end module + ! 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 + +! ------------------------------------------------------------------------------ +end module @@ -626,7 +634,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_data_3d.f90.html b/doc/sourcefile/fplot_plot_data_3d.f90.html index 6aacdae..aaaf3d5 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
                • 309 statements + title=" 4.0% of total for source files.">312 statements
                • @@ -436,159 +436,163 @@

                  Source Code

                  errmgr => deferr 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 - -! ****************************************************************************** -! ADDED: JAN. 12, 2020 - JAC -! ------------------------------------------------------------------------------ -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 - -! ------------------------------------------------------------------------------ -end module + 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 + +! ****************************************************************************** +! ADDED: JAN. 12, 2020 - JAC +! ------------------------------------------------------------------------------ +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 + +! ------------------------------------------------------------------------------ +end module @@ -607,7 +611,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_data_bar.f90.html b/doc/sourcefile/fplot_plot_data_bar.f90.html index 0339fce..ce64be5 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
                • 351 statements + title=" 4.6% of total for source files.">361 statements
                • @@ -341,390 +341,403 @@

                  Source Code

                  ! Initialization call str%initialize() - ! Starting off... - call str%append(' "-" ') - - ! Tic Labels - if (this%get_use_labels() .and. allocated(this%m_barData) .and. & - allocated(this%m_axisLabels)) then - ncols = size(this%m_barData, 2) - if (ncols == 1) then - call str%append(" using 2:xtic(1) ") - else - call str%append(" using 2:") - call str%append(to_string(ncols)) - call str%append(":xtic(1) ") - end if - end if - - ! Enforce a box plot - call str%append(" with boxes ") - - ! 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 - 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('"') - - ! Define the axes structure - call str%append(" ") - call str%append(this%get_axes_string()) - - ! 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 /= nbars) 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 /= nbars) 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 - -! ------------------------------------------------------------------------------ -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) - - ! 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) - - ! 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) - - ! 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) + ! Data Block + call str%append(" $") + call str%append(this%get_datablock_name()) + + ! Tic Labels + if (this%get_use_labels() .and. allocated(this%m_barData) .and. & + allocated(this%m_axisLabels)) then + ncols = size(this%m_barData, 2) + if (ncols == 1) then + call str%append(" using 2:xtic(1) ") + else + call str%append(" using 2:") + call str%append(to_string(ncols)) + call str%append(":xtic(1) ") + end if + end if + + ! Enforce a box plot + call str%append(" with boxes ") + + ! 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 + 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('"') + + ! Define the axes structure + call str%append(" ") + call str%append(this%get_axes_string()) + + ! 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 /= nbars) 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 /= nbars) 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 + +! ------------------------------------------------------------------------------ +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 - this%m_barData(:,1) = x - this%m_axisLabels = lbls -end subroutine + do i = 1, n + lbls(i) = to_string(labels(i), fmt) + end do -! ------------------------------------------------------------------------------ -end module + ! 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 + +! ------------------------------------------------------------------------------ +end module @@ -743,7 +756,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_data_box_whisker.f90.html b/doc/sourcefile/fplot_plot_data_box_whisker.f90.html index 84b17e2..e747fbd 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
                • 219 statements + title=" 2.9% of total for source files.">224 statements
                • @@ -243,290 +243,297 @@

                  Source Code

                  end if n = size(x) - ! 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) - - 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) 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 - - ! Style - ! call str%append(' "-" using ($0+1):2:3:4:5:xtic(1) with candlesticks') - 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 + 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) + + 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) 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())) - ! 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))) - 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 - -! ------------------------------------------------------------------------------ -end module + ! 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 + + ! 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))) + 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 + +! ------------------------------------------------------------------------------ +end module @@ -545,7 +552,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_data_error_bars.f90.html b/doc/sourcefile/fplot_plot_data_error_bars.f90.html index 413c4a2..0013e79 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
                • 444 statements + title=" 6.0% of total for source files.">464 statements
                • @@ -220,628 +220,656 @@

                  Source Code

                  ! 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 - - ! Color - clr = this%get_line_color() - call str%append(' lc rgb "#') - call str%append(clr%to_hex_string()) - call str%append('"') - - ! 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 + ! 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('"') + + ! 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 -! ------------------------------------------------------------------------------ - 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))) + ! 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, 4))) + call str%append(to_string(this%m_data(i, 2))) call str%append(delimiter) - call str%append(to_string(this%m_data(i, 5))) + call str%append(to_string(this%m_data(i, 3))) 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(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, 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(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, 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(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, 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 + ! 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 -! ------------------------------------------------------------------------------ - 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 - - ! 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 + ! 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 - ! 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 + ! 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 - ! 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 - - ! 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 - - ! 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 + ! 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 -! ------------------------------------------------------------------------------ - 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 - - ! 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 + ! 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. - 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 - - ! 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 - -! ------------------------------------------------------------------------------ -end module + ! 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 + +! ------------------------------------------------------------------------------ +end module @@ -860,7 +888,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_data_histogram.f90.html b/doc/sourcefile/fplot_plot_data_histogram.f90.html index 62f8891..7bc89e5 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
                • 180 statements + title=" 2.4% of total for source files.">184 statements
                • @@ -263,200 +263,205 @@

                  Source Code

                  n = size(x) nbins = min(n, this%get_bin_count()) ! protects against the case where nbins > n however unlikely - ! 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 + 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 -! ------------------------------------------------------------------------------ -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(" with boxes ") + ! 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 - ! 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 + 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 - ! 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 - -! ------------------------------------------------------------------------------ -end module + ! 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 + +! ------------------------------------------------------------------------------ +end module @@ -475,7 +480,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_data_tri_2d.f90.html b/doc/sourcefile/fplot_plot_data_tri_2d.f90.html index d3afbfd..dc57a0b 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
                • 155 statements + title=" 2.1% of total for source files.">160 statements
                • @@ -299,133 +299,141 @@

                  Source Code

                  ! 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 - call str%append(" with lines") - - ! Line Width - call str%append(" lw ") - call str%append(to_string(this%get_line_width())) + ! 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 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 + ! 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 -! ------------------------------------------------------------------------------ - 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) - - 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 + ! 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_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_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_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 - -! ------------------------------------------------------------------------------ -end module + !! - 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 + +! ------------------------------------------------------------------------------ +end module @@ -444,7 +452,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_object.f90.html b/doc/sourcefile/fplot_plot_object.f90.html index a0f9926..88bda59 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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_plot_polar.f90.html b/doc/sourcefile/fplot_plot_polar.f90.html index 8942939..66f6a2f 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
                • 206 statements + title=" 2.7% of total for source files.">210 statements
                • @@ -373,155 +373,159 @@

                  Source Code

                  ! call str%append(lbl%get_command_string()) ! end do - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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 - - ! Define the data to plot - do i = 1, n - ptr => this%get(i) - if (.not.associated(ptr)) cycle - call str%append(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") - end do - - ! End - x = char(str%to_string()) - end function + 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 -! ------------------------------------------------------------------------------ - 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 + ! 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_RIGHT + !! - POLAR_THETA_BOTTOM !! - !! - 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_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_RIGHT + !! - POLAR_THETA_BOTTOM !! - !! - 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 - -! ------------------------------------------------------------------------------ -end module + !! - 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 + +! ------------------------------------------------------------------------------ +end module @@ -540,7 +544,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_png_terminal.f90.html b/doc/sourcefile/fplot_png_terminal.f90.html index 00f5bbb..9cb296c 100644 --- a/doc/sourcefile/fplot_png_terminal.f90.html +++ b/doc/sourcefile/fplot_png_terminal.f90.html @@ -271,7 +271,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_qt_terminal.f90.html b/doc/sourcefile/fplot_qt_terminal.f90.html index d2518d0..ce9aff5 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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_simplify.f90.html b/doc/sourcefile/fplot_simplify.f90.html index 38c9b93..b4a8080 100644 --- a/doc/sourcefile/fplot_simplify.f90.html +++ b/doc/sourcefile/fplot_simplify.f90.html @@ -74,7 +74,7 @@

                  fplot_simplify.f90
                • 219 statements + title=" 2.8% of total for source files.">219 statements
                • @@ -522,7 +522,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_stats_plots.f90.html b/doc/sourcefile/fplot_stats_plots.f90.html index 7990bac..4538197 100644 --- a/doc/sourcefile/fplot_stats_plots.f90.html +++ b/doc/sourcefile/fplot_stats_plots.f90.html @@ -526,7 +526,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_surface_plot.f90.html b/doc/sourcefile/fplot_surface_plot.f90.html index a3ac3da..07295c4 100644 --- a/doc/sourcefile/fplot_surface_plot.f90.html +++ b/doc/sourcefile/fplot_surface_plot.f90.html @@ -557,7 +557,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_surface_plot_data.f90.html b/doc/sourcefile/fplot_surface_plot_data.f90.html index 4fe8a4e..e765d8f 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
                • 197 statements + title=" 2.6% of total for source files.">202 statements
                • @@ -345,127 +345,135 @@

                  Source Code

                  ! 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 - - ! 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 + ! 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 -! ------------------------------------------------------------------------------ -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 + ! 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 -! ------------------------------------------------------------------------------ -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 - - ! 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 - -! ------------------------------------------------------------------------------ -end module + ! 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 + +! ------------------------------------------------------------------------------ +end module @@ -484,7 +492,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_terminal.f90.html b/doc/sourcefile/fplot_terminal.f90.html index 48b459e..a801bd5 100644 --- a/doc/sourcefile/fplot_terminal.f90.html +++ b/doc/sourcefile/fplot_terminal.f90.html @@ -420,7 +420,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_tri_surface_plot_data.f90.html b/doc/sourcefile/fplot_tri_surface_plot_data.f90.html index 0604f38..061125b 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
                • 128 statements + title=" 1.7% of total for source files.">133 statements
                • @@ -294,71 +294,79 @@

                  Source Code

                  ! 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 - - ! 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 + ! 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 -! ------------------------------------------------------------------------------ - 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) - - 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 - -! ------------------------------------------------------------------------------ -end module + ! 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 + +! ------------------------------------------------------------------------------ +end module @@ -377,7 +385,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_triangulations_delaunay_2d.f90.html b/doc/sourcefile/fplot_triangulations_delaunay_2d.f90.html index bdca3db..88d5e0f 100644 --- a/doc/sourcefile/fplot_triangulations_delaunay_2d.f90.html +++ b/doc/sourcefile/fplot_triangulations_delaunay_2d.f90.html @@ -421,7 +421,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_vector_field_plot_data.f90.html b/doc/sourcefile/fplot_vector_field_plot_data.f90.html index 06b7dfe..9b17f3d 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
                • 195 statements + title=" 2.6% of total for source files.">200 statements
                • @@ -271,191 +271,200 @@

                  Source Code

                  ! 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 - - ! Property Definition - call str%append(" with vectors") - - if (this%get_fill_arrow()) then - call str%append(" filled head") - end if + ! 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_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 + 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 -! ------------------------------------------------------------------------------ - 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 - - ! 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 + 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 - 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 - -! ------------------------------------------------------------------------------ -end module + 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 + +! ------------------------------------------------------------------------------ +end module @@ -474,7 +483,7 @@

                  Source Code

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_windows_terminal.f90.html b/doc/sourcefile/fplot_windows_terminal.f90.html index fc72792..a7f23f2 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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/sourcefile/fplot_wxt_terminal.f90.html b/doc/sourcefile/fplot_wxt_terminal.f90.html index e0f0fcd..7120de8 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-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/src/fplot_filled_plot_data.f90 b/doc/src/fplot_filled_plot_data.f90 index 165adb3..01d40d1 100644 --- a/doc/src/fplot_filled_plot_data.f90 +++ b/doc/src/fplot_filled_plot_data.f90 @@ -85,14 +85,18 @@ function fpd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Establish filled data @@ -192,6 +196,11 @@ subroutine fpd_define_data(this, x, y, yc, err) 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) diff --git a/doc/src/fplot_plot_2d.f90 b/doc/src/fplot_plot_2d.f90 index 57812ee..9ec780f 100644 --- a/doc/src/fplot_plot_2d.f90 +++ b/doc/src/fplot_plot_2d.f90 @@ -296,27 +296,28 @@ function p2d_get_cmd(this) result(x) call str%append("unset jitter") end if - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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(", ") + 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 data to plot + ! 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(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") - ! if (i /= n) then - ! call str%append("e") - ! end if + call str%append(ptr%get_command_string()) + if (i /= n) call str%append(", ") end do ! End diff --git a/doc/src/fplot_plot_3d.f90 b/doc/src/fplot_plot_3d.f90 index 22aa7b7..51c351e 100644 --- a/doc/src/fplot_plot_3d.f90 +++ b/doc/src/fplot_plot_3d.f90 @@ -290,27 +290,28 @@ function p3d_get_cmd(this) result(x) call str%append("set mapping spherical") end if - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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(", ") + 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 data to plot + ! 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(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") - ! if (i /= n) then - ! call str%append("e") - ! end if + call str%append(ptr%get_command_string()) + if (i /= n) call str%append(", ") end do ! End diff --git a/doc/src/fplot_plot_axis.f90 b/doc/src/fplot_plot_axis.f90 index 93dc729..cbdcc90 100644 --- a/doc/src/fplot_plot_axis.f90 +++ b/doc/src/fplot_plot_axis.f90 @@ -260,7 +260,7 @@ pure function pa_get_axis_limits(this) result(x) ! -------------------- 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 + !! 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. @@ -788,7 +788,7 @@ pure function pa_get_manual_tic_labels(this) result(rst) ! -------------------- 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. + !! 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 diff --git a/doc/src/fplot_plot_data.f90 b/doc/src/fplot_plot_data.f90 index 5171745..6599df2 100644 --- a/doc/src/fplot_plot_data.f90 +++ b/doc/src/fplot_plot_data.f90 @@ -24,9 +24,16 @@ module fplot_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(pd_get_string_result), deferred, public :: get_data_string end type @@ -194,6 +201,53 @@ subroutine pd_set_name(this, txt) 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_number(r) + r = r * huge(count) + count = floor(r) + str = "PlotData" // to_string(count) + call this%set_datablock_name(char(str)) + end subroutine + ! ****************************************************************************** ! PLOT_DATA_COLORED ! ------------------------------------------------------------------------------ @@ -260,14 +314,18 @@ function spd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Lines, points, or filled diff --git a/doc/src/fplot_plot_data_2d.f90 b/doc/src/fplot_plot_data_2d.f90 index 8310bf0..5adce19 100644 --- a/doc/src/fplot_plot_data_2d.f90 +++ b/doc/src/fplot_plot_data_2d.f90 @@ -249,6 +249,10 @@ subroutine pd2d_set_data_1(this, x, y, c, ps, err) 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", & @@ -374,6 +378,10 @@ subroutine pd2d_set_data_2(this, y, err) 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) diff --git a/doc/src/fplot_plot_data_3d.f90 b/doc/src/fplot_plot_data_3d.f90 index eb879e6..1474524 100644 --- a/doc/src/fplot_plot_data_3d.f90 +++ b/doc/src/fplot_plot_data_3d.f90 @@ -283,6 +283,10 @@ subroutine pd3d_set_data_1(this, x, y, z, c, ps, err) 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", & diff --git a/doc/src/fplot_plot_data_bar.f90 b/doc/src/fplot_plot_data_bar.f90 index 1b1159a..2af7801 100644 --- a/doc/src/fplot_plot_data_bar.f90 +++ b/doc/src/fplot_plot_data_bar.f90 @@ -188,8 +188,9 @@ function pdb_get_cmd(this) result(x) ! Initialization call str%initialize() - ! Starting off... - call str%append(' "-" ') + ! Data Block + call str%append(" $") + call str%append(this%get_datablock_name()) ! Tic Labels if (this%get_use_labels() .and. allocated(this%m_barData) .and. & @@ -456,6 +457,10 @@ subroutine pdb_set_data_1_core(this, x, err) 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) @@ -492,6 +497,10 @@ subroutine pdb_set_data_2_core(this, labels, x, err) 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", & @@ -540,6 +549,10 @@ subroutine pdb_set_data_3_core(this, labels, x, fmt, err) 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", & diff --git a/doc/src/fplot_plot_data_box_whisker.f90 b/doc/src/fplot_plot_data_box_whisker.f90 index 79c56b8..b88f6f0 100644 --- a/doc/src/fplot_plot_data_box_whisker.f90 +++ b/doc/src/fplot_plot_data_box_whisker.f90 @@ -90,6 +90,10 @@ subroutine pdbw_define_data_xstring(this, x, boxmin, boxmax, whiskermin, & 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) @@ -121,9 +125,12 @@ function pdbw_get_cmd(this) result(rst) 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:xtic(1) with candlesticks') - call str%append(' "-" using ($0+1):2:3:4:5:(') + 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") diff --git a/doc/src/fplot_plot_data_error_bars.f90 b/doc/src/fplot_plot_data_error_bars.f90 index aab2560..e71c70a 100644 --- a/doc/src/fplot_plot_data_error_bars.f90 +++ b/doc/src/fplot_plot_data_error_bars.f90 @@ -67,14 +67,18 @@ function pde_get_cmd(this) result(cmd) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Color @@ -225,6 +229,10 @@ subroutine pde_define_x_err(this, x, y, xerr, err) 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", & @@ -284,6 +292,10 @@ subroutine pde_define_y_err(this, x, y, yerr, err) 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", & @@ -344,6 +356,10 @@ subroutine pde_define_xy_err(this, x, y, xerr, yerr, err) 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", & @@ -487,6 +503,10 @@ subroutine pde_define_x_err_lim(this, x, y, xmin, xmax, err) 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, & @@ -557,6 +577,10 @@ subroutine pde_define_y_err_lim(this, x, y, ymin, ymax, err) 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, & @@ -633,6 +657,10 @@ subroutine pde_define_xy_err_lim(this, x, y, xmin, xmax, ymin, & 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, & diff --git a/doc/src/fplot_plot_data_histogram.f90 b/doc/src/fplot_plot_data_histogram.f90 index e943ae3..ef12f2e 100644 --- a/doc/src/fplot_plot_data_histogram.f90 +++ b/doc/src/fplot_plot_data_histogram.f90 @@ -110,6 +110,10 @@ subroutine pdh_define_data(this, x, err) 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) @@ -162,7 +166,8 @@ function pdh_get_cmd(this) result(rst) type(color) :: clr ! Process - call str%append(' "-" ') + call str%append(" $") + call str%append(this%get_datablock_name()) call str%append(" with boxes ") ! Color diff --git a/doc/src/fplot_plot_data_tri_2d.f90 b/doc/src/fplot_plot_data_tri_2d.f90 index 703836e..4b7ddf2 100644 --- a/doc/src/fplot_plot_data_tri_2d.f90 +++ b/doc/src/fplot_plot_data_tri_2d.f90 @@ -146,14 +146,18 @@ function pdt2d_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Lines @@ -194,6 +198,10 @@ subroutine pdt2d_define_data(this, tri) 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() diff --git a/doc/src/fplot_plot_polar.f90 b/doc/src/fplot_plot_polar.f90 index ce171d3..c08d257 100644 --- a/doc/src/fplot_plot_polar.f90 +++ b/doc/src/fplot_plot_polar.f90 @@ -220,24 +220,28 @@ function plr_get_cmd(this) result(x) ! call str%append(lbl%get_command_string()) ! end do - ! Define the plot function and data formatting commands + ! Define the datablock n = this%get_count() - 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(", ") + 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 data to plot + ! 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(new_line('a')) - call str%append(ptr%get_data_string()) - call str%append("e") + call str%append(ptr%get_command_string()) + if (i /= n) call str%append(", ") end do ! End diff --git a/doc/src/fplot_surface_plot_data.f90 b/doc/src/fplot_surface_plot_data.f90 index 914cf60..ce5ed02 100644 --- a/doc/src/fplot_surface_plot_data.f90 +++ b/doc/src/fplot_surface_plot_data.f90 @@ -192,14 +192,18 @@ function surfd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! PM3D or wireframe? @@ -278,6 +282,10 @@ subroutine surfd_set_data_1(this, x, y, z, err) 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", & diff --git a/doc/src/fplot_tri_surface_plot_data.f90 b/doc/src/fplot_tri_surface_plot_data.f90 index 3dcba63..692ce1b 100644 --- a/doc/src/fplot_tri_surface_plot_data.f90 +++ b/doc/src/fplot_tri_surface_plot_data.f90 @@ -141,14 +141,18 @@ function tspd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! PM3D or wireframe? @@ -198,6 +202,10 @@ subroutine tspd_define_data(this, tri) 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() diff --git a/doc/src/fplot_vector_field_plot_data.f90 b/doc/src/fplot_vector_field_plot_data.f90 index c4041e1..9c03b26 100644 --- a/doc/src/fplot_vector_field_plot_data.f90 +++ b/doc/src/fplot_vector_field_plot_data.f90 @@ -118,14 +118,18 @@ function vfpd_get_cmd(this) result(x) ! 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(' title "') call str%append(this%get_name()) call str%append('"') else - call str%append(' "-" notitle') + call str%append(' notitle') end if ! Property Definition @@ -208,6 +212,11 @@ subroutine vfpd_define_data(this, x, y, dx, dy, c, err) 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 diff --git a/doc/tipuesearch/tipuesearch_content.js b/doc/tipuesearch/tipuesearch_content.js index e97cc97..6293f11 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_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 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_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_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_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_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":"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_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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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_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_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.","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 :: 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":"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":"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_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":"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_bar – FPLOT ","text":"type, public, extends( plot_data_colored ) :: plot_data_bar Defines a data set tailored to bar charts. Type-Bound Procedures generic, public :: define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3 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. 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_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_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_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_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_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_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":"png_terminal – FPLOT ","text":"type, public, extends( terminal ) :: png_terminal Defines a terminal used for producing PNG outputs. Type-Bound Procedures procedure, public :: get_command_string => png_get_command_string private function png_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( png_terminal ), intent(in) :: this The png_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => png_get_filename private function png_get_filename(this) result(txt) Gets the filename for the output PNG file. Arguments Type Intent Optional Attributes Name class( png_terminal ), intent(in) :: this The png_terminal object. Return Value character(len=:), allocatable The filename, including the file extension (.png). 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 => png_set_filename private subroutine png_set_filename(this, txt) Sets the filename for the output PNG file. Arguments Type Intent Optional Attributes Name class( png_terminal ), intent(inout) :: this The png_terminal object. character(len=*), intent(in) :: txt The filename, including the file extension (.png). 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_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_2d – FPLOT ","text":"type, public, extends( scatter_plot_data ) :: plot_data_2d Defines a two-dimensional plot data set. Type-Bound Procedures 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 private 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_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_line => spd_get_draw_line private pure function spd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => spd_get_draw_markers private pure function spd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_style private pure function spd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_width private pure function spd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => spd_get_marker_frequency private pure function spd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => spd_get_marker_scaling private pure function spd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => spd_get_marker_style private pure function spd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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_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_line => spd_set_draw_line private subroutine spd_set_draw_line(this, x) Sets a value determining if a line 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 Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => spd_set_draw_markers private subroutine spd_set_draw_markers(this, x) Sets a value determining if data point markers 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 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 => spd_set_line_style private subroutine spd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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 => spd_set_line_width private subroutine spd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => spd_set_marker_frequency private subroutine spd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => spd_set_marker_scaling private subroutine spd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => spd_set_marker_style private subroutine spd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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_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 :: 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_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_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_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":"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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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_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.","tags":"","loc":"type\\plot_bar.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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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_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.","tags":"","loc":"type\\plot_polar.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":"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_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_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 :: 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 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 :: 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. procedure, 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_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_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.","tags":"","loc":"type\\plot.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_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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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_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_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.","tags":"","loc":"type\\plot_3d.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":"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 set_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 set_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 set_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 set_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 set_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":"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 :: define_data => pdbw_define_data_xstring private subroutine pdbw_define_data_xstring(this, x, boxmin, boxmax, whiskermin, whiskermax, 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. 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_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_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_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_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":"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":"plot_data – FPLOT ","text":"type, public, extends( plot_object ) :: plot_data A container for plot data. 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. 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_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_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 :: 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_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_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( plot_data_colored ) :: scatter_plot_data A plot_data object for describing scatter plot data sets. Type-Bound Procedures 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 private 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_draw_line => spd_get_draw_line private pure function spd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => spd_get_draw_markers private pure function spd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_style private pure function spd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_width private pure function spd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => spd_get_marker_frequency private pure function spd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => spd_get_marker_scaling private pure function spd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => spd_get_marker_style private pure function spd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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_draw_line => spd_set_draw_line private subroutine spd_set_draw_line(this, x) Sets a value determining if a line 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 Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => spd_set_draw_markers private subroutine spd_set_draw_markers(this, x) Sets a value determining if data point markers 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 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 => spd_set_line_style private subroutine spd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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 => spd_set_line_width private subroutine spd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => spd_set_marker_frequency private subroutine spd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => spd_set_marker_scaling private subroutine spd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => spd_set_marker_style private subroutine spd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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":"latex_terminal – FPLOT ","text":"type, public, extends( terminal ) :: latex_terminal A LATEX terminal. Type-Bound Procedures procedure, public :: get_command_string => tex_get_command_string private function tex_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( latex_terminal ), intent(in) :: this The latex_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => tex_get_filename private function tex_get_filename(this) result(txt) Gets the filename for the output LATEX file. Arguments Type Intent Optional Attributes Name class( latex_terminal ), intent(in) :: this The latex_terminal object. Return Value character(len=:), allocatable The filename, including the file extension (.tex). 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 => tex_set_filename private subroutine tex_set_filename(this, txt) Sets the filename for the output LATEX file. Arguments Type Intent Optional Attributes Name class( latex_terminal ), intent(inout) :: this The latex_terminal object. character(len=*), intent(in) :: txt The filename, including the file extension (.tex). 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":"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 :: 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_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_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":"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 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":"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 :: 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_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_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_3d – FPLOT ","text":"type, public, extends( scatter_plot_data ) :: plot_data_3d Defines a three-dimensional plot data set. Type-Bound Procedures 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 private 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_draw_line => spd_get_draw_line private pure function spd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => spd_get_draw_markers private pure function spd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_style private pure function spd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_width private pure function spd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => spd_get_marker_frequency private pure function spd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => spd_get_marker_scaling private pure function spd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => spd_get_marker_style private pure function spd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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_draw_line => spd_set_draw_line private subroutine spd_set_draw_line(this, x) Sets a value determining if a line 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 Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => spd_set_draw_markers private subroutine spd_set_draw_markers(this, x) Sets a value determining if data point markers 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 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 => spd_set_line_style private subroutine spd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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 => spd_set_line_width private subroutine spd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => spd_set_marker_frequency private subroutine spd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => spd_set_marker_scaling private subroutine spd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => spd_set_marker_style private subroutine spd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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":"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, 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 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 :: 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.","tags":"","loc":"type\\multiplot.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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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.","tags":"","loc":"type\\plot_2d.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 :: 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_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_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":"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":"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 :: 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_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_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":"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 :: 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_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_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":"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":"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":"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":"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":"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":"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_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":"fplot_plot_data_error_bars – FPLOT","text":"Uses fplot_colors fplot_errors iso_fortran_env ferror fplot_plot_data strings Derived Types type, public, extends( plot_data_colored ) :: plot_data_error_bars Defines a 2D error-bar based data set. Type-Bound Procedures 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_line_color => pdc_get_line_color 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_line_color => pdc_set_line_color 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_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_colors fplot_plot_data_tri_2d fplot_terminal fplot_qt_terminal fplot_plot_data_2d fplot_stats_plots fplot_constants fplot_surface_plot_data fplot_png_terminal fplot_surface_plot fplot_vector_field_plot_data fplot_latex_terminal fplot_plot_object fplot_plot fplot_wxt_terminal fplot_tri_surface_plot_data fplot_arrow fplot_plot_2d fplot_plot_data fplot_filled_plot_data fplot_core_routines fplot_plot_data_error_bars fplot_plot_bar fplot_plot_polar fplot_windows_terminal fplot_plot_data_3d fplot_plot_data_bar fplot_delaunay_tri_surface fplot_plot_data_histogram fplot_triangulations_delaunay_2d fplot_label fplot_multiplot fplot_plot_axis fplot_legend fplot_colormap fplot_plot_3d fplot_plot_data_box_whisker","tags":"","loc":"module\\fplot_core.html"},{"title":"fplot_surface_plot – FPLOT","text":"Uses fplot_legend fplot_errors iso_fortran_env ferror fplot_plot_3d strings 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_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_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_y_axis => p3d_get_y_axis procedure, public :: get_z_axis => p3d_get_z_axis procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure, public :: initialize => surf_init procedure, public :: is_title_defined => plt_has_title procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_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_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_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_z_intersect_xy => p3d_set_z_axis_intersect","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 :: to_hex_string => clr_to_hex_string","tags":"","loc":"module\\fplot_colors.html"},{"title":"fplot_terminal – FPLOT","text":"Uses iso_fortran_env fplot_constants strings fplot_plot_object 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( 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_triangulations_delaunay_2d – FPLOT","text":"Uses fplot_errors iso_fortran_env ferror geompack 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_label – FPLOT","text":"Uses iso_fortran_env fplot_constants strings fplot_plot_object 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_windows_terminal – FPLOT","text":"Uses iso_fortran_env fplot_terminal 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_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_data_bar – FPLOT","text":"Uses fplot_colors fplot_errors iso_fortran_env ferror fplot_plot_data strings Derived Types type, public, extends( plot_data_colored ) :: plot_data_bar Defines a data set tailored to bar charts. Type-Bound Procedures generic, public :: define_data => pdb_set_data_1, pdb_set_data_2, pdb_set_data_3 procedure, public :: get => pdb_get_data procedure, public :: get_axes_string => pdb_get_axes_cmd 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_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_transparency => pdb_get_alpha procedure, public :: get_use_labels => pdb_get_use_labels procedure, public :: set => pdb_set_data 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_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_transparency => pdb_set_alpha procedure, public :: set_use_labels => pdb_set_use_labels","tags":"","loc":"module\\fplot_plot_data_bar.html"},{"title":"fplot_png_terminal – FPLOT","text":"Uses iso_fortran_env fplot_constants strings fplot_terminal Derived Types type, public, extends( terminal ) :: png_terminal Defines a terminal used for producing PNG outputs. Type-Bound Procedures procedure, public :: get_command_string => png_get_command_string procedure, public :: get_filename => png_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 => png_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_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_2d – FPLOT","text":"Uses fplot_simplify fplot_errors iso_fortran_env ferror fplot_plot_data strings Derived Types type, public, extends( scatter_plot_data ) :: plot_data_2d Defines a two-dimensional plot data set. Type-Bound Procedures 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_draw_against_y2 => pd2d_get_draw_against_y2 procedure, public :: get_draw_line => spd_get_draw_line procedure, public :: get_draw_markers => spd_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 => spd_get_line_style procedure, public :: get_line_width => spd_get_line_width procedure, public :: get_marker_frequency => spd_get_marker_frequency procedure, public :: get_marker_scaling => spd_get_marker_scaling procedure, public :: get_marker_style => spd_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_draw_against_y2 => pd2d_set_draw_against_y2 procedure, public :: set_draw_line => spd_set_draw_line procedure, public :: set_draw_markers => spd_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 => spd_set_line_style procedure, public :: set_line_width => spd_set_line_width procedure, public :: set_marker_frequency => spd_set_marker_frequency procedure, public :: set_marker_scaling => spd_set_marker_scaling procedure, public :: set_marker_style => spd_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_histogram – FPLOT","text":"Uses fplot_colors fplot_errors iso_fortran_env ferror fplot_plot_data strings 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 :: 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_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_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_arrow – FPLOT","text":"Uses fplot_colors iso_fortran_env fplot_constants 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_plot_bar – FPLOT","text":"Uses iso_fortran_env fplot_plot_2d strings 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_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_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_y2_axis => p2d_get_y2_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 :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_bar_width => pb_set_bar_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_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","tags":"","loc":"module\\fplot_plot_bar.html"},{"title":"fplot_legend – FPLOT","text":"Uses iso_fortran_env fplot_constants strings fplot_plot_object 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_polar – FPLOT","text":"Uses fplot_terminal fplot_legend fplot_errors iso_fortran_env ferror fplot_constants fplot_plot fplot_plot_data strings 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_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_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 :: initialize => plr_init procedure, public :: is_title_defined => plt_has_title procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_autoscale => plr_set_autoscale procedure, public :: set_axis_equal => plt_set_axis_equal 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_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","tags":"","loc":"module\\fplot_plot_polar.html"},{"title":"fplot_colormap – FPLOT","text":"Uses fplot_colors forcolormap fplot_errors iso_fortran_env ferror fplot_plot_object strings 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_plot – FPLOT","text":"Uses fplot_colors fplot_terminal fplot_qt_terminal fplot_constants fplot_png_terminal fplot_latex_terminal fplot_errors ferror fplot_plot_object fplot_wxt_terminal fplot_arrow fplot_plot_data fplot_windows_terminal iso_fortran_env strings fplot_label fplot_legend collections 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_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_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 :: initialize => plt_init procedure, public :: is_title_defined => plt_has_title procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_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_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin","tags":"","loc":"module\\fplot_plot.html"},{"title":"fplot_plot_3d – FPLOT","text":"Uses fplot_plot_axis fplot_legend fplot_errors iso_fortran_env ferror fplot_constants fplot_plot fplot_plot_data strings 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_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_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_y_axis => p3d_get_y_axis procedure, public :: get_z_axis => p3d_get_z_axis procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure, public :: initialize => p3d_init procedure, public :: is_title_defined => plt_has_title procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_azimuth => p3d_set_azimuth 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_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_z_intersect_xy => p3d_set_z_axis_intersect","tags":"","loc":"module\\fplot_plot_3d.html"},{"title":"fplot_wxt_terminal – FPLOT","text":"Uses iso_fortran_env fplot_terminal 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_plot_axis – FPLOT","text":"Uses iso_fortran_env fplot_constants strings fplot_plot_object 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_plot_data_box_whisker – FPLOT","text":"Uses fplot_colors fplot_errors iso_fortran_env ferror fplot_plot_data strings Derived Types type, public, extends( plot_data_colored ) :: plot_data_box_whisker A container for box-whisker plot data. Type-Bound Procedures 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_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_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_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_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_qt_terminal – FPLOT","text":"Uses iso_fortran_env fplot_terminal 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_plot_data – FPLOT","text":"Uses fplot_colors fplot_errors iso_fortran_env ferror fplot_constants fplot_plot_object strings Interfaces 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_object ) :: plot_data A container for plot data. Type-Bound Procedures procedure( get_string_result ), public, deferred :: get_command_string procedure( pd_get_string_result ), public, deferred :: get_data_string procedure, public :: get_name => pd_get_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 :: 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_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_line_color => pdc_set_line_color procedure, public :: set_name => pd_set_name type, public, extends( plot_data_colored ) :: scatter_plot_data A plot_data object for describing scatter plot data sets. Type-Bound Procedures 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_draw_line => spd_get_draw_line procedure, public :: get_draw_markers => spd_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 => spd_get_line_style procedure, public :: get_line_width => spd_get_line_width procedure, public :: get_marker_frequency => spd_get_marker_frequency procedure, public :: get_marker_scaling => spd_get_marker_scaling procedure, public :: get_marker_style => spd_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_draw_line => spd_set_draw_line procedure, public :: set_draw_markers => spd_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 => spd_set_line_style procedure, public :: set_line_width => spd_set_line_width procedure, public :: set_marker_frequency => spd_set_marker_frequency procedure, public :: set_marker_scaling => spd_set_marker_scaling procedure, public :: set_marker_style => spd_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","tags":"","loc":"module\\fplot_plot_data.html"},{"title":"fplot_latex_terminal – FPLOT","text":"Uses iso_fortran_env fplot_constants strings fplot_terminal Derived Types type, public, extends( terminal ) :: latex_terminal A LATEX terminal. Type-Bound Procedures procedure, public :: get_command_string => tex_get_command_string procedure, public :: get_filename => tex_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 => tex_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_filled_plot_data – FPLOT","text":"Uses fplot_colors fplot_errors iso_fortran_env ferror fplot_plot_data strings Derived Types type, public, extends( plot_data_colored ) :: filled_plot_data Defines a two-dimensional filled plot data set. Type-Bound Procedures 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_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_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_errors – FPLOT","text":"Uses iso_fortran_env ferror 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. 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_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_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 = \"Calibri\" 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_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_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_stats_plots – FPLOT","text":"Uses fplot_colors fplot_plot_data_histogram fplot_multiplot fplot_terminal fplot_plot_data_2d fplot_plot_axis collections fplot_errors iso_fortran_env ferror fplot_constants fplot_plot_object fplot_plot fplot_plot_2d strings 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_surface_plot_data – FPLOT","text":"Uses fplot_errors iso_fortran_env ferror fplot_plot_data strings Derived Types type, public, extends( plot_data ) :: surface_plot_data Provides a three-dimensional surface plot data set. Type-Bound Procedures 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_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_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_3d – FPLOT","text":"Uses fplot_simplify fplot_errors iso_fortran_env ferror fplot_plot_data strings Derived Types type, public, extends( scatter_plot_data ) :: plot_data_3d Defines a three-dimensional plot data set. Type-Bound Procedures 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_draw_line => spd_get_draw_line procedure, public :: get_draw_markers => spd_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 => spd_get_line_style procedure, public :: get_line_width => spd_get_line_width procedure, public :: get_marker_frequency => spd_get_marker_frequency procedure, public :: get_marker_scaling => spd_get_marker_scaling procedure, public :: get_marker_style => spd_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_draw_line => spd_set_draw_line procedure, public :: set_draw_markers => spd_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 => spd_set_line_style procedure, public :: set_line_width => spd_set_line_width procedure, public :: set_marker_frequency => spd_set_marker_frequency procedure, public :: set_marker_scaling => spd_set_marker_scaling procedure, public :: set_marker_style => spd_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_multiplot – FPLOT","text":"Uses fplot_latex_terminal fplot_terminal fplot_qt_terminal collections fplot_errors fplot_windows_terminal iso_fortran_env ferror fplot_constants fplot_png_terminal fplot_plot_object fplot_plot fplot_wxt_terminal strings 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","tags":"","loc":"module\\fplot_multiplot.html"},{"title":"fplot_plot_2d – FPLOT","text":"Uses fplot_plot_axis fplot_legend fplot_errors iso_fortran_env ferror fplot_plot fplot_plot_data strings 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_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_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_y2_axis => p2d_get_y2_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 :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_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_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","tags":"","loc":"module\\fplot_plot_2d.html"},{"title":"fplot_simplify – FPLOT","text":"Uses fplot_errors iso_fortran_env ferror 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 fplot_colors fplot_triangulations_delaunay_2d iso_fortran_env fplot_constants fplot_plot_data strings Derived Types type, public, extends( plot_data_colored ) :: plot_data_tri_2d Defines a 2D triangulated data set. Type-Bound Procedures 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_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_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_delaunay_tri_surface – FPLOT","text":"Uses fplot_triangulations_delaunay_2d ieee_arithmetic fplot_errors iso_fortran_env ferror 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_tri_surface_plot_data – FPLOT","text":"Uses iso_fortran_env fplot_delaunay_tri_surface fplot_plot_data 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 :: 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_name => pd_get_name procedure, public :: get_use_wireframe => tspd_get_wireframe 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_vector_field_plot_data – FPLOT","text":"Uses fplot_colors fplot_errors iso_fortran_env ferror fplot_plot_data strings 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 :: 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_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_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_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 ferror 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. 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 :: 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 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 () ! 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 ( '\"' ) ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_error_bars.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 implicit none private ! FPLOT_CONSTANTS.F90 public :: GNUPLOT_TERMINAL_WIN32 public :: GNUPLOT_TERMINAL_WXT public :: GNUPLOT_TERMINAL_QT public :: GNUPLOT_TERMINAL_PNG public :: GNUPLOT_TERMINAL_LATEX public :: MARKER_PLUS public :: MARKER_X public :: MARKER_ASTERISK public :: MARKER_EMPTY_SQUARE public :: MARKER_FILLED_SQUARE public :: MARKER_EMPTY_CIRCLE public :: MARKER_FILLED_CIRCLE public :: MARKER_EMPTY_TRIANGLE public :: MARKER_FILLED_TRIANGLE public :: MARKER_EMPTY_NABLA public :: MARKER_FILLED_NABLA public :: MARKER_EMPTY_RHOMBUS public :: MARKER_FILLED_RHOMBUS public :: LINE_SOLID public :: LINE_DASHED public :: LINE_DOTTED public :: LINE_DASH_DOTTED public :: LINE_DASH_DOT_DOT public :: LEGEND_CENTER public :: LEGEND_LEFT public :: LEGEND_RIGHT public :: LEGEND_TOP public :: LEGEND_BOTTOM public :: LEGEND_ARRANGE_VERTICALLY public :: LEGEND_ARRANGE_HORIZONTALLY public :: POLAR_THETA_BOTTOM public :: POLAR_THETA_LEFT public :: POLAR_THETA_RIGHT public :: POLAR_THETA_TOP public :: POLAR_THETA_CCW public :: POLAR_THETA_CW public :: PLOTDATA_MAX_NAME_LENGTH public :: COORDINATES_CARTESIAN public :: COORDINATES_SPHERICAL public :: COORDINATES_CYLINDRICAL public :: ARROW_NO_HEAD public :: ARROW_HEAD public :: ARROW_BACKHEAD public :: ARROW_HEADS public :: ARROW_FILLED public :: ARROW_EMPTY public :: ARROW_NO_FILL public :: ARROW_NO_BORDER public :: GNUPLOT_HORIZONTAL_ALIGN_LEFT public :: GNUPLOT_HORIZONTAL_ALIGN_CENTER public :: GNUPLOT_HORIZONTAL_ALIGN_RIGHT public :: GNUPLOT_ROTATION_ORIGIN_RIGHT public :: GNUPLOT_ROTATION_ORIGIN_CENTER public :: GNUPLOT_ROTATION_ORIGIN_LEFT ! FPLOT_CORE_ROUTINES.F90 public :: linspace public :: logspace public :: meshgrid ! FPLOT_COLORS.F90 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 ! FPLOT_PLOT_OBJECT.F90 public :: plot_object public :: get_string_result ! FPLOT_PLOT_DATA.F90 public :: plot_data public :: pd_get_string_result public :: plot_data_colored public :: scatter_plot_data public :: spd_get_int_value public :: spd_get_string_result public :: spd_get_value public :: spd_set_value ! FPLOT_PLOT_AXIS.F90 public :: plot_axis public :: pa_get_string_result public :: x_axis public :: y_axis public :: y2_axis public :: z_axis public :: name_value_pair ! FPLOT_TERMINAL.F90 public :: terminal public :: term_get_string_result ! FPLOT_WINDOWS_TERMINAL.F90 public :: windows_terminal ! FPLOT_QT_TERMINAL.F90 public :: qt_terminal ! FPLOT_WXT_TERMINAL.F90 public :: wxt_terminal ! FPLOT_PNG_TERMINAL.F90 public :: png_terminal ! FPLOT_LATEX_TERMINAL.F90 public :: latex_terminal ! FPLOT_LABEL.F90 public :: plot_label ! FPLOT_ARROW.F90 public :: plot_arrow ! FPLOT_LEGEND.F90 public :: legend ! FPLOT_PLOT_DATA_2D.F90 public :: plot_data_2d ! FPLOT_PLOT_DATA_3D.F90 public :: plot_data_3d ! FPLOT_SURFACE_PLOT_DATA.F90 public :: surface_plot_data ! FPLOT_PLOT_DATA_ERROR_BARS.F90 public :: plot_data_error_bars ! FPLOT_PLOT_DATA_BAR.F90 public :: plot_data_bar ! FPLOT_PLOT_DATA_HISTOGRAM.F90 public :: plot_data_histogram ! FPLOT_COLORMAP.F90 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 ! FPLOT_FILLED_PLOT_DATA.F90 public :: filled_plot_data ! FPLOT_TRIANGULATIONS_DELAUNAY_2D.F90 public :: delaunay_tri_2d ! FPLOT_PLOT_DATA_TRI_2D.F90 public :: plot_data_tri_2d ! FPLOT_DELAUNAY_TRI_SURFACE.F90 public :: delaunay_tri_surface ! FPLOT_TRI_SURFACE_PLOT_DATA.F90 public :: tri_surface_plot_data ! FPLOT_VECTOR_FIELD_PLOT_DATA.F90 public :: vector_field_plot_data ! FPLOT_PLOT.F90 public :: plot ! FPLOT_PLOT_2D.F90 public :: plot_2d ! FPLOT_PLOT_3D.F90 public :: plot_3d ! FPLOT_SURFACE_PLOT.F90 public :: surface_plot ! FPLOT_MULTIPLOT.F90 public :: multiplot ! FPLOT_PLOT_BAR.F90 public :: plot_bar ! FPLOT_PLOT_POLAR.F90 public :: plot_polar ! FPLOT_STATS_PLOTS.F90 public :: correlation_plot ! FPLOT_PLOT_DATA_BOX_WHISKER.F90 public :: plot_data_box_whisker end module","tags":"","loc":"sourcefile\\fplot_core.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 ferror 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 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 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 ! ------------------------------------------------------------------------------ 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 :: 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 ! ------------------------------------------------------------------------------ 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_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 :: 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 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_terminal.f90.html"},{"title":"fplot_triangulations_delaunay_2d.f90 – FPLOT","text":"Source Code module fplot_triangulations_delaunay_2d use iso_fortran_env use geompack use ferror 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_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_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_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_data_bar.f90 – FPLOT","text":"Source Code ! fplot_plot_data_bar.f90 module fplot_plot_data_bar use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings use ferror 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. 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 generic , public :: define_data => pdb_set_data_1 , pdb_set_data_2 , & pdb_set_data_3 procedure , private :: pdb_set_data_1 procedure , private :: pdb_set_data_2 procedure , private :: pdb_set_data_3 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 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 ) :: n , ncols type ( color ) :: clr ! Initialization call str % initialize () ! Starting off... call str % append ( ' \"-\" ' ) ! Tic Labels if ( this % get_use_labels () . and . allocated ( this % m_barData ) . and . & allocated ( this % m_axisLabels )) then ncols = size ( this % m_barData , 2 ) if ( ncols == 1 ) then call str % append ( \" using 2:xtic(1) \" ) else call str % append ( \" using 2:\" ) call str % append ( to_string ( ncols )) call str % append ( \":xtic(1) \" ) end if end if ! Enforce a box plot call str % append ( \" with boxes \" ) ! 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 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 ( '\"' ) ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) ! 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 /= nbars ) 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 /= nbars ) 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 ! ------------------------------------------------------------------------------ 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 ) ! 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 ) ! 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 ) ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_bar.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 ( terminal ) :: png_terminal !! Defines a terminal used for producing PNG outputs. character ( len = 3 ), private :: m_id = \"png\" !! The terminal ID string character ( len = GNUPLOT_MAX_PATH_LENGTH ), private :: m_fname = \"default.png\" !! The filename of the PNG file to write. contains procedure , public :: get_filename => png_get_filename procedure , public :: set_filename => png_set_filename procedure , public :: get_id_string => png_get_term_string procedure , public :: get_command_string => png_get_command_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_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ function png_get_filename ( this ) result ( txt ) !! Gets the filename for the output PNG file. class ( png_terminal ), intent ( in ) :: this !! The png_terminal object. character ( len = :), allocatable :: txt !! The filename, including the file extension (.png). integer ( int32 ) :: n n = len_trim ( this % m_fname ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_fname ) end function ! -------------------- subroutine png_set_filename ( this , txt ) !!Sets the filename for the output PNG file. class ( png_terminal ), intent ( inout ) :: this !! The png_terminal object. character ( len = * ), intent ( in ) :: txt !! The filename, including the file extension (.png). 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.png\" end if end subroutine ! ------------------------------------------------------------------------------ function png_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( png_terminal ), intent ( in ) :: this !! The png_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 pngcairo enhanced \" ) 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_png_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_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 ferror 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 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 ! 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 ! 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 ! ****************************************************************************** ! ADDED: JAN. 12, 2024 - JAC ! ------------------------------------------------------------------------------ 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_2d.f90.html"},{"title":"fplot_plot_data_histogram.f90 – FPLOT","text":"Source Code ! fplot_plot_data_histogram.f90 module fplot_plot_data_histogram use iso_fortran_env use fplot_plot_data use fplot_errors use ferror 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 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 ! 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 ( \" 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_histogram.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.0 !! 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_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. 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 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 () ! 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 ! ------------------------------------------------------------------------------ ! TO DO YET: ! - clustering ! - stacking ! - lighting end module","tags":"","loc":"sourcefile\\fplot_plot_bar.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_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 ferror 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 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 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 ) if ( errmgr % has_error_occurred ()) return ! 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 ! 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\" ) 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 ! 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 plot function and data formatting commands n = this % get_count () 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 ! Define the data to plot do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"e\" ) 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_polar.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 ferror 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_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_colormap use fplot_colors use fplot_errors use fplot_constants use fplot_legend use fplot_label use fplot_arrow use ferror use strings use collections implicit none private public :: plot 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 = . true . !! Show grid lines? logical , private :: m_ticsIn = . true . !! Point tic marks in? logical , private :: m_drawBorder = . true . !! 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 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 :: 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 end type contains ! ------------------------------------------------------------------------------ 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 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 ! 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 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 , err = err ) 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 , err = err ) 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 ., err = err ) 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot.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 ferror 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. 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 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 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 ) if ( errmgr % has_error_occurred ()) return ! 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 ! 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_gridlines ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set grid\" ) 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 ! 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 plot function and data formatting commands n = this % get_count () 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 ! Define the data to plot do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"e\" ) ! if (i /= n) then ! call str%append(\"e\") ! end if 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_3d.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_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.0 !! 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_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 ferror 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. 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.0 !! On a scale of 0 -> 1, the whiskerwidth. real ( real32 ), private :: m_lineWidth = 1.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? 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 end type contains ! ------------------------------------------------------------------------------ subroutine pdbw_define_data_xstring ( this , x , boxmin , boxmax , whiskermin , & whiskermax , 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. 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 ) ! 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 ) 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 ) 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 ! Style ! call str%append(' \"-\" using ($0+1):2:3:4:5:xtic(1) with candlesticks') 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 ! 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 ))) 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_box_whisker.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_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 ferror use fplot_errors implicit none private public :: plot_data public :: pd_get_string_result public :: plot_data_colored public :: scatter_plot_data public :: spd_get_int_value public :: spd_get_string_result public :: spd_get_value public :: spd_set_value 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. contains procedure , public :: get_name => pd_get_name procedure , public :: set_name => pd_set_name procedure ( pd_get_string_result ), deferred , public :: get_data_string 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 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 ) :: scatter_plot_data !! A plot_data object for describing scatter plot data sets. private logical :: m_drawLine = . true . !! Draw a line connecting the dots? logical :: m_drawMarkers = . false . !! Draw the markers? integer ( int32 ) :: m_markerFrequency = 1 !! Marker frequency. real ( real32 ) :: m_lineWidth = 1.0 !! Line width. integer ( int32 ) :: m_lineStyle = LINE_SOLID !! Line style. integer ( int32 ) :: m_markerType = MARKER_FILLED_CIRCLE !! Marker type. real ( real32 ) :: m_markerSize = 0.5 !! Marker size multiplier. logical :: m_simplifyData = . true . !! True if large data sets should be simplified before sending to !! GNUPLOT. real ( real64 ) :: 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 :: m_dataDependentColors = . false . !! Determines if the data should utilize data-dependent colors. logical :: m_filledCurve = . false . !! Fill the curve? logical :: m_useVariableSizePoints = . false . !! Use variable size data points? contains procedure , public :: get_command_string => spd_get_cmd procedure , public :: get_line_width => spd_get_line_width procedure , public :: set_line_width => spd_set_line_width procedure , public :: get_line_style => spd_get_line_style procedure , public :: set_line_style => spd_set_line_style procedure , public :: get_draw_line => spd_get_draw_line procedure , public :: set_draw_line => spd_set_draw_line procedure , public :: get_draw_markers => spd_get_draw_markers procedure , public :: set_draw_markers => spd_set_draw_markers procedure , public :: get_marker_style => spd_get_marker_style procedure , public :: set_marker_style => spd_set_marker_style procedure , public :: get_marker_scaling => spd_get_marker_scaling procedure , public :: set_marker_scaling => spd_set_marker_scaling procedure , public :: get_marker_frequency => spd_get_marker_frequency procedure , public :: set_marker_frequency => spd_set_marker_frequency 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 ! ****************************************************************************** ! 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 ! ****************************************************************************** ! 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 () ! 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_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_line_width ( this ) result ( x ) !! Gets the width of the line, in pixels. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. real ( real32 ) :: x !! The line width. x = this % m_lineWidth end function ! -------------------- subroutine spd_set_line_width ( this , x ) !! Sets the width of the line, in pixels. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_lineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function spd_get_line_style ( this ) result ( x ) !! Gets the line style. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_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 spd_set_line_style ( this , x ) !! Sets the line style. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_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 spd_get_draw_line ( this ) result ( x ) !! Gets a value determining if a line should be drawn. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: x !! Returns true if the line should be drawn; else, false. x = this % m_drawLine end function ! -------------------- subroutine spd_set_draw_line ( this , x ) !! Sets a value determining if a line should be drawn. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_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 spd_get_draw_markers ( this ) result ( x ) !! Gets a value determining if data point markers should be drawn. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: x !! Returns true if the markers should be drawn; else, false. x = this % m_drawMarkers end function ! -------------------- subroutine spd_set_draw_markers ( this , x ) !! Sets a value determining if data point markers should be drawn. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_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 spd_get_marker_style ( this ) result ( x ) !! Gets the marker style. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_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 spd_set_marker_style ( this , x ) !! Sets the marker style. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_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 spd_get_marker_scaling ( this ) result ( x ) !! Gets the marker scaling. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. real ( real32 ) :: x !! The scaling factor. x = this % m_markerSize end function ! -------------------- subroutine spd_set_marker_scaling ( this , x ) !! Sets the marker scaling. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. real ( real32 ), intent ( in ) :: x !! The scaling factor. this % m_markerSize = x end subroutine ! ------------------------------------------------------------------------------ pure function spd_get_marker_frequency ( this ) result ( x ) !! Gets the marker frequency. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. integer ( int32 ) :: x !! The marker frequency. x = this % m_markerFrequency end function ! -------------------- subroutine spd_set_marker_frequency ( this , x ) !! Sets the marker frequency. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. integer ( int32 ), intent ( in ) :: x !! The marker frequency. this % m_markerFrequency = x end subroutine ! ------------------------------------------------------------------------------ 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_latex_terminal.f90 – FPLOT","text":"Source Code ! fplot_latex_terminal.f90 module fplot_latex_terminal use iso_fortran_env use fplot_terminal use fplot_constants use strings implicit none private public :: latex_terminal type , extends ( terminal ) :: latex_terminal !! A LATEX terminal. character ( len = 14 ), private :: m_id = \"epslatex color\" !! The terminal ID string character ( len = GNUPLOT_MAX_PATH_LENGTH ), private :: m_fname = \"default.tex\" !! The filename of the file to write. contains procedure , public :: get_filename => tex_get_filename procedure , public :: set_filename => tex_set_filename procedure , public :: get_id_string => tex_get_term_string procedure , public :: get_command_string => tex_get_command_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 ! ------------------------------------------------------------------------------ function tex_get_filename ( this ) result ( txt ) !! Gets the filename for the output LATEX file. class ( latex_terminal ), intent ( in ) :: this !! The latex_terminal object. character ( len = :), allocatable :: txt !! The filename, including the file extension (.tex). integer ( int32 ) :: n n = len_trim ( this % m_fname ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_fname ) end function ! -------------------- subroutine tex_set_filename ( this , txt ) !! Sets the filename for the output LATEX file. class ( latex_terminal ), intent ( inout ) :: this !! The latex_terminal object. character ( len = * ), intent ( in ) :: txt !! The filename, including the file extension (.tex). 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.tex\" end if end subroutine ! ------------------------------------------------------------------------------ function tex_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( latex_terminal ), intent ( in ) :: this !! The latex_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 epslatex color \" ) 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_latex_terminal.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 ferror 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 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 () ! 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 ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_filled_plot_data.f90.html"},{"title":"fplot_errors.f90 – FPLOT","text":"Source Code module fplot_errors use iso_fortran_env use ferror implicit none ! ****************************************************************************** ! 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_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 ( 100 , msg ) \"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 ( 100 , msg ) \"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 ( 100 , msg ) \"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 ( 100 , msg ) \"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_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. ! ****************************************************************************** ! 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 = \"Calibri\" !! 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_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 use ferror 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 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 ) if ( errmgr % has_error_occurred ()) return 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 ) if ( errmgr % has_error_occurred ()) return do j = 1 , n do i = 1 , n k = k + 1 call plts ( k )% initialize ( err = errmgr ) if ( errmgr % has_error_occurred ()) return if ( i == j ) then ! Plot a histogram of the data call hdata % define_data ( x (:, i ), err = errmgr ) if ( errmgr % has_error_occurred ()) return call plts ( k )% push ( hdata ) else ! Plot a scatter plot call pdata % define_data ( x (:, j ), x (:, i ), err = errmgr ) if ( errmgr % has_error_occurred ()) return 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 ) if ( errmgr % has_error_occurred ()) return 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_surface_plot_data.f90 – FPLOT","text":"Source Code module fplot_surface_plot_data use iso_fortran_env use fplot_plot_data use ferror 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 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 () ! 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 ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_surface_plot_data.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 ferror 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 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 ! 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 ! ****************************************************************************** ! ADDED: JAN. 12, 2020 - JAC ! ------------------------------------------------------------------------------ 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_3d.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_constants use fplot_errors use collections use ferror 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 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 , 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 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 ) :: 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 ! 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 ) 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 ) this % m_terminal => latex 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_multiplot.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 ferror 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 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 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 ) if ( errmgr % has_error_occurred ()) return ! 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 ! 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_gridlines ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set grid\" ) 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 ! 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 plot function and data formatting commands n = this % get_count () 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 ! Define the data to plot do i = 1 , n ptr => this % get ( i ) if (. not . associated ( ptr )) cycle call str % append ( new_line ( 'a' )) call str % append ( ptr % get_data_string ()) call str % append ( \"e\" ) ! if (i /= n) then ! call str%append(\"e\") ! end if 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_2d.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 ferror 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 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 () ! 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 ) 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_tri_2d.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 use ferror 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_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 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 ) ! 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 () ! 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 ) 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_tri_surface_plot_data.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 ferror 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 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 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 () ! 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 ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_vector_field_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":"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 :: 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 private 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_line => spd_get_draw_line private pure function spd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => spd_get_draw_markers private pure function spd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_style private pure function spd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_width private pure function spd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => spd_get_marker_frequency private pure function spd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => spd_get_marker_scaling private pure function spd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => spd_get_marker_style private pure function spd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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_line => spd_set_draw_line private subroutine spd_set_draw_line(this, x) Sets a value determining if a line 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 Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => spd_set_draw_markers private subroutine spd_set_draw_markers(this, x) Sets a value determining if data point markers 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 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 => spd_set_line_style private subroutine spd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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 => spd_set_line_width private subroutine spd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => spd_set_marker_frequency private subroutine spd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => spd_set_marker_scaling private subroutine spd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => spd_set_marker_style private subroutine spd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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":"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_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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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_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_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.","tags":"","loc":"type\\surface_plot.html"},{"title":"png_terminal – FPLOT ","text":"type, public, extends( terminal ) :: png_terminal Defines a terminal used for producing PNG outputs. Type-Bound Procedures procedure, public :: get_command_string => png_get_command_string private function png_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( png_terminal ), intent(in) :: this The png_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => png_get_filename private function png_get_filename(this) result(txt) Gets the filename for the output PNG file. Arguments Type Intent Optional Attributes Name class( png_terminal ), intent(in) :: this The png_terminal object. Return Value character(len=:), allocatable The filename, including the file extension (.png). 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 => png_set_filename private subroutine png_set_filename(this, txt) Sets the filename for the output PNG file. Arguments Type Intent Optional Attributes Name class( png_terminal ), intent(inout) :: this The png_terminal object. character(len=*), intent(in) :: txt The filename, including the file extension (.png). 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_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 :: 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 private 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_line => spd_get_draw_line private pure function spd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => spd_get_draw_markers private pure function spd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_style private pure function spd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_width private pure function spd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => spd_get_marker_frequency private pure function spd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => spd_get_marker_scaling private pure function spd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => spd_get_marker_style private pure function spd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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_line => spd_set_draw_line private subroutine spd_set_draw_line(this, x) Sets a value determining if a line 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 Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => spd_set_draw_markers private subroutine spd_set_draw_markers(this, x) Sets a value determining if data point markers 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 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 => spd_set_line_style private subroutine spd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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 => spd_set_line_width private subroutine spd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => spd_set_marker_frequency private subroutine spd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => spd_set_marker_scaling private subroutine spd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => spd_set_marker_style private subroutine spd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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_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.","tags":"","loc":"type\\plot_polar.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_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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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.","tags":"","loc":"type\\plot_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 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":"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_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 :: 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":"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":"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 :: 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_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_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":"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 :: 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":"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":"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 :: 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":"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":"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":"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":"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, 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 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 :: 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.","tags":"","loc":"type\\multiplot.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":"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_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":"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":"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_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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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_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_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.","tags":"","loc":"type\\plot_3d.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_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_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 :: 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 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 :: 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. procedure, 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_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_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.","tags":"","loc":"type\\plot.html"},{"title":"latex_terminal – FPLOT ","text":"type, public, extends( terminal ) :: latex_terminal A LATEX terminal. Type-Bound Procedures procedure, public :: get_command_string => tex_get_command_string private function tex_get_command_string(this) result(x) Returns the appropriate GNUPLOT command string to establish\nappropriate parameters. Arguments Type Intent Optional Attributes Name class( latex_terminal ), intent(in) :: this The latex_terminal object. Return Value character(len=:), allocatable The GNUPLOT command string. procedure, public :: get_filename => tex_get_filename private function tex_get_filename(this) result(txt) Gets the filename for the output LATEX file. Arguments Type Intent Optional Attributes Name class( latex_terminal ), intent(in) :: this The latex_terminal object. Return Value character(len=:), allocatable The filename, including the file extension (.tex). 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 => tex_set_filename private subroutine tex_set_filename(this, txt) Sets the filename for the output LATEX file. Arguments Type Intent Optional Attributes Name class( latex_terminal ), intent(inout) :: this The latex_terminal object. character(len=*), intent(in) :: txt The filename, including the file extension (.tex). 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":"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 :: 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":"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 :: 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_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_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_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 :: 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 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 :: 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. procedure, 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_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_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_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.","tags":"","loc":"type\\plot_bar.html"},{"title":"plot_data – FPLOT ","text":"type, public, extends( plot_object ) :: plot_data A container for plot data. Type-Bound Procedures 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 :: 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( plot_data_colored ) :: scatter_plot_data A plot_data object for describing scatter plot data sets. Type-Bound Procedures 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 private 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_line => spd_get_draw_line private pure function spd_get_draw_line(this) result(x) Gets a value determining if a line should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value logical Returns true if the line should be drawn; else, false. procedure, public :: get_draw_markers => spd_get_draw_markers private pure function spd_get_draw_markers(this) result(x) Gets a value determining if data point markers should be drawn. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_style private pure function spd_get_line_style(this) result(x) Gets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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 => spd_get_line_width private pure function spd_get_line_width(this) result(x) Gets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The line width. procedure, public :: get_marker_frequency => spd_get_marker_frequency private pure function spd_get_marker_frequency(this) result(x) Gets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value integer(kind=int32) The marker frequency. procedure, public :: get_marker_scaling => spd_get_marker_scaling private pure function spd_get_marker_scaling(this) result(x) Gets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_plot_data object. Return Value real(kind=real32) The scaling factor. procedure, public :: get_marker_style => spd_get_marker_style private pure function spd_get_marker_style(this) result(x) Gets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(in) :: this The scatter_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_line => spd_set_draw_line private subroutine spd_set_draw_line(this, x) Sets a value determining if a line 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 Set to true if the line should be drawn; else, false. procedure, public :: set_draw_markers => spd_set_draw_markers private subroutine spd_set_draw_markers(this, x) Sets a value determining if data point markers 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 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 => spd_set_line_style private subroutine spd_set_line_style(this, x) Sets the line style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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 => spd_set_line_width private subroutine spd_set_line_width(this, x) Sets the width of the line, in pixels. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The line width. procedure, public :: set_marker_frequency => spd_set_marker_frequency private subroutine spd_set_marker_frequency(this, x) Sets the marker frequency. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. integer(kind=int32), intent(in) :: x The marker frequency. procedure, public :: set_marker_scaling => spd_set_marker_scaling private subroutine spd_set_marker_scaling(this, x) Sets the marker scaling. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_plot_data object. real(kind=real32), intent(in) :: x The scaling factor. procedure, public :: set_marker_style => spd_set_marker_style private subroutine spd_set_marker_style(this, x) Sets the marker style. Arguments Type Intent Optional Attributes Name class( scatter_plot_data ), intent(inout) :: this The scatter_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_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 :: 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, 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. 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_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_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_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 :: 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 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. 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_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_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_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_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_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":"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 :: 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":"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 :: 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":"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":"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":"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":"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":"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":"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":"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":"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":"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_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":"fplot_plot_data_3d – FPLOT","text":"Uses ferror fplot_errors fplot_simplify iso_fortran_env fplot_plot_data strings Derived Types type, public, extends( scatter_plot_data ) :: plot_data_3d Defines a three-dimensional plot data set. Type-Bound Procedures 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_line => spd_get_draw_line procedure, public :: get_draw_markers => spd_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 => spd_get_line_style procedure, public :: get_line_width => spd_get_line_width procedure, public :: get_marker_frequency => spd_get_marker_frequency procedure, public :: get_marker_scaling => spd_get_marker_scaling procedure, public :: get_marker_style => spd_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_line => spd_set_draw_line procedure, public :: set_draw_markers => spd_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 => spd_set_line_style procedure, public :: set_line_width => spd_set_line_width procedure, public :: set_marker_frequency => spd_set_marker_frequency procedure, public :: set_marker_scaling => spd_set_marker_scaling procedure, public :: set_marker_style => spd_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_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_surface_plot – FPLOT","text":"Uses ferror fplot_errors fplot_plot_3d fplot_legend iso_fortran_env strings 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_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_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_y_axis => p3d_get_y_axis procedure, public :: get_z_axis => p3d_get_z_axis procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure, public :: initialize => surf_init procedure, public :: is_title_defined => plt_has_title procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_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_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_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_z_intersect_xy => p3d_set_z_axis_intersect","tags":"","loc":"module\\fplot_surface_plot.html"},{"title":"fplot_png_terminal – FPLOT","text":"Uses fplot_constants iso_fortran_env strings fplot_terminal Derived Types type, public, extends( terminal ) :: png_terminal Defines a terminal used for producing PNG outputs. Type-Bound Procedures procedure, public :: get_command_string => png_get_command_string procedure, public :: get_filename => png_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 => png_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_data_2d – FPLOT","text":"Uses ferror fplot_errors fplot_simplify iso_fortran_env fplot_plot_data strings Derived Types type, public, extends( scatter_plot_data ) :: plot_data_2d Defines a two-dimensional plot data set. Type-Bound Procedures 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_line => spd_get_draw_line procedure, public :: get_draw_markers => spd_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 => spd_get_line_style procedure, public :: get_line_width => spd_get_line_width procedure, public :: get_marker_frequency => spd_get_marker_frequency procedure, public :: get_marker_scaling => spd_get_marker_scaling procedure, public :: get_marker_style => spd_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_line => spd_set_draw_line procedure, public :: set_draw_markers => spd_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 => spd_set_line_style procedure, public :: set_line_width => spd_set_line_width procedure, public :: set_marker_frequency => spd_set_marker_frequency procedure, public :: set_marker_scaling => spd_set_marker_scaling procedure, public :: set_marker_style => spd_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_polar – FPLOT","text":"Uses ferror fplot_terminal fplot_errors fplot_legend iso_fortran_env fplot_plot_data fplot_constants fplot_plot strings 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_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_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 :: initialize => plr_init procedure, public :: is_title_defined => plt_has_title procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_autoscale => plr_set_autoscale procedure, public :: set_axis_equal => plt_set_axis_equal 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_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","tags":"","loc":"module\\fplot_plot_polar.html"},{"title":"fplot_simplify – FPLOT","text":"Uses ferror 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_windows_terminal – FPLOT","text":"Uses iso_fortran_env fplot_terminal 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_plot_2d – FPLOT","text":"Uses ferror fplot_errors fplot_legend iso_fortran_env fplot_plot_data fplot_plot_axis fplot_plot strings 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_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_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_y2_axis => p2d_get_y2_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 :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_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_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","tags":"","loc":"module\\fplot_plot_2d.html"},{"title":"fplot_stats_plots – FPLOT","text":"Uses ferror fplot_terminal fplot_errors fplot_plot_object iso_fortran_env fplot_plot_data_histogram fplot_plot_axis collections fplot_colors fplot_plot_2d fplot_plot_data_2d fplot_constants fplot_multiplot fplot_plot strings 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_delaunay_tri_surface – FPLOT","text":"Uses ferror fplot_errors iso_fortran_env fplot_triangulations_delaunay_2d 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_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 ferror fplot_errors iso_fortran_env fplot_plot_data fplot_colors strings 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 :: 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_wxt_terminal – FPLOT","text":"Uses iso_fortran_env fplot_terminal 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_plot_data_error_bars – FPLOT","text":"Uses ferror fplot_errors iso_fortran_env fplot_plot_data fplot_colors strings 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 :: 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_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_name => pd_set_name procedure, public :: set_use_error_box => pde_set_box","tags":"","loc":"module\\fplot_plot_data_error_bars.html"},{"title":"fplot_tri_surface_plot_data – FPLOT","text":"Uses iso_fortran_env fplot_delaunay_tri_surface fplot_plot_data 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 :: 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_arrow – FPLOT","text":"Uses fplot_plot_object iso_fortran_env fplot_colors fplot_constants 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_plot_data_tri_2d – FPLOT","text":"Uses iso_fortran_env fplot_plot_data fplot_triangulations_delaunay_2d fplot_colors fplot_constants strings Derived Types type, public, extends( plot_data_colored ) :: plot_data_tri_2d Defines a 2D triangulated data set. Type-Bound Procedures 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_triangulations_delaunay_2d – FPLOT","text":"Uses geompack ferror 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_colormap – FPLOT","text":"Uses ferror forcolormap fplot_errors fplot_plot_object iso_fortran_env fplot_colors strings 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_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_plot_data fplot_triangulations_delaunay_2d fplot_plot_axis fplot_plot_polar fplot_plot_data_error_bars fplot_surface_plot fplot_surface_plot_data fplot_arrow fplot_vector_field_plot_data fplot_plot_data_bar fplot_filled_plot_data fplot_terminal fplot_plot_data_tri_2d fplot_plot_data_3d fplot_legend fplot_colors fplot_core_routines fplot_plot_2d fplot_plot_data_2d fplot_windows_terminal fplot_constants fplot_stats_plots fplot_multiplot fplot_label fplot_latex_terminal fplot_plot_3d fplot_plot_object fplot_qt_terminal fplot_delaunay_tri_surface fplot_png_terminal fplot_plot_data_histogram fplot_tri_surface_plot_data fplot_wxt_terminal fplot_plot_bar fplot_plot fplot_plot_data_box_whisker fplot_colormap","tags":"","loc":"module\\fplot_core.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_multiplot – FPLOT","text":"Uses ferror fplot_latex_terminal fplot_terminal fplot_errors fplot_plot_object iso_fortran_env fplot_qt_terminal fplot_png_terminal collections fplot_wxt_terminal fplot_windows_terminal fplot_constants fplot_plot strings 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","tags":"","loc":"module\\fplot_multiplot.html"},{"title":"fplot_qt_terminal – FPLOT","text":"Uses iso_fortran_env fplot_terminal 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_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( 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_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_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_plot_3d – FPLOT","text":"Uses ferror fplot_errors fplot_legend iso_fortran_env fplot_plot_data fplot_plot_axis fplot_constants fplot_plot strings 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_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_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_y_axis => p3d_get_y_axis procedure, public :: get_z_axis => p3d_get_z_axis procedure, public :: get_z_intersect_xy => p3d_get_z_axis_intersect procedure, public :: initialize => p3d_init procedure, public :: is_title_defined => plt_has_title procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_azimuth => p3d_set_azimuth 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_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_z_intersect_xy => p3d_set_z_axis_intersect","tags":"","loc":"module\\fplot_plot_3d.html"},{"title":"fplot_plot – FPLOT","text":"Uses fplot_plot_data ferror fplot_arrow fplot_terminal fplot_legend collections fplot_colors fplot_windows_terminal fplot_constants fplot_label fplot_latex_terminal fplot_errors fplot_plot_object iso_fortran_env fplot_qt_terminal fplot_png_terminal fplot_wxt_terminal strings 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_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_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 :: initialize => plt_init procedure, public :: is_title_defined => plt_has_title procedure, public :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_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_tics_inward => plt_set_tics_in procedure, public :: set_title => plt_set_title procedure, public :: set_top_margin => plt_set_top_margin","tags":"","loc":"module\\fplot_plot.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 = \"Calibri\" 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_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_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_latex_terminal – FPLOT","text":"Uses fplot_constants iso_fortran_env fplot_terminal strings Derived Types type, public, extends( terminal ) :: latex_terminal A LATEX terminal. Type-Bound Procedures procedure, public :: get_command_string => tex_get_command_string procedure, public :: get_filename => tex_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 => tex_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_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 :: to_hex_string => clr_to_hex_string","tags":"","loc":"module\\fplot_colors.html"},{"title":"fplot_filled_plot_data – FPLOT","text":"Uses ferror fplot_errors iso_fortran_env fplot_plot_data fplot_colors strings Derived Types type, public, extends( plot_data_colored ) :: filled_plot_data Defines a two-dimensional filled plot data set. Type-Bound Procedures 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_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_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_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_y2_axis => p2d_get_y2_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 :: pop => plt_pop_data procedure, public :: pop_arrow => plt_pop_arrow procedure, public :: pop_label => plt_pop_label procedure, 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_bar_width => pb_set_bar_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_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","tags":"","loc":"module\\fplot_plot_bar.html"},{"title":"fplot_plot_data – FPLOT","text":"Uses ferror fplot_errors fplot_plot_object iso_fortran_env fplot_colors fplot_constants strings Interfaces 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_object ) :: plot_data A container for plot data. Type-Bound Procedures 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 :: 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( plot_data_colored ) :: scatter_plot_data A plot_data object for describing scatter plot data sets. Type-Bound Procedures 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_line => spd_get_draw_line procedure, public :: get_draw_markers => spd_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 => spd_get_line_style procedure, public :: get_line_width => spd_get_line_width procedure, public :: get_marker_frequency => spd_get_marker_frequency procedure, public :: get_marker_scaling => spd_get_marker_scaling procedure, public :: get_marker_style => spd_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_line => spd_set_draw_line procedure, public :: set_draw_markers => spd_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 => spd_set_line_style procedure, public :: set_line_width => spd_set_line_width procedure, public :: set_marker_frequency => spd_set_marker_frequency procedure, public :: set_marker_scaling => spd_set_marker_scaling procedure, public :: set_marker_style => spd_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","tags":"","loc":"module\\fplot_plot_data.html"},{"title":"fplot_plot_data_box_whisker – FPLOT","text":"Uses ferror fplot_errors iso_fortran_env fplot_plot_data fplot_colors strings Derived Types type, public, extends( plot_data_colored ) :: plot_data_box_whisker A container for box-whisker plot data. Type-Bound Procedures 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_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_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_errors – FPLOT","text":"Uses ferror 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. 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_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_plot_data_bar – FPLOT","text":"Uses ferror fplot_errors iso_fortran_env fplot_plot_data fplot_colors strings Derived Types type, public, extends( plot_data_colored ) :: plot_data_bar Defines a data set tailored to bar charts. Type-Bound Procedures 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 procedure, public :: get => pdb_get_data procedure, public :: get_axes_string => pdb_get_axes_cmd 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_transparency => pdb_get_alpha procedure, public :: get_use_labels => pdb_get_use_labels procedure, public :: set => pdb_set_data 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_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_transparency => pdb_set_alpha procedure, public :: set_use_labels => pdb_set_use_labels","tags":"","loc":"module\\fplot_plot_data_bar.html"},{"title":"fplot_surface_plot_data – FPLOT","text":"Uses ferror fplot_errors iso_fortran_env fplot_plot_data strings Derived Types type, public, extends( plot_data ) :: surface_plot_data Provides a three-dimensional surface plot data set. Type-Bound Procedures 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_vector_field_plot_data – FPLOT","text":"Uses ferror fplot_errors iso_fortran_env fplot_plot_data fplot_colors strings 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 :: 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_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 ferror 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 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 ! ****************************************************************************** ! ADDED: JAN. 12, 2020 - JAC ! ------------------------------------------------------------------------------ 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_3d.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_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 ferror 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 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 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_surface_plot.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 ( terminal ) :: png_terminal !! Defines a terminal used for producing PNG outputs. character ( len = 3 ), private :: m_id = \"png\" !! The terminal ID string character ( len = GNUPLOT_MAX_PATH_LENGTH ), private :: m_fname = \"default.png\" !! The filename of the PNG file to write. contains procedure , public :: get_filename => png_get_filename procedure , public :: set_filename => png_set_filename procedure , public :: get_id_string => png_get_term_string procedure , public :: get_command_string => png_get_command_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_trim ( this % m_id ) allocate ( character ( len = n ) :: x ) x = this % m_id end function ! ------------------------------------------------------------------------------ function png_get_filename ( this ) result ( txt ) !! Gets the filename for the output PNG file. class ( png_terminal ), intent ( in ) :: this !! The png_terminal object. character ( len = :), allocatable :: txt !! The filename, including the file extension (.png). integer ( int32 ) :: n n = len_trim ( this % m_fname ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_fname ) end function ! -------------------- subroutine png_set_filename ( this , txt ) !!Sets the filename for the output PNG file. class ( png_terminal ), intent ( inout ) :: this !! The png_terminal object. character ( len = * ), intent ( in ) :: txt !! The filename, including the file extension (.png). 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.png\" end if end subroutine ! ------------------------------------------------------------------------------ function png_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( png_terminal ), intent ( in ) :: this !! The png_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 pngcairo enhanced \" ) 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_png_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 ferror 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 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 ! ****************************************************************************** ! ADDED: JAN. 12, 2024 - JAC ! ------------------------------------------------------------------------------ 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_2d.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 ferror 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 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 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 ) if ( errmgr % has_error_occurred ()) return ! 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 ! 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\" ) 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 ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_polar.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 ferror 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_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_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 ferror 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 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 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 ) if ( errmgr % has_error_occurred ()) return ! 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 ! 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_gridlines ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set grid\" ) 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 ! 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' )) 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 ! ------------------------------------------------------------------------------ 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_2d.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 use ferror 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 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 ) if ( errmgr % has_error_occurred ()) return 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 ) if ( errmgr % has_error_occurred ()) return do j = 1 , n do i = 1 , n k = k + 1 call plts ( k )% initialize ( err = errmgr ) if ( errmgr % has_error_occurred ()) return if ( i == j ) then ! Plot a histogram of the data call hdata % define_data ( x (:, i ), err = errmgr ) if ( errmgr % has_error_occurred ()) return call plts ( k )% push ( hdata ) else ! Plot a scatter plot call pdata % define_data ( x (:, j ), x (:, i ), err = errmgr ) if ( errmgr % has_error_occurred ()) return 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 ) if ( errmgr % has_error_occurred ()) return 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_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 use ferror 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_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 module fplot_plot_data_histogram use iso_fortran_env use fplot_plot_data use fplot_errors use ferror 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 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_histogram.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_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 ferror 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. 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 :: 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 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 ( '\"' ) ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_error_bars.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 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 ) ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_tri_surface_plot_data.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.0 !! 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_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 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_tri_2d.f90.html"},{"title":"fplot_triangulations_delaunay_2d.f90 – FPLOT","text":"Source Code module fplot_triangulations_delaunay_2d use iso_fortran_env use geompack use ferror 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_colormap.f90 – FPLOT","text":"Source Code ! fplot_colormap.f90 module fplot_colormap use iso_fortran_env use fplot_plot_object use strings use ferror 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_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 implicit none private ! FPLOT_CONSTANTS.F90 public :: GNUPLOT_TERMINAL_WIN32 public :: GNUPLOT_TERMINAL_WXT public :: GNUPLOT_TERMINAL_QT public :: GNUPLOT_TERMINAL_PNG public :: GNUPLOT_TERMINAL_LATEX public :: MARKER_PLUS public :: MARKER_X public :: MARKER_ASTERISK public :: MARKER_EMPTY_SQUARE public :: MARKER_FILLED_SQUARE public :: MARKER_EMPTY_CIRCLE public :: MARKER_FILLED_CIRCLE public :: MARKER_EMPTY_TRIANGLE public :: MARKER_FILLED_TRIANGLE public :: MARKER_EMPTY_NABLA public :: MARKER_FILLED_NABLA public :: MARKER_EMPTY_RHOMBUS public :: MARKER_FILLED_RHOMBUS public :: LINE_SOLID public :: LINE_DASHED public :: LINE_DOTTED public :: LINE_DASH_DOTTED public :: LINE_DASH_DOT_DOT public :: LEGEND_CENTER public :: LEGEND_LEFT public :: LEGEND_RIGHT public :: LEGEND_TOP public :: LEGEND_BOTTOM public :: LEGEND_ARRANGE_VERTICALLY public :: LEGEND_ARRANGE_HORIZONTALLY public :: POLAR_THETA_BOTTOM public :: POLAR_THETA_LEFT public :: POLAR_THETA_RIGHT public :: POLAR_THETA_TOP public :: POLAR_THETA_CCW public :: POLAR_THETA_CW public :: PLOTDATA_MAX_NAME_LENGTH public :: COORDINATES_CARTESIAN public :: COORDINATES_SPHERICAL public :: COORDINATES_CYLINDRICAL public :: ARROW_NO_HEAD public :: ARROW_HEAD public :: ARROW_BACKHEAD public :: ARROW_HEADS public :: ARROW_FILLED public :: ARROW_EMPTY public :: ARROW_NO_FILL public :: ARROW_NO_BORDER public :: GNUPLOT_HORIZONTAL_ALIGN_LEFT public :: GNUPLOT_HORIZONTAL_ALIGN_CENTER public :: GNUPLOT_HORIZONTAL_ALIGN_RIGHT public :: GNUPLOT_ROTATION_ORIGIN_RIGHT public :: GNUPLOT_ROTATION_ORIGIN_CENTER public :: GNUPLOT_ROTATION_ORIGIN_LEFT ! FPLOT_CORE_ROUTINES.F90 public :: linspace public :: logspace public :: meshgrid ! FPLOT_COLORS.F90 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 ! FPLOT_PLOT_OBJECT.F90 public :: plot_object public :: get_string_result ! FPLOT_PLOT_DATA.F90 public :: plot_data public :: pd_get_string_result public :: plot_data_colored public :: scatter_plot_data public :: spd_get_int_value public :: spd_get_string_result public :: spd_get_value public :: spd_set_value ! FPLOT_PLOT_AXIS.F90 public :: plot_axis public :: pa_get_string_result public :: x_axis public :: y_axis public :: y2_axis public :: z_axis public :: name_value_pair ! FPLOT_TERMINAL.F90 public :: terminal public :: term_get_string_result ! FPLOT_WINDOWS_TERMINAL.F90 public :: windows_terminal ! FPLOT_QT_TERMINAL.F90 public :: qt_terminal ! FPLOT_WXT_TERMINAL.F90 public :: wxt_terminal ! FPLOT_PNG_TERMINAL.F90 public :: png_terminal ! FPLOT_LATEX_TERMINAL.F90 public :: latex_terminal ! FPLOT_LABEL.F90 public :: plot_label ! FPLOT_ARROW.F90 public :: plot_arrow ! FPLOT_LEGEND.F90 public :: legend ! FPLOT_PLOT_DATA_2D.F90 public :: plot_data_2d ! FPLOT_PLOT_DATA_3D.F90 public :: plot_data_3d ! FPLOT_SURFACE_PLOT_DATA.F90 public :: surface_plot_data ! FPLOT_PLOT_DATA_ERROR_BARS.F90 public :: plot_data_error_bars ! FPLOT_PLOT_DATA_BAR.F90 public :: plot_data_bar ! FPLOT_PLOT_DATA_HISTOGRAM.F90 public :: plot_data_histogram ! FPLOT_COLORMAP.F90 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 ! FPLOT_FILLED_PLOT_DATA.F90 public :: filled_plot_data ! FPLOT_TRIANGULATIONS_DELAUNAY_2D.F90 public :: delaunay_tri_2d ! FPLOT_PLOT_DATA_TRI_2D.F90 public :: plot_data_tri_2d ! FPLOT_DELAUNAY_TRI_SURFACE.F90 public :: delaunay_tri_surface ! FPLOT_TRI_SURFACE_PLOT_DATA.F90 public :: tri_surface_plot_data ! FPLOT_VECTOR_FIELD_PLOT_DATA.F90 public :: vector_field_plot_data ! FPLOT_PLOT.F90 public :: plot ! FPLOT_PLOT_2D.F90 public :: plot_2d ! FPLOT_PLOT_3D.F90 public :: plot_3d ! FPLOT_SURFACE_PLOT.F90 public :: surface_plot ! FPLOT_MULTIPLOT.F90 public :: multiplot ! FPLOT_PLOT_BAR.F90 public :: plot_bar ! FPLOT_PLOT_POLAR.F90 public :: plot_polar ! FPLOT_STATS_PLOTS.F90 public :: correlation_plot ! FPLOT_PLOT_DATA_BOX_WHISKER.F90 public :: plot_data_box_whisker end module","tags":"","loc":"sourcefile\\fplot_core.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_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_constants use fplot_errors use collections use ferror 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 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 , 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 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 ) :: 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 ! 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 ) 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 ) this % m_terminal => latex 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_multiplot.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_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 :: 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 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_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_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.0 !! 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_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 ferror 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. 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 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 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 ) if ( errmgr % has_error_occurred ()) return ! 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 ! 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_gridlines ()) then call str % append ( new_line ( 'a' )) call str % append ( \"set grid\" ) 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 ! 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_3d.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_colormap use fplot_colors use fplot_errors use fplot_constants use fplot_legend use fplot_label use fplot_arrow use ferror use strings use collections implicit none private public :: plot 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 = . true . !! Show grid lines? logical , private :: m_ticsIn = . true . !! Point tic marks in? logical , private :: m_drawBorder = . true . !! 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 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 :: 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 end type contains ! ------------------------------------------------------------------------------ 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 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 ! 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 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 , err = err ) 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 , err = err ) 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 ., err = err ) 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot.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. ! ****************************************************************************** ! 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 = \"Calibri\" !! 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_latex_terminal.f90 – FPLOT","text":"Source Code ! fplot_latex_terminal.f90 module fplot_latex_terminal use iso_fortran_env use fplot_terminal use fplot_constants use strings implicit none private public :: latex_terminal type , extends ( terminal ) :: latex_terminal !! A LATEX terminal. character ( len = 14 ), private :: m_id = \"epslatex color\" !! The terminal ID string character ( len = GNUPLOT_MAX_PATH_LENGTH ), private :: m_fname = \"default.tex\" !! The filename of the file to write. contains procedure , public :: get_filename => tex_get_filename procedure , public :: set_filename => tex_set_filename procedure , public :: get_id_string => tex_get_term_string procedure , public :: get_command_string => tex_get_command_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 ! ------------------------------------------------------------------------------ function tex_get_filename ( this ) result ( txt ) !! Gets the filename for the output LATEX file. class ( latex_terminal ), intent ( in ) :: this !! The latex_terminal object. character ( len = :), allocatable :: txt !! The filename, including the file extension (.tex). integer ( int32 ) :: n n = len_trim ( this % m_fname ) allocate ( character ( len = n ) :: txt ) txt = trim ( this % m_fname ) end function ! -------------------- subroutine tex_set_filename ( this , txt ) !! Sets the filename for the output LATEX file. class ( latex_terminal ), intent ( inout ) :: this !! The latex_terminal object. character ( len = * ), intent ( in ) :: txt !! The filename, including the file extension (.tex). 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.tex\" end if end subroutine ! ------------------------------------------------------------------------------ function tex_get_command_string ( this ) result ( x ) !! Returns the appropriate GNUPLOT command string to establish !! appropriate parameters. class ( latex_terminal ), intent ( in ) :: this !! The latex_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 epslatex color \" ) 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_latex_terminal.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 :: 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 ! ------------------------------------------------------------------------------ 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_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 ferror 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 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_filled_plot_data.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. 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 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 () ! 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 ! ------------------------------------------------------------------------------ ! TO DO YET: ! - clustering ! - stacking ! - lighting end module","tags":"","loc":"sourcefile\\fplot_plot_bar.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 ferror use fplot_errors implicit none private public :: plot_data public :: pd_get_string_result public :: plot_data_colored public :: scatter_plot_data public :: spd_get_int_value public :: spd_get_string_result public :: spd_get_value public :: spd_set_value 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 ( pd_get_string_result ), deferred , public :: get_data_string 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 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 ) :: scatter_plot_data !! A plot_data object for describing scatter plot data sets. private logical :: m_drawLine = . true . !! Draw a line connecting the dots? logical :: m_drawMarkers = . false . !! Draw the markers? integer ( int32 ) :: m_markerFrequency = 1 !! Marker frequency. real ( real32 ) :: m_lineWidth = 1.0 !! Line width. integer ( int32 ) :: m_lineStyle = LINE_SOLID !! Line style. integer ( int32 ) :: m_markerType = MARKER_FILLED_CIRCLE !! Marker type. real ( real32 ) :: m_markerSize = 0.5 !! Marker size multiplier. logical :: m_simplifyData = . true . !! True if large data sets should be simplified before sending to !! GNUPLOT. real ( real64 ) :: 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 :: m_dataDependentColors = . false . !! Determines if the data should utilize data-dependent colors. logical :: m_filledCurve = . false . !! Fill the curve? logical :: m_useVariableSizePoints = . false . !! Use variable size data points? contains procedure , public :: get_command_string => spd_get_cmd procedure , public :: get_line_width => spd_get_line_width procedure , public :: set_line_width => spd_set_line_width procedure , public :: get_line_style => spd_get_line_style procedure , public :: set_line_style => spd_set_line_style procedure , public :: get_draw_line => spd_get_draw_line procedure , public :: set_draw_line => spd_set_draw_line procedure , public :: get_draw_markers => spd_get_draw_markers procedure , public :: set_draw_markers => spd_set_draw_markers procedure , public :: get_marker_style => spd_get_marker_style procedure , public :: set_marker_style => spd_set_marker_style procedure , public :: get_marker_scaling => spd_get_marker_scaling procedure , public :: set_marker_scaling => spd_set_marker_scaling procedure , public :: get_marker_frequency => spd_get_marker_frequency procedure , public :: set_marker_frequency => spd_set_marker_frequency 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_number ( r ) r = r * huge ( count ) count = floor ( r ) str = \"PlotData\" // to_string ( count ) call this % set_datablock_name ( char ( str )) 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 ! ****************************************************************************** ! 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_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_line_width ( this ) result ( x ) !! Gets the width of the line, in pixels. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. real ( real32 ) :: x !! The line width. x = this % m_lineWidth end function ! -------------------- subroutine spd_set_line_width ( this , x ) !! Sets the width of the line, in pixels. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. real ( real32 ), intent ( in ) :: x !! The line width. this % m_lineWidth = x end subroutine ! ------------------------------------------------------------------------------ pure function spd_get_line_style ( this ) result ( x ) !! Gets the line style. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_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 spd_set_line_style ( this , x ) !! Sets the line style. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_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 spd_get_draw_line ( this ) result ( x ) !! Gets a value determining if a line should be drawn. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: x !! Returns true if the line should be drawn; else, false. x = this % m_drawLine end function ! -------------------- subroutine spd_set_draw_line ( this , x ) !! Sets a value determining if a line should be drawn. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_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 spd_get_draw_markers ( this ) result ( x ) !! Gets a value determining if data point markers should be drawn. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. logical :: x !! Returns true if the markers should be drawn; else, false. x = this % m_drawMarkers end function ! -------------------- subroutine spd_set_draw_markers ( this , x ) !! Sets a value determining if data point markers should be drawn. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_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 spd_get_marker_style ( this ) result ( x ) !! Gets the marker style. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_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 spd_set_marker_style ( this , x ) !! Sets the marker style. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_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 spd_get_marker_scaling ( this ) result ( x ) !! Gets the marker scaling. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. real ( real32 ) :: x !! The scaling factor. x = this % m_markerSize end function ! -------------------- subroutine spd_set_marker_scaling ( this , x ) !! Sets the marker scaling. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. real ( real32 ), intent ( in ) :: x !! The scaling factor. this % m_markerSize = x end subroutine ! ------------------------------------------------------------------------------ pure function spd_get_marker_frequency ( this ) result ( x ) !! Gets the marker frequency. class ( scatter_plot_data ), intent ( in ) :: this !! The scatter_plot_data object. integer ( int32 ) :: x !! The marker frequency. x = this % m_markerFrequency end function ! -------------------- subroutine spd_set_marker_frequency ( this , x ) !! Sets the marker frequency. class ( scatter_plot_data ), intent ( inout ) :: this !! The scatter_plot_data object. integer ( int32 ), intent ( in ) :: x !! The marker frequency. this % m_markerFrequency = x end subroutine ! ------------------------------------------------------------------------------ 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_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 ferror 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. 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.0 !! On a scale of 0 -> 1, the whiskerwidth. real ( real32 ), private :: m_lineWidth = 1.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? 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 end type contains ! ------------------------------------------------------------------------------ subroutine pdbw_define_data_xstring ( this , x , boxmin , boxmax , whiskermin , & whiskermax , 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. 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 ) 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 ) 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 ! 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 ))) 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_box_whisker.f90.html"},{"title":"fplot_errors.f90 – FPLOT","text":"Source Code module fplot_errors use iso_fortran_env use ferror implicit none ! ****************************************************************************** ! 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_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 ( 100 , msg ) \"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 ( 100 , msg ) \"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 ( 100 , msg ) \"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 ( 100 , msg ) \"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_plot_data_bar.f90 – FPLOT","text":"Source Code ! fplot_plot_data_bar.f90 module fplot_plot_data_bar use iso_fortran_env use fplot_plot_data use fplot_errors use fplot_colors use strings use ferror 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. 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 generic , public :: define_data => pdb_set_data_1 , pdb_set_data_2 , & pdb_set_data_3 procedure , private :: pdb_set_data_1 procedure , private :: pdb_set_data_2 procedure , private :: pdb_set_data_3 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 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 ) :: n , ncols type ( color ) :: clr ! Initialization call str % initialize () ! Data Block call str % append ( \" $\" ) call str % append ( this % get_datablock_name ()) ! Tic Labels if ( this % get_use_labels () . and . allocated ( this % m_barData ) . and . & allocated ( this % m_axisLabels )) then ncols = size ( this % m_barData , 2 ) if ( ncols == 1 ) then call str % append ( \" using 2:xtic(1) \" ) else call str % append ( \" using 2:\" ) call str % append ( to_string ( ncols )) call str % append ( \":xtic(1) \" ) end if end if ! Enforce a box plot call str % append ( \" with boxes \" ) ! 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 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 ( '\"' ) ! Define the axes structure call str % append ( \" \" ) call str % append ( this % get_axes_string ()) ! 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 /= nbars ) 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 /= nbars ) 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 ! ------------------------------------------------------------------------------ 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_plot_data_bar.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 ferror 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 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_surface_plot_data.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 ferror 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 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 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 ! ------------------------------------------------------------------------------ end module","tags":"","loc":"sourcefile\\fplot_vector_field_plot_data.f90.html"}]} \ No newline at end of file diff --git a/doc/type/color.html b/doc/type/color.html index 3257d09..827d1f7 100644 --- a/doc/type/color.html +++ b/doc/type/color.html @@ -399,7 +399,7 @@

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/type/colormap.html b/doc/type/colormap.html index 9350d93..1a76abb 100644 --- a/doc/type/colormap.html +++ b/doc/type/colormap.html @@ -131,14 +131,14 @@

                  Type-Bound Procedures

                  @@ -224,7 +224,7 @@

                  - +

                  procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +282,7 @@

                  - +

                  procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +400,7 @@

                  - +

                  procedure, public :: get_label => cm_get_label @@ -516,7 +516,7 @@

                  - +

                  procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +654,7 @@

                  Arguments

                  - +

                  procedure, public :: set_label => cm_set_label @@ -805,7 +805,7 @@

                  Arguments

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/type/cool_colormap.html b/doc/type/cool_colormap.html index c14e8fe..c8c1bfc 100644 --- a/doc/type/cool_colormap.html +++ b/doc/type/cool_colormap.html @@ -131,14 +131,14 @@

                  Type-Bound Procedures

                  @@ -224,7 +224,7 @@

                  - +

                  procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +282,7 @@

                  - +

                  procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +400,7 @@

                  - +

                  procedure, public :: get_label => cm_get_label @@ -516,7 +516,7 @@

                  - +

                  procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +654,7 @@

                  Arguments

                  - +

                  procedure, public :: set_label => cm_set_label @@ -805,7 +805,7 @@

                  Arguments

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/type/correlation_plot.html b/doc/type/correlation_plot.html index 1e5207b..d6fdd23 100644 --- a/doc/type/correlation_plot.html +++ b/doc/type/correlation_plot.html @@ -74,7 +74,7 @@

                  correlation_plot
                • 17 statements + title="

                  2.0% of total for derived types.

                  Including implementation: 166 statements, 1.3% 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 @@ -913,7 +913,7 @@

                  Arguments

                  - +

                  procedure, public :: save_file => cp_save @@ -996,7 +996,7 @@

                  Arguments

                  - +

                  procedure, public :: set_font_name => cp_set_font @@ -1064,7 +1064,7 @@

                  Arguments

                  - +

                  procedure, public :: set_font_size => cp_set_font_size @@ -1147,7 +1147,7 @@

                  Arguments

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/type/custom_colormap.html b/doc/type/custom_colormap.html index a533af2..eefe8bb 100644 --- a/doc/type/custom_colormap.html +++ b/doc/type/custom_colormap.html @@ -143,15 +143,15 @@

                  Type-Bound Procedures

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

                  Arguments

                • @@ -351,7 +351,7 @@

                  - +

                  procedure, public :: get_command_string => cm_get_cmd @@ -409,7 +409,7 @@

                  - +

                  procedure, public :: get_draw_border => cm_get_draw_border @@ -527,7 +527,7 @@

                  - +

                  procedure, public :: get_label => cm_get_label @@ -729,7 +729,7 @@

                  Arguments

                  - +

                  procedure, public :: set_draw_border => cm_set_draw_border @@ -867,7 +867,7 @@

                  Arguments

                  - +

                  procedure, public :: set_label => cm_set_label @@ -1018,7 +1018,7 @@

                  Arguments

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/type/delaunay_tri_2d.html b/doc/type/delaunay_tri_2d.html index 42bcfc8..cd21be0 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.5% of total for derived types.

                  Including implementation: 130 statements, 1.0% of total for derived types.">13 statements
                • @@ -660,7 +660,7 @@

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                • diff --git a/doc/type/delaunay_tri_surface.html b/doc/type/delaunay_tri_surface.html index 29343fd..4391ba4 100644 --- a/doc/type/delaunay_tri_surface.html +++ b/doc/type/delaunay_tri_surface.html @@ -973,7 +973,7 @@

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/type/earth_colormap.html b/doc/type/earth_colormap.html index 6f88657..d582445 100644 --- a/doc/type/earth_colormap.html +++ b/doc/type/earth_colormap.html @@ -131,14 +131,14 @@

                  Type-Bound Procedures

                  @@ -224,7 +224,7 @@

                  - +

                  procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +282,7 @@

                  - +

                  procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +400,7 @@

                  - +

                  procedure, public :: get_label => cm_get_label @@ -516,7 +516,7 @@

                  - +

                  procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +654,7 @@

                  Arguments

                  - +

                  procedure, public :: set_label => cm_set_label @@ -805,7 +805,7 @@

                  Arguments

                  Documentation generated by FORD - on 2026-06-14 08:02

                  + on 2026-06-16 07:03


                  diff --git a/doc/type/filled_plot_data.html b/doc/type/filled_plot_data.html index bab38ac..7558ebb 100644 --- a/doc/type/filled_plot_data.html +++ b/doc/type/filled_plot_data.html @@ -74,7 +74,7 @@

                  filled_plot_data
                • 11 statements + title="

                  1.3% of total for derived types.

                  Including implementation: 179 statements, 1.4% of total for derived types.">11 statements
                • @@ -130,16 +130,19 @@

                  Type-Bound Procedures

                  @@ -168,7 +171,61 @@

                  Type-Bound Procedures

                  - + +

                  + 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 +data set.

                    + +

                    Arguments

                    +
                • 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
                  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 :: + set_datablock_name => pd_set_datablock_name
                  procedure, public :: set_line_color => pdc_set_line_color
                  procedure, public :: + create_unique_datablock_name => pd_create_unique_datablock_name
                  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_draw_against_y2 => pdh_get_use_y2
                  procedure, public :: - get_is_filled => pdh_get_is_filled
                  procedure, public :: + get_is_filled => pdh_get_is_filled
                  procedure, public :: - set_draw_against_y2 => pdh_set_use_y2
                  procedure, public :: + set_draw_against_y2 => pdh_set_use_y2
                  procedure, public :: - set_is_filled => pdh_set_is_filled
                  procedure, public :: - define_data => pdt2d_define_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_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_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
                  - + class(plot_object), intent(in)
                  procedure(get_string_result), public, deferred :: - get_command_string
                  procedure, public :: - draw => plt_draw
                  procedure, public :: - get => plt_get
                  procedure, public :: - get_command_string => plr_get_cmd
                  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_terminal => plt_get_term
                  procedure, public :: - get_title => plt_get_title
                  procedure, public :: - is_title_defined => plt_has_title
                  procedure, public :: - save_file => plt_save
                  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_title => plt_set_title
                  procedure, public :: - get_command_string => png_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),
                  - + class(errors), intent(inout),
                  - + real(kind=real64), intent(in),
                  - + real(kind=real64), intent(in),
                  - + real(kind=real64), intent(in),
                  - + class(errors), intent(inout),
                  - + 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 :: - draw => plt_draw
                  procedure, public :: - get => plt_get
                  procedure, public :: - get_command_string => surf_get_cmd
                  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_terminal => plt_get_term
                  procedure, public :: - get_title => plt_get_title
                  procedure, public :: - get_x_axis => p3d_get_x_axis
                  procedure, public :: - get_y_axis => p3d_get_y_axis
                  procedure, public :: - is_title_defined => plt_has_title
                  procedure, public :: - save_file => plt_save
                  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_title => plt_set_title
                  procedure, public :: - define_data => surfd_set_data_1
                  procedure, public :: + define_data => surfd_set_data_1
                  procedure, public :: + get_command_string => surfd_get_cmd
                  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_x => surfd_get_x
                  procedure, public :: - get_y => surfd_get_y
                  procedure, public :: - get_z => surfd_get_z
                  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
                  - + class(terminal), intent(in)
                  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 :: - 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_data_string => tspd_get_data_cmd
                  procedure, public :: + get_datablock_name => pd_get_datablock_name
                  procedure, public :: - get_use_wireframe => tspd_get_wireframe
                  procedure, public :: + set_datablock_name => pd_set_datablock_name
                  procedure, public :: - set_use_wireframe => tspd_set_wireframe
                  procedure, public :: + create_unique_datablock_name => pd_create_unique_datablock_name
                  procedure, public :: define_data => vfpd_define_data
                  procedure, public :: + get_datablock_name => pd_get_datablock_name
                  procedure, public :: get_fill_arrow => vfpd_get_fill_arrow
                  procedure, public :: + set_datablock_name => pd_set_datablock_name
                  procedure, public :: set_fill_arrow => vfpd_set_fill_arrow
                  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
                  - + integer(kind=int32), intent(in)
                  - + integer(kind=int32), intent(in)
                  - + real(kind=real64), intent(in),
                  - + real(kind=real64), intent(in),
                  - + class(errors), intent(inout)
                  - + class(errors), intent(inout)
                  - + character(len=*), intent(in)
                  - + integer(kind=int32), intent(in)
                  - + class(errors), intent(inout)
                  - + class(errors), intent(inout)
                  - + integer(kind=int32), intent(in)
                  - + type(custom_colormap), intent(inout)
                  + + + + + + + + + + + + + + + + + + +
                  TypeIntentOptional AttributesName
                  + + class(plot_data), + intent(inout) + + ::this +

                  The plot_data object.

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

                procedure, public :: define_data => fpd_define_data @@ -282,7 +339,7 @@

                Arguments

                - +

                procedure, public :: get_axes_string => fpd_get_axes_cmd @@ -399,7 +456,7 @@

                - +

                procedure, public :: get_command_string => fpd_get_cmd @@ -516,7 +573,66 @@

                - + +

                + 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 +plot file.

                  + +

                  Arguments

                  + + + + + + + + + + + + + + + + + + + +
                  TypeIntentOptional AttributesName
                  + + 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 @@ -760,7 +876,76 @@

                Arguments

                - + +

                + 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 +plot file.

                  + +

                  Arguments

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  TypeIntentOptional AttributesName
                  + + 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 @@ -981,7 +1166,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/grey_colormap.html b/doc/type/grey_colormap.html index 5107385..80d1b7f 100644 --- a/doc/type/grey_colormap.html +++ b/doc/type/grey_colormap.html @@ -131,14 +131,14 @@

                Type-Bound Procedures

                @@ -224,7 +224,7 @@

                - +

                procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +282,7 @@

                - +

                procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +400,7 @@

                - +

                procedure, public :: get_label => cm_get_label @@ -516,7 +516,7 @@

                - +

                procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +654,7 @@

                Arguments

                - +

                procedure, public :: set_label => cm_set_label @@ -805,7 +805,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/hot_colormap.html b/doc/type/hot_colormap.html index f325a4e..6358f50 100644 --- a/doc/type/hot_colormap.html +++ b/doc/type/hot_colormap.html @@ -74,7 +74,7 @@

                hot_colormap
              • 4 statements + title="

                0.5% of total for derived types.

                Including implementation: 92 statements, 0.7% of total for derived types.">4 statements
              • @@ -131,14 +131,14 @@

                Type-Bound Procedures

                @@ -224,7 +224,7 @@

                - +

                procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +282,7 @@

                - +

                procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +400,7 @@

                - +

                procedure, public :: get_label => cm_get_label @@ -516,7 +516,7 @@

                - +

                procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +654,7 @@

                Arguments

                - +

                procedure, public :: set_label => cm_set_label @@ -805,7 +805,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/latex_terminal.html b/doc/type/latex_terminal.html index a465c83..3217b99 100644 --- a/doc/type/latex_terminal.html +++ b/doc/type/latex_terminal.html @@ -74,7 +74,7 @@

                latex_terminal
              • 9 statements + title="

                1.1% of total for derived types.

                Including implementation: 153 statements, 1.2% of total for derived types.">9 statements
              • @@ -130,20 +130,20 @@

                Type-Bound Procedures

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

                Type-Bound Procedures

                - +

                procedure, public :: get_command_string => tex_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 @@ -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-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/legend.html b/doc/type/legend.html index 19d1167..c18fd00 100644 --- a/doc/type/legend.html +++ b/doc/type/legend.html @@ -74,7 +74,7 @@

                legend
              • 25 statements + title="

                3.0% of total for derived types.

                Including implementation: 141 statements, 1.1% of total for derived types.">25 statements
              • @@ -130,15 +130,15 @@

                Type-Bound Procedures

                - get_command_string - get_draw_border + get_command_string + get_draw_border get_draw_inside_axes get_horizontal_position get_is_opaque get_is_visible get_layout get_vertical_position - set_draw_border + set_draw_border set_draw_inside_axes set_horizontal_position set_is_opaque @@ -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 @@ -639,7 +639,7 @@

                - +

                procedure, public :: set_draw_border => leg_set_box @@ -1136,7 +1136,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/multiplot.html b/doc/type/multiplot.html index 638908f..59a4038 100644 --- a/doc/type/multiplot.html +++ b/doc/type/multiplot.html @@ -74,7 +74,7 @@

                multiplot
              • 27 statements + title="

                3.2% of total for derived types.

                Including implementation: 284 statements, 2.3% of total for derived types.">27 statements
              • @@ -114,7 +114,7 @@

                Variables

              • @@ -152,23 +152,23 @@

                Type-Bound Procedures

                @@ -201,7 +201,7 @@

                Components

                - + class(terminal), public, @@ -255,7 +255,7 @@

                Arguments

                - + type(multiplot), intent(inout) @@ -284,7 +284,7 @@

                Type-Bound Procedures

                - +

                procedure, public :: draw => mp_draw @@ -370,7 +370,7 @@

                Arguments

                - +

                procedure, public :: get => mp_get @@ -516,7 +516,7 @@

                - +

                procedure, public :: get_command_string => mp_get_command @@ -574,7 +574,7 @@

                - +

                procedure, public :: get_font_name => mp_get_font @@ -632,7 +632,7 @@

                - +

                procedure, public :: get_font_size => mp_get_font_size @@ -806,7 +806,7 @@

                - +

                procedure, public :: get_terminal => mp_get_term @@ -864,7 +864,7 @@

                - +

                procedure, public :: get_title => mp_get_title @@ -922,7 +922,7 @@

                - +

                procedure, public :: initialize => mp_init @@ -1083,7 +1083,7 @@

                Arguments

                - +

                procedure, public :: is_title_defined => mp_has_title @@ -1143,7 +1143,7 @@

                - +

                procedure, public :: save_file => mp_save @@ -1226,7 +1226,7 @@

                Arguments

                - +

                procedure, public :: set => mp_set @@ -1324,7 +1324,7 @@

                Arguments

                - +

                procedure, public :: set_font_name => mp_set_font @@ -1392,7 +1392,7 @@

                Arguments

                - +

                procedure, public :: set_font_size => mp_set_font_size @@ -1460,7 +1460,7 @@

                Arguments

                - +

                procedure, public :: set_title => mp_set_title @@ -1543,7 +1543,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/name_value_pair.html b/doc/type/name_value_pair.html index 2480a2c..ec2fcbe 100644 --- a/doc/type/name_value_pair.html +++ b/doc/type/name_value_pair.html @@ -221,7 +221,7 @@

                Components

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/parula_colormap.html b/doc/type/parula_colormap.html index 15ba6df..2696f88 100644 --- a/doc/type/parula_colormap.html +++ b/doc/type/parula_colormap.html @@ -74,7 +74,7 @@

                parula_colormap
              • 4 statements + title="

                0.5% of total for derived types.

                Including implementation: 102 statements, 0.8% of total for derived types.">4 statements
              • @@ -131,14 +131,14 @@

                Type-Bound Procedures

                @@ -224,7 +224,7 @@

                - +

                procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +282,7 @@

                - +

                procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +400,7 @@

                - +

                procedure, public :: get_label => cm_get_label @@ -516,7 +516,7 @@

                - +

                procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +654,7 @@

                Arguments

                - +

                procedure, public :: set_label => cm_set_label @@ -805,7 +805,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/plot.html b/doc/type/plot.html index 05f07ef..c01213b 100644 --- a/doc/type/plot.html +++ b/doc/type/plot.html @@ -74,7 +74,7 @@

                plot
              • 73 statements + title="

                8.7% of total for derived types.

                Including implementation: 537 statements, 4.3% of total for derived types.">73 statements
              • @@ -133,54 +133,54 @@

                Type-Bound Procedures

                clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count get_axis_equal get_bottom_margin get_colormap - get_command_string + get_command_string get_count get_draw_border - get_font_name - get_font_size - get_label + get_font_name + get_font_size + get_label get_label_count get_left_margin get_legend get_right_margin get_show_colorbar get_show_gridlines - get_terminal + get_terminal get_tics_inward - get_title + get_title get_top_margin - initialize - is_title_defined + initialize + is_title_defined pop pop_arrow pop_label push push_arrow push_label - save_file + save_file set set_arrow set_axis_equal set_bottom_margin set_colormap set_draw_border - set_font_name - set_font_size - set_label + set_font_name + set_font_size + set_label set_left_margin set_right_margin set_show_colorbar set_show_gridlines set_tics_inward - set_title + set_title set_top_margin
              • @@ -367,7 +367,7 @@

                Arguments

                - +

                procedure, public :: draw => plt_draw @@ -508,7 +508,7 @@

                Arguments

                - +

                procedure, public :: get => plt_get @@ -888,7 +888,7 @@

                - +

                procedure, public :: get_command_string => plt_get_cmd @@ -1062,7 +1062,7 @@

                - +

                procedure, public :: get_font_name => plt_get_font @@ -1120,7 +1120,7 @@

                - +

                procedure, public :: get_font_size => plt_get_font_size @@ -1178,7 +1178,7 @@

                - +

                procedure, public :: get_label => plt_get_label @@ -1601,7 +1601,7 @@

                - +

                procedure, public :: get_terminal => plt_get_term @@ -1718,7 +1718,7 @@

                - +

                procedure, public :: get_title => plt_get_title @@ -1835,7 +1835,7 @@

                - +

                procedure, public :: initialize => plt_init @@ -1953,7 +1953,7 @@

                Arguments

                - +

                procedure, public :: is_title_defined => plt_has_title @@ -2421,7 +2421,7 @@

                Arguments

                - +

                procedure, public :: save_file => plt_save @@ -2961,7 +2961,7 @@

                Arguments

                - +

                procedure, public :: set_font_name => plt_set_font @@ -3029,7 +3029,7 @@

                Arguments

                - +

                procedure, public :: set_font_size => plt_set_font_size @@ -3100,7 +3100,7 @@

                Arguments

                - +

                procedure, public :: set_label => plt_set_label @@ -3528,7 +3528,7 @@

                Arguments

                - +

                procedure, public :: set_title => plt_set_title @@ -3681,7 +3681,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/plot_2d.html b/doc/type/plot_2d.html index ced9e55..f8625cb 100644 --- a/doc/type/plot_2d.html +++ b/doc/type/plot_2d.html @@ -74,7 +74,7 @@

                plot_2d
              • 27 statements + title="

                3.2% of total for derived types.

                Including implementation: 657 statements, 5.3% of total for derived types.">27 statements
              • @@ -144,22 +144,22 @@

                Type-Bound Procedures

                clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count get_axis_equal get_bottom_margin get_colormap - get_command_string + get_command_string get_count get_draw_border - get_font_name - get_font_size + get_font_name + get_font_size get_jitter_overlap get_jitter_spread - get_label + get_label get_label_count get_left_margin get_legend @@ -167,42 +167,42 @@

                Type-Bound Procedures

                get_show_colorbar get_show_gridlines get_square_axes - get_terminal + get_terminal get_tics_inward - get_title + get_title get_top_margin get_use_jittering get_use_y2_axis - get_x_axis + get_x_axis get_y2_axis - get_y_axis - initialize - is_title_defined + get_y_axis + initialize + is_title_defined pop pop_arrow pop_label push push_arrow push_label - save_file + save_file set set_arrow set_axis_equal set_bottom_margin set_colormap set_draw_border - set_font_name - set_font_size + set_font_name + set_font_size set_jitter_overlap set_jitter_spread - set_label + set_label set_left_margin set_right_margin set_show_colorbar set_show_gridlines set_square_axes set_tics_inward - set_title + set_title set_top_margin set_use_jittering set_use_y2_axis @@ -258,7 +258,7 @@

                Arguments

                - + type(plot_2d), intent(inout) @@ -446,7 +446,7 @@

                Arguments

                - +

                procedure, public :: draw => plt_draw @@ -587,7 +587,7 @@

                Arguments

                - +

                procedure, public :: get => plt_get @@ -967,7 +967,7 @@

                - +

                procedure, public :: get_command_string => p2d_get_cmd @@ -1141,7 +1141,7 @@

                - +

                procedure, public :: get_font_name => plt_get_font @@ -1199,7 +1199,7 @@

                - +

                procedure, public :: get_font_size => plt_get_font_size @@ -1373,7 +1373,7 @@

                - +

                procedure, public :: get_label => plt_get_label @@ -1856,7 +1856,7 @@

                - +

                procedure, public :: get_terminal => plt_get_term @@ -1973,7 +1973,7 @@

                - +

                procedure, public :: get_title => plt_get_title @@ -2207,7 +2207,7 @@

                - +

                procedure, public :: get_x_axis => p2d_get_x_axis @@ -2323,7 +2323,7 @@

                - +

                procedure, public :: get_y_axis => p2d_get_y_axis @@ -2381,7 +2381,7 @@

                - +

                procedure, public :: initialize => p2d_init @@ -2499,7 +2499,7 @@

                Arguments

                - +

                procedure, public :: is_title_defined => plt_has_title @@ -2967,7 +2967,7 @@

                Arguments

                - +

                procedure, public :: save_file => plt_save @@ -3507,7 +3507,7 @@

                Arguments

                - +

                procedure, public :: set_font_name => plt_set_font @@ -3575,7 +3575,7 @@

                Arguments

                - +

                procedure, public :: set_font_size => plt_set_font_size @@ -3782,7 +3782,7 @@

                Arguments

                - +

                procedure, public :: set_label => plt_set_label @@ -4280,7 +4280,7 @@

                Arguments

                - +

                procedure, public :: set_title => plt_set_title @@ -4570,7 +4570,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/plot_3d.html b/doc/type/plot_3d.html index df0c5b6..dff8491 100644 --- a/doc/type/plot_3d.html +++ b/doc/type/plot_3d.html @@ -74,7 +74,7 @@

                plot_3d
              • 27 statements + title="

                3.2% of total for derived types.

                Including implementation: 654 statements, 5.3% of total for derived types.">27 statements
              • @@ -144,47 +144,47 @@

                Type-Bound Procedures

                clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count get_axis_equal get_azimuth get_bottom_margin get_colormap - get_command_string + get_command_string get_coordinate_system 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_legend get_right_margin get_show_colorbar get_show_gridlines - get_terminal + get_terminal get_tics_inward - get_title + get_title get_top_margin get_use_map_view - get_x_axis - get_y_axis + get_x_axis + get_y_axis get_z_axis get_z_intersect_xy - initialize - is_title_defined + initialize + is_title_defined pop pop_arrow pop_label push push_arrow push_label - save_file + save_file set set_arrow set_axis_equal @@ -194,15 +194,15 @@

                Type-Bound Procedures

                set_coordinate_system set_draw_border set_elevation - set_font_name - set_font_size - set_label + set_font_name + set_font_size + set_label set_left_margin set_right_margin set_show_colorbar set_show_gridlines set_tics_inward - set_title + set_title set_top_margin set_use_map_view set_z_intersect_xy @@ -258,7 +258,7 @@

                Arguments

                - + type(plot_3d), intent(inout) @@ -446,7 +446,7 @@

                Arguments

                - +

                procedure, public :: draw => plt_draw @@ -587,7 +587,7 @@

                Arguments

                - +

                procedure, public :: get => plt_get @@ -1025,7 +1025,7 @@

                - +

                procedure, public :: get_command_string => p3d_get_cmd @@ -1326,7 +1326,7 @@

                - +

                procedure, public :: get_font_name => plt_get_font @@ -1384,7 +1384,7 @@

                - +

                procedure, public :: get_font_size => plt_get_font_size @@ -1442,7 +1442,7 @@

                - +

                procedure, public :: get_label => plt_get_label @@ -1865,7 +1865,7 @@

                - +

                procedure, public :: get_terminal => plt_get_term @@ -1982,7 +1982,7 @@

                - +

                procedure, public :: get_title => plt_get_title @@ -2158,7 +2158,7 @@

                - +

                procedure, public :: get_x_axis => p3d_get_x_axis @@ -2216,7 +2216,7 @@

                - +

                procedure, public :: get_y_axis => p3d_get_y_axis @@ -2392,7 +2392,7 @@

                - +

                procedure, public :: initialize => p3d_init @@ -2510,7 +2510,7 @@

                Arguments

                - +

                procedure, public :: is_title_defined => plt_has_title @@ -2978,7 +2978,7 @@

                Arguments

                - +

                procedure, public :: save_file => plt_save @@ -3733,7 +3733,7 @@

                Arguments

                - +

                procedure, public :: set_font_name => plt_set_font @@ -3801,7 +3801,7 @@

                Arguments

                - +

                procedure, public :: set_font_size => plt_set_font_size @@ -3872,7 +3872,7 @@

                Arguments

                - +

                procedure, public :: set_label => plt_set_label @@ -4300,7 +4300,7 @@

                Arguments

                - +

                procedure, public :: set_title => plt_set_title @@ -4592,7 +4592,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/plot_arrow.html b/doc/type/plot_arrow.html index 8549cfb..7dcee22 100644 --- a/doc/type/plot_arrow.html +++ b/doc/type/plot_arrow.html @@ -74,7 +74,7 @@

                plot_arrow
              • 49 statements + title="

                5.8% of total for derived types.

                Including implementation: 285 statements, 2.3% of total for derived types.">49 statements
              • @@ -131,7 +131,7 @@

                Type-Bound Procedures

                get_color - get_command_string + get_command_string get_head_angle get_head_back_angle get_head_fill @@ -241,7 +241,7 @@

                - +

                procedure, public :: get_command_string => par_get_cmd @@ -2250,7 +2250,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/plot_axis.html b/doc/type/plot_axis.html index 92dfdc9..4fc2ca2 100644 --- a/doc/type/plot_axis.html +++ b/doc/type/plot_axis.html @@ -74,7 +74,7 @@

                plot_axis
              • 64 statements + title="

                7.6% of total for derived types.

                Including implementation: 403 statements, 3.2% of total for derived types.">64 statements
              • @@ -131,8 +131,8 @@

                Type-Bound Procedures

                get_autoscale - get_command_string - get_id_string + get_command_string + get_id_string get_is_log_scaled get_limits get_manual_tic_labels @@ -257,7 +257,7 @@

                - +

                procedure, public :: get_command_string => pa_get_cmd_string @@ -316,7 +316,7 @@

                - +

                procedure(pa_get_string_result), public, deferred :: get_id_string @@ -1660,7 +1660,7 @@

                Gets the axis display limits, assuming autoscaling is not -active for this axis. This routine also calls set_autoscale and +active for this axis. This routine also calls set_autoscale and sets the property value to false.

                Arguments

                @@ -1745,7 +1745,7 @@

                Sets a list of manual tic labels. This routine also sets -set_use_manual_tic_labels to true.

                +set_use_manual_tic_labels to true.

                Arguments

                @@ -2865,7 +2865,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/plot_bar.html b/doc/type/plot_bar.html index 15eae2e..5944795 100644 --- a/doc/type/plot_bar.html +++ b/doc/type/plot_bar.html @@ -74,7 +74,7 @@

                plot_bar
              • 7 statements + title="

                0.8% of total for derived types.

                Including implementation: 509 statements, 4.1% of total for derived types.">7 statements
              • @@ -133,23 +133,23 @@

                Type-Bound Procedures

                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_bottom_margin get_colormap - get_command_string + get_command_string get_count get_draw_border - get_font_name - get_font_size + get_font_name + get_font_size get_jitter_overlap get_jitter_spread - get_label + get_label get_label_count get_left_margin get_legend @@ -157,24 +157,24 @@

                Type-Bound Procedures

                get_show_colorbar get_show_gridlines get_square_axes - get_terminal + get_terminal get_tics_inward - get_title + get_title get_top_margin get_use_jittering get_use_y2_axis - get_x_axis + get_x_axis get_y2_axis - get_y_axis - initialize - is_title_defined + get_y_axis + initialize + is_title_defined pop pop_arrow pop_label push push_arrow push_label - save_file + save_file set set_arrow set_axis_equal @@ -182,18 +182,18 @@

                Type-Bound Procedures

                set_bottom_margin set_colormap set_draw_border - set_font_name - set_font_size + set_font_name + set_font_size set_jitter_overlap set_jitter_spread - set_label + set_label set_left_margin set_right_margin set_show_colorbar set_show_gridlines set_square_axes set_tics_inward - set_title + set_title set_top_margin set_use_jittering set_use_y2_axis @@ -382,7 +382,7 @@

                Arguments

                - +

                procedure, public :: draw => plt_draw @@ -523,7 +523,7 @@

                Arguments

                - +

                procedure, public :: get => plt_get @@ -961,7 +961,7 @@

                - +

                procedure, public :: get_command_string => pb_get_cmd @@ -1135,7 +1135,7 @@

                - +

                procedure, public :: get_font_name => plt_get_font @@ -1193,7 +1193,7 @@

                - +

                procedure, public :: get_font_size => plt_get_font_size @@ -1367,7 +1367,7 @@

                - +

                procedure, public :: get_label => plt_get_label @@ -1850,7 +1850,7 @@

                - +

                procedure, public :: get_terminal => plt_get_term @@ -1967,7 +1967,7 @@

                - +

                procedure, public :: get_title => plt_get_title @@ -2201,7 +2201,7 @@

                - +

                procedure, public :: get_x_axis => p2d_get_x_axis @@ -2317,7 +2317,7 @@

                - +

                procedure, public :: get_y_axis => p2d_get_y_axis @@ -2375,7 +2375,7 @@

                - +

                procedure, public :: initialize => p2d_init @@ -2493,7 +2493,7 @@

                Arguments

                - +

                procedure, public :: is_title_defined => plt_has_title @@ -2961,7 +2961,7 @@

                Arguments

                - +

                procedure, public :: save_file => plt_save @@ -3570,7 +3570,7 @@

                Arguments

                - +

                procedure, public :: set_font_name => plt_set_font @@ -3638,7 +3638,7 @@

                Arguments

                - +

                procedure, public :: set_font_size => plt_set_font_size @@ -3845,7 +3845,7 @@

                Arguments

                - +

                procedure, public :: set_label => plt_set_label @@ -4343,7 +4343,7 @@

                Arguments

                - +

                procedure, public :: set_title => plt_set_title @@ -4633,7 +4633,7 @@

                Arguments

                Documentation generated by FORD - on 2026-06-14 08:02

                + on 2026-06-16 07:03


                diff --git a/doc/type/plot_data.html b/doc/type/plot_data.html index 71fcff5..e4145ad 100644 --- a/doc/type/plot_data.html +++ b/doc/type/plot_data.html @@ -74,7 +74,7 @@

                plot_data
              • 8 statements + title="

                1.4% of total for derived types.

                Including implementation: 53 statements, 0.4% of total for derived types.">12 statements
              • @@ -130,9 +130,12 @@

                Type-Bound Procedures

                @@ -160,7 +163,61 @@

                Type-Bound Procedures

                - + +

                + 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 +data set.

                  + +

                  Arguments

                  +
              • + + + + + + + + + + + + + + + + + + +
                TypeIntentOptional AttributesName
                + + class(plot_data), + intent(inout) + + ::this +

                The plot_data object.

                +
                + + +

              • +

              + + + +
              +
              +
              +

              procedure(get_string_result), public, deferred :: get_command_string @@ -218,7 +275,7 @@

              - +

              procedure(pd_get_string_result), public, deferred :: get_data_string @@ -276,6 +333,65 @@

              + +

              + 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 +plot file.

                + +

                Arguments

                + + + + + + + + + + + + + + + + + + + +
                TypeIntentOptional AttributesName
                + + class(plot_data), + intent(in) + + ::this +

                The plot_data object.

                +
                + +

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

                +

                The name.

                + +
              • +
              +
              + +
              +
              +
              +

              procedure, public :: @@ -326,6 +442,75 @@

              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 +plot file.

              + +

              Arguments

              + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              TypeIntentOptional AttributesName
              + + class(plot_data), + intent(inout) + + ::this +

              The plot_data object.

              +
              + + character(len=*), + intent(in) + + ::x +

              The name.

              +
              + +
            @@ -417,7 +602,7 @@

            Arguments

            Documentation generated by FORD - on 2026-06-14 08:02

            + on 2026-06-16 07:03


            diff --git a/doc/type/plot_data_2d.html b/doc/type/plot_data_2d.html index 6e9eefa..31401ef 100644 --- a/doc/type/plot_data_2d.html +++ b/doc/type/plot_data_2d.html @@ -74,7 +74,7 @@

            plot_data_2d
          • 21 statements + title="

            2.5% of total for derived types.

            Including implementation: 551 statements, 4.4% of total for derived types.">21 statements
          • @@ -130,42 +130,45 @@

            Type-Bound Procedures

            @@ -202,6 +205,60 @@

            Type-Bound Procedures

            +
            + +

            + 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 +data set.

              + +

              Arguments

              + + + + + + + + + + + + + + + + + + + +
              TypeIntentOptional AttributesName
              + + class(plot_data), + intent(inout) + + ::this +

              The plot_data object.

              +
              + + +
            • +
            +
            + +
            +
            +

            @@ -460,7 +517,7 @@

            - +

            procedure, public :: get_color_data => pd2d_get_c_array @@ -576,7 +633,7 @@

            - +

            procedure, public :: get_command_string => spd_get_cmd @@ -635,7 +692,7 @@

            - +

            procedure, public :: get_count => pd2d_get_data_count @@ -693,7 +750,7 @@

            - +

            procedure, public :: get_data_string => pd2d_get_data_cmd @@ -752,7 +809,66 @@

            - + +

            + 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 +plot file.

              + +

              Arguments

              + + + + + + + + + + + + + + + + + + + +
              TypeIntentOptional AttributesName
              + + 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 @@ -1044,7 +1160,7 @@

            - +

            procedure, public :: get_line_style => spd_get_line_style @@ -1450,7 +1566,7 @@

            - +

            procedure, public :: get_point_size_data => pd2d_get_ps_array @@ -1744,7 +1860,7 @@

            - +

            procedure, public :: get_x => pd2d_get_x_data @@ -1817,7 +1933,7 @@

            - +

            procedure, public :: get_x_data => pd2d_get_x_array @@ -1875,7 +1991,7 @@

            - +

            procedure, public :: get_y => pd2d_get_y_data @@ -1948,7 +2064,7 @@

            - +

            procedure, public :: get_y_data => pd2d_get_y_array @@ -2287,7 +2403,76 @@

            Arguments

            - + +

            + 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 +plot file.

              + +

              Arguments

              + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              TypeIntentOptional AttributesName
              + + 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 @@ -2629,7 +2814,7 @@

            Arguments

            - +

            procedure, public :: set_line_style => spd_set_line_style @@ -3371,7 +3556,7 @@

            Arguments

            - +

            procedure, public :: set_x => pd2d_set_x_data @@ -3454,7 +3639,7 @@

            Arguments

            - +

            procedure, public :: set_y => pd2d_set_y_data @@ -3552,7 +3737,7 @@

            Arguments

            Documentation generated by FORD - on 2026-06-14 08:02

            + on 2026-06-16 07:03


            diff --git a/doc/type/plot_data_3d.html b/doc/type/plot_data_3d.html index 0c48fe2..82cd763 100644 --- a/doc/type/plot_data_3d.html +++ b/doc/type/plot_data_3d.html @@ -74,7 +74,7 @@

            plot_data_3d
          • 19 statements + title="

            2.3% of total for derived types.

            Including implementation: 554 statements, 4.5% of total for derived types.">19 statements
          • @@ -130,40 +130,43 @@

            Type-Bound Procedures

          • @@ -202,7 +205,61 @@

            Type-Bound Procedures

            - + +

            + 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 +data set.

              + +

              Arguments

              + + + + + + + + + + + + + + + + + + + +
              TypeIntentOptional AttributesName
              + + class(plot_data), + intent(inout) + + ::this +

              The plot_data object.

              +
              + + +
            • +
            +
            + +
            +
            +
            +
            +

            procedure, public :: define_data => pd3d_set_data_1 @@ -346,7 +403,7 @@

            Arguments

            - +

            procedure, public :: get_axes_string => pd3d_get_axes_cmd @@ -405,7 +462,7 @@

            - +

            procedure, public :: get_color_data => pd3d_get_c_array @@ -521,7 +578,7 @@

            - +

            procedure, public :: get_command_string => spd_get_cmd @@ -580,7 +637,7 @@

            - +

            procedure, public :: get_count => pd3d_get_data_count @@ -638,7 +695,7 @@

            - +

            procedure, public :: get_data_string => pd3d_get_data_cmd @@ -696,6 +753,65 @@

            + +

            + 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 +plot file.

              + +

              Arguments

              + + + + + + + + + + + + + + + + + + + +
              TypeIntentOptional AttributesName
              + + class(plot_data), + intent(in) + + ::this +

              The plot_data object.

              +
              + +

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

              +

              The name.

              + +
            • +
            +
            + +
            +
            +
            +

            procedure, public :: @@ -928,7 +1044,7 @@

            - +

            procedure, public :: get_line_style => spd_get_line_style @@ -1334,7 +1450,7 @@

            - +

            procedure, public :: get_point_size_data => pd3d_get_c_array @@ -1628,7 +1744,7 @@

            - +

            procedure, public :: get_x => pd3d_get_x_data @@ -1701,7 +1817,7 @@

            - +

            procedure, public :: get_x_data => pd3d_get_x_array @@ -1759,7 +1875,7 @@

            - +

            procedure, public :: get_y => pd3d_get_y_data @@ -1832,7 +1948,7 @@

            - +

            procedure, public :: get_y_data => pd3d_get_y_array @@ -1890,7 +2006,7 @@

            - +

            procedure, public :: get_z => pd3d_get_z_data @@ -2081,6 +2197,75 @@

            Arguments

            +

          • +

          + + + +
          +
          +
          + +

          + 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 +plot file.

            + +

            Arguments

            + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            TypeIntentOptional AttributesName
            + + class(plot_data), + intent(inout) + + ::this +

            The plot_data object.

            +
            + + character(len=*), + intent(in) + + ::x +

            The name.

            +
            + +
          @@ -2361,7 +2546,7 @@

          Arguments

          - +

          procedure, public :: set_line_style => spd_set_line_style @@ -3103,7 +3288,7 @@

          Arguments

          - +

          procedure, public :: set_x => pd3d_set_x_data @@ -3186,7 +3371,7 @@

          Arguments

          - +

          procedure, public :: set_y => pd3d_set_y_data @@ -3269,7 +3454,7 @@

          Arguments

          - +

          procedure, public :: set_z => pd3d_set_z_data @@ -3367,7 +3552,7 @@

          Arguments

          Documentation generated by FORD - on 2026-06-14 08:02

          + on 2026-06-16 07:03


          diff --git a/doc/type/plot_data_bar.html b/doc/type/plot_data_bar.html index 0711c24..9bf1144 100644 --- a/doc/type/plot_data_bar.html +++ b/doc/type/plot_data_bar.html @@ -74,7 +74,7 @@

          plot_data_bar
        • 34 statements + title="

          4.0% of total for derived types.

          Including implementation: 415 statements, 3.3% of total for derived types.">34 statements
        • @@ -130,30 +130,33 @@

          Type-Bound Procedures

          - define_data - get - get_axes_string + create_unique_datablock_name + define_data + get + get_axes_string get_bar_per_label_count get_color_index - get_command_string - get_count + get_command_string + get_count get_data - get_data_string - get_draw_against_y2 - get_is_filled - get_label + get_data_string + get_datablock_name + get_draw_against_y2 + get_is_filled + get_label get_line_color get_name get_transparency get_use_labels - set + set set_color_index set_data_1 set_data_2 set_data_3 - set_draw_against_y2 - set_is_filled - set_label + set_datablock_name + set_draw_against_y2 + set_is_filled + set_label set_line_color set_name set_transparency @@ -184,7 +187,61 @@

          Type-Bound Procedures

          - + +

          + 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 +data set.

            + +

            Arguments

            + + + + + + + + + + + + + + + + + + + +
            TypeIntentOptional AttributesName
            + + 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 @@ -448,7 +505,7 @@

          Arguments

          - +

          procedure, public :: get => pdb_get_data @@ -536,7 +593,7 @@

          - +

          procedure, public :: get_axes_string => pdb_get_axes_cmd @@ -710,7 +767,7 @@

          - +

          procedure, public :: get_command_string => pdb_get_cmd @@ -768,7 +825,7 @@

          - +

          procedure, public :: get_count => pdb_get_count @@ -899,7 +956,7 @@

          - +

          procedure, public :: get_data_string => pdb_get_data_cmd @@ -957,7 +1014,66 @@

          - + +

          + 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 +plot file.

            + +

            Arguments

            + + + + + + + + + + + + + + + + + + + +
            TypeIntentOptional AttributesName
            + + 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 @@ -1016,7 +1132,7 @@

          - +

          procedure, public :: get_is_filled => pdb_get_is_filled @@ -1074,7 +1190,7 @@

          - +

          procedure, public :: get_label => pdb_get_label @@ -1379,7 +1495,7 @@

          - +

          procedure, public :: set => pdb_set_data @@ -1839,7 +1955,76 @@

          Arguments

          - + +

          + 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 +plot file.

            + +

            Arguments

            + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            TypeIntentOptional AttributesName
            + + 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 @@ -1908,7 +2093,7 @@

          Arguments

          - +

          procedure, public :: set_is_filled => pdb_set_is_filled @@ -1976,7 +2161,7 @@

          Arguments

          - +

          procedure, public :: set_label => pdb_set_label @@ -2346,7 +2531,7 @@

          Arguments

          Documentation generated by FORD - on 2026-06-14 08:02

          + on 2026-06-16 07:03


          diff --git a/doc/type/plot_data_box_whisker.html b/doc/type/plot_data_box_whisker.html index b82bd2a..402ef8d 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
        • 33 statements + title="

          3.9% of total for derived types.

          Including implementation: 269 statements, 2.2% of total for derived types.">33 statements
        • @@ -130,26 +130,29 @@

          Type-Bound Procedures

          - define_data + create_unique_datablock_name + 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_fill_boxes get_line_color - get_line_width + get_line_width get_name get_use_whiskerbars get_whiskerbar_width set_box_fill_opacity set_box_width set_color_index + set_datablock_name set_draw_against_y2 set_fill_boxes set_line_color - set_line_width + set_line_width set_name set_use_whiskerbars set_whiskerbar_width @@ -179,7 +182,61 @@

          Type-Bound Procedures

          - + +

          + 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 +data set.

            + +

            Arguments

            + + + + + + + + + + + + + + + + + + + +
            TypeIntentOptional AttributesName
            + + class(plot_data), + intent(inout) + + ::this +

            The plot_data object.

            +
            + + +
          • +
          +
          + +
          +
          +
          +
          +

          procedure, public :: define_data => pdbw_define_data_xstring @@ -497,7 +554,7 @@

          - +

          procedure, public :: get_command_string => pdbw_get_cmd @@ -555,7 +612,7 @@

          - +

          procedure, public :: get_data_string => pdbw_get_data_cmd @@ -613,6 +670,65 @@

          + +

          + 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 +plot file.

            + +

            Arguments

            + + + + + + + + + + + + + + + + + + + +
            TypeIntentOptional AttributesName
            + + class(plot_data), + intent(in) + + ::this +

            The plot_data object.

            +
            + +

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

            +

            The name.

            + +
          • +
          +
          + +
          +
          +
          +

          procedure, public :: @@ -789,7 +905,7 @@

          - +

          procedure, public :: get_line_width => pdbw_get_line_width @@ -1219,6 +1335,75 @@

          Arguments

          +

        • +

        + + + +
        +
        +
        + +

        + 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 +plot file.

          + +

          Arguments

          + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          TypeIntentOptional AttributesName
          + + class(plot_data), + intent(inout) + + ::this +

          The plot_data object.

          +
          + + character(len=*), + intent(in) + + ::x +

          The name.

          +
          + +
        @@ -1433,7 +1618,7 @@

        Arguments

        - +

        procedure, public :: set_line_width => pdbw_set_line_width @@ -1721,7 +1906,7 @@

        Arguments

        Documentation generated by FORD - on 2026-06-14 08:02

        + on 2026-06-16 07:03


        diff --git a/doc/type/plot_data_colored.html b/doc/type/plot_data_colored.html index 78a5680..ebf834c 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.3% of total for derived types.

        Including implementation: 77 statements, 0.6% of total for derived types.">11 statements
      • @@ -130,12 +130,15 @@

        Type-Bound Procedures

        @@ -163,6 +166,60 @@

        Type-Bound Procedures

        +
        + +

        + 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 +data set.

          + +

          Arguments

          + + + + + + + + + + + + + + + + + + + +
          TypeIntentOptional AttributesName
          + + class(plot_data), + intent(inout) + + ::this +

          The plot_data object.

          +
          + + +
        • +
        +
        + +
        +
        +

        @@ -222,7 +279,7 @@

        - +

        procedure(get_string_result), public, deferred :: get_command_string @@ -280,7 +337,7 @@

        - +

        procedure(pd_get_string_result), public, deferred :: get_data_string @@ -338,6 +395,65 @@

        + +

        + 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 +plot file.

          + +

          Arguments

          + + + + + + + + + + + + + + + + + + + +
          TypeIntentOptional AttributesName
          + + class(plot_data), + intent(in) + + ::this +

          The plot_data object.

          +
          + +

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

          +

          The name.

          + +
        • +
        +
        + +
        +
        +
        +

        procedure, public :: @@ -514,6 +630,75 @@

        Arguments

        +

      • +

      + + + +
      +
      +
      + +

      + 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 +plot file.

        + +

        Arguments

        + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        TypeIntentOptional AttributesName
        + + class(plot_data), + intent(inout) + + ::this +

        The plot_data object.

        +
        + + character(len=*), + intent(in) + + ::x +

        The name.

        +
        + +
      @@ -673,7 +858,7 @@

      Arguments

      Documentation generated by FORD - on 2026-06-14 08:02

      + on 2026-06-16 07:03


      diff --git a/doc/type/plot_data_error_bars.html b/doc/type/plot_data_error_bars.html index ad1ad69..bb43dca 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
    • 25 statements + title="

      3.0% of total for derived types.

      Including implementation: 518 statements, 4.2% of total for derived types.">25 statements
    • @@ -130,13 +130,15 @@

      Type-Bound Procedures

      + create_unique_datablock_name define_x_error_data define_xy_error_data define_y_error_data get_color_index - get_command_string - get_count - get_data_string + get_command_string + get_count + get_data_string + get_datablock_name get_line_color get_name get_plot_x_error_bars @@ -150,6 +152,7 @@

      Type-Bound Procedures

      pde_define_y_err pde_define_y_err_lim set_color_index + set_datablock_name set_line_color set_name set_use_error_box @@ -178,6 +181,60 @@

      Type-Bound Procedures

      +
      + +

      + 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 +data set.

        + +

        Arguments

        + + + + + + + + + + + + + + + + + + + +
        TypeIntentOptional AttributesName
        + + class(plot_data), + intent(inout) + + ::this +

        The plot_data object.

        +
        + + +
      • +
      +
      + +
      +
      +

      @@ -968,7 +1025,7 @@

      - +

      procedure, public :: get_command_string => pde_get_cmd @@ -1026,7 +1083,7 @@

      - +

      procedure, public :: get_count => pde_get_count @@ -1084,7 +1141,7 @@

      - +

      procedure, public :: get_data_string => pde_get_data_cmd @@ -1142,6 +1199,65 @@

      + +

      + 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 +plot file.

        + +

        Arguments

        + + + + + + + + + + + + + + + + + + + +
        TypeIntentOptional AttributesName
        + + class(plot_data), + intent(in) + + ::this +

        The plot_data object.

        +
        + +

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

        +

        The name.

        + +
      • +
      +
      + +
      +
      +
      +

      procedure, public :: @@ -2332,6 +2448,75 @@

      Arguments

      +

    • +

    + + + +
    +
    +
    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + character(len=*), + intent(in) + + ::x +

      The name.

      +
      + +
    @@ -2562,7 +2747,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/plot_data_histogram.html b/doc/type/plot_data_histogram.html index c242a1d..cb62d29 100644 --- a/doc/type/plot_data_histogram.html +++ b/doc/type/plot_data_histogram.html @@ -74,7 +74,7 @@

    plot_data_histogram
  • 22 statements + title="

    2.6% of total for derived types.

    Including implementation: 238 statements, 1.9% of total for derived types.">22 statements
  • @@ -130,23 +130,26 @@

    Type-Bound Procedures

    @@ -174,6 +177,60 @@

    Type-Bound Procedures

    +
    + +

    + 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 +data set.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + +
    • +
    +
    + +
    +
    +

    @@ -531,7 +588,7 @@

    - +

    procedure, public :: get_command_string => pdh_get_cmd @@ -589,7 +646,7 @@

    - +

    procedure, public :: get_data_string => pdh_get_data_cmd @@ -647,7 +704,66 @@

    - + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + 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 @@ -707,7 +823,7 @@

    - +

    procedure, public :: get_is_filled => pdh_get_is_filled @@ -1134,7 +1250,76 @@

    Arguments

    - + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + 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 @@ -1204,7 +1389,7 @@

    Arguments

    - +

    procedure, public :: set_is_filled => pdh_set_is_filled @@ -1424,7 +1609,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/plot_data_tri_2d.html b/doc/type/plot_data_tri_2d.html index 403c76c..a1c6390 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
  • 15 statements + title="

    1.8% of total for derived types.

    Including implementation: 214 statements, 1.7% of total for derived types.">15 statements
  • @@ -130,18 +130,21 @@

    Type-Bound Procedures

    @@ -169,7 +172,61 @@

    Type-Bound Procedures

    - + +

    + 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 +data set.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: define_data => pdt2d_define_data @@ -295,7 +352,7 @@

    - +

    procedure, public :: get_command_string => pdt2d_get_cmd @@ -353,7 +410,7 @@

    - +

    procedure, public :: get_data_string => pdt2d_get_data_cmd @@ -411,6 +468,65 @@

    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(in) + + ::this +

      The plot_data object.

      +
      + +

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

      +

      The name.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -469,7 +585,7 @@

    - +

    procedure, public :: get_line_style => pdt2d_get_line_style @@ -545,7 +661,7 @@

    - +

    procedure, public :: get_line_width => pdt2d_get_line_width @@ -721,6 +837,75 @@

    Arguments

    +

  • + +

    + +
    +
    +
    +
    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + character(len=*), + intent(in) + + ::x +

      The name.

      +
      + +
    @@ -797,7 +982,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => pdt2d_set_line_style @@ -883,7 +1068,7 @@

    Arguments

    - +

    procedure, public :: set_line_width => pdt2d_set_line_width @@ -1034,7 +1219,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/plot_label.html b/doc/type/plot_label.html index 079f430..0ca469e 100644 --- a/doc/type/plot_label.html +++ b/doc/type/plot_label.html @@ -131,7 +131,7 @@

    Type-Bound Procedures

    get_angle - get_command_string + get_command_string get_is_visible get_position get_text @@ -223,7 +223,7 @@

    - +

    procedure, public :: get_command_string => lbl_get_cmd @@ -744,7 +744,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/plot_object.html b/doc/type/plot_object.html index 3a41cc7..23fbfa9 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-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/plot_polar.html b/doc/type/plot_polar.html index d15e12a..bfb5eab 100644 --- a/doc/type/plot_polar.html +++ b/doc/type/plot_polar.html @@ -74,7 +74,7 @@

    plot_polar
  • 20 statements + title="

    2.4% of total for derived types.

    Including implementation: 574 statements, 4.6% of total for derived types.">20 statements
  • @@ -144,21 +144,21 @@

    Type-Bound Procedures

    clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_arrow get_arrow_count get_autoscale get_axis_equal get_bottom_margin get_colormap - get_command_string + get_command_string get_count get_draw_border - get_font_name - get_font_size - get_label + get_font_name + get_font_size + get_label get_label_count get_left_margin get_legend @@ -166,21 +166,21 @@

    Type-Bound Procedures

    get_right_margin get_show_colorbar get_show_gridlines - get_terminal + get_terminal get_theta_direction get_theta_start_position get_tics_inward - get_title + get_title get_top_margin initialize - is_title_defined + is_title_defined pop pop_arrow pop_label push push_arrow push_label - save_file + save_file set set_arrow set_autoscale @@ -188,9 +188,9 @@

    Type-Bound Procedures

    set_bottom_margin set_colormap set_draw_border - set_font_name - set_font_size - set_label + set_font_name + set_font_size + set_label set_left_margin set_radial_limits set_right_margin @@ -199,7 +199,7 @@

    Type-Bound Procedures

    set_theta_direction set_theta_start_position set_tics_inward - set_title + set_title set_top_margin
  • @@ -253,7 +253,7 @@

    Arguments

    - + type(plot_polar), intent(inout) @@ -441,7 +441,7 @@

    Arguments

    - +

    procedure, public :: draw => plt_draw @@ -582,7 +582,7 @@

    Arguments

    - +

    procedure, public :: get => plt_get @@ -1021,7 +1021,7 @@

    - +

    procedure, public :: get_command_string => plr_get_cmd @@ -1195,7 +1195,7 @@

    - +

    procedure, public :: get_font_name => plt_get_font @@ -1253,7 +1253,7 @@

    - +

    procedure, public :: get_font_size => plt_get_font_size @@ -1311,7 +1311,7 @@

    - +

    procedure, public :: get_label => plt_get_label @@ -1793,7 +1793,7 @@

    - +

    procedure, public :: get_terminal => plt_get_term @@ -2048,7 +2048,7 @@

    - +

    procedure, public :: get_title => plt_get_title @@ -2283,7 +2283,7 @@

    Arguments

    - +

    procedure, public :: is_title_defined => plt_has_title @@ -2751,7 +2751,7 @@

    Arguments

    - +

    procedure, public :: save_file => plt_save @@ -3360,7 +3360,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => plt_set_font @@ -3428,7 +3428,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => plt_set_font_size @@ -3499,7 +3499,7 @@

    Arguments

    - +

    procedure, public :: set_label => plt_set_label @@ -4154,7 +4154,7 @@

    Arguments

    - +

    procedure, public :: set_title => plt_set_title @@ -4307,7 +4307,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/png_terminal.html b/doc/type/png_terminal.html index 2714a63..6e54e8d 100644 --- a/doc/type/png_terminal.html +++ b/doc/type/png_terminal.html @@ -74,7 +74,7 @@

    png_terminal
  • 9 statements + title="

    1.1% of total for derived types.

    Including implementation: 153 statements, 1.2% of total for derived types.">9 statements
  • @@ -130,20 +130,20 @@

    Type-Bound Procedures

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

    Type-Bound Procedures

    - +

    procedure, public :: get_command_string => png_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-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/qt_terminal.html b/doc/type/qt_terminal.html index 117014c..085869d 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-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/rainbow_colormap.html b/doc/type/rainbow_colormap.html index 8ffcd98..2c40d83 100644 --- a/doc/type/rainbow_colormap.html +++ b/doc/type/rainbow_colormap.html @@ -74,7 +74,7 @@

    rainbow_colormap
  • 4 statements + title="

    0.5% of total for derived types.

    Including implementation: 92 statements, 0.7% of total for derived types.">4 statements
  • @@ -131,14 +131,14 @@

    Type-Bound Procedures

    @@ -224,7 +224,7 @@

    - +

    procedure, public :: get_command_string => cm_get_cmd @@ -282,7 +282,7 @@

    - +

    procedure, public :: get_draw_border => cm_get_draw_border @@ -400,7 +400,7 @@

    - +

    procedure, public :: get_label => cm_get_label @@ -516,7 +516,7 @@

    - +

    procedure, public :: set_draw_border => cm_set_draw_border @@ -654,7 +654,7 @@

    Arguments

    - +

    procedure, public :: set_label => cm_set_label @@ -805,7 +805,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/scatter_plot_data.html b/doc/type/scatter_plot_data.html index 5028f96..e50bfb7 100644 --- a/doc/type/scatter_plot_data.html +++ b/doc/type/scatter_plot_data.html @@ -74,7 +74,7 @@

    scatter_plot_data
  • 47 statements + title="

    5.6% of total for derived types.

    Including implementation: 299 statements, 2.4% of total for derived types.">47 statements
  • @@ -130,16 +130,18 @@

    Type-Bound Procedures

  • @@ -194,7 +197,61 @@

    Type-Bound Procedures

    - + +

    + 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 +data set.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure(spd_get_string_result), public, deferred :: get_axes_string @@ -310,7 +367,7 @@

    - +

    procedure, public :: get_command_string => spd_get_cmd @@ -427,7 +484,7 @@

    - +

    procedure(pd_get_string_result), public, deferred :: get_data_string @@ -485,6 +542,65 @@

    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(in) + + ::this +

      The plot_data object.

      +
      + +

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

      +

      The name.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -717,7 +833,7 @@

    - +

    procedure, public :: get_line_style => spd_get_line_style @@ -1359,7 +1475,7 @@

    - +

    procedure(spd_get_value), public, deferred :: get_x @@ -1432,7 +1548,7 @@

    - +

    procedure(spd_get_value), public, deferred :: get_y @@ -1565,6 +1681,75 @@

    Arguments

    +

  • + +

    + +
    +
    +
    +
    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + character(len=*), + intent(in) + + ::x +

      The name.

      +
      + +
    @@ -1845,7 +2030,7 @@

    Arguments

    - +

    procedure, public :: set_line_style => spd_set_line_style @@ -2587,7 +2772,7 @@

    Arguments

    - +

    procedure(spd_set_value), public, deferred :: set_x @@ -2670,7 +2855,7 @@

    Arguments

    - +

    procedure(spd_set_value), public, deferred :: set_y @@ -2768,7 +2953,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/surface_plot.html b/doc/type/surface_plot.html index de85783..66ee936 100644 --- a/doc/type/surface_plot.html +++ b/doc/type/surface_plot.html @@ -74,7 +74,7 @@

    surface_plot
  • 26 statements + title="

    3.1% of total for derived types.

    Including implementation: 608 statements, 4.9% of total for derived types.">26 statements
  • @@ -133,9 +133,9 @@

    Type-Bound Procedures

    clear_all clear_all_labels clear_arrows - draw + draw free_resources - get + get get_allow_smoothing get_arrow get_arrow_count @@ -143,14 +143,14 @@

    Type-Bound Procedures

    get_azimuth get_bottom_margin get_colormap - get_command_string + get_command_string get_coordinate_system 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_legend @@ -161,26 +161,26 @@

    Type-Bound Procedures

    get_show_gridlines get_show_hidden get_specular_intensity - get_terminal + get_terminal get_tics_inward - get_title + get_title get_top_margin get_transparency get_use_lighting get_use_map_view - get_x_axis - get_y_axis + get_x_axis + get_y_axis get_z_axis get_z_intersect_xy initialize - is_title_defined + is_title_defined pop pop_arrow pop_label push push_arrow push_label - save_file + save_file set set_allow_smoothing set_arrow @@ -191,9 +191,9 @@

    Type-Bound Procedures

    set_coordinate_system set_draw_border set_elevation - set_font_name - set_font_size - set_label + set_font_name + set_font_size + set_label set_left_margin set_light_intensity set_right_margin @@ -203,7 +203,7 @@

    Type-Bound Procedures

    set_show_hidden set_specular_intensity set_tics_inward - set_title + set_title set_top_margin set_transparency set_use_lighting @@ -394,7 +394,7 @@

    Arguments

    - +

    procedure, public :: draw => plt_draw @@ -535,7 +535,7 @@

    Arguments

    - +

    procedure, public :: get => plt_get @@ -1032,7 +1032,7 @@

    - +

    procedure, public :: get_command_string => surf_get_cmd @@ -1334,7 +1334,7 @@

    - +

    procedure, public :: get_font_name => plt_get_font @@ -1392,7 +1392,7 @@

    - +

    procedure, public :: get_font_size => plt_get_font_size @@ -1450,7 +1450,7 @@

    - +

    procedure, public :: get_label => plt_get_label @@ -2109,7 +2109,7 @@

    - +

    procedure, public :: get_terminal => plt_get_term @@ -2226,7 +2226,7 @@

    - +

    procedure, public :: get_title => plt_get_title @@ -2520,7 +2520,7 @@

    - +

    procedure, public :: get_x_axis => p3d_get_x_axis @@ -2578,7 +2578,7 @@

    - +

    procedure, public :: get_y_axis => p3d_get_y_axis @@ -2872,7 +2872,7 @@

    Arguments

    - +

    procedure, public :: is_title_defined => plt_has_title @@ -3340,7 +3340,7 @@

    Arguments

    - +

    procedure, public :: save_file => plt_save @@ -4164,7 +4164,7 @@

    Arguments

    - +

    procedure, public :: set_font_name => plt_set_font @@ -4232,7 +4232,7 @@

    Arguments

    - +

    procedure, public :: set_font_size => plt_set_font_size @@ -4303,7 +4303,7 @@

    Arguments

    - +

    procedure, public :: set_label => plt_set_label @@ -5009,7 +5009,7 @@

    Arguments

    - +

    procedure, public :: set_title => plt_set_title @@ -5441,7 +5441,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/surface_plot_data.html b/doc/type/surface_plot_data.html index 74dbf46..413d2f9 100644 --- a/doc/type/surface_plot_data.html +++ b/doc/type/surface_plot_data.html @@ -74,7 +74,7 @@

    surface_plot_data
  • 19 statements + title="

    2.3% of total for derived types.

    Including implementation: 232 statements, 1.9% of total for derived types.">19 statements
  • @@ -130,20 +130,23 @@

    Type-Bound Procedures

  • @@ -170,7 +173,61 @@

    Type-Bound Procedures

    - + +

    + 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 +data set.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: define_data => surfd_set_data_1 @@ -283,7 +340,7 @@

    Arguments

    - +

    procedure, public :: get_command_string => surfd_get_cmd @@ -342,7 +399,7 @@

    - +

    procedure, public :: get_data_string => surfd_get_data_cmd @@ -400,6 +457,65 @@

    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(in) + + ::this +

      The plot_data object.

      +
      + +

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

      +

      The name.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -532,7 +648,7 @@

    - +

    procedure, public :: get_use_wireframe => surfd_get_wireframe @@ -591,7 +707,7 @@

    - +

    procedure, public :: get_x => surfd_get_x @@ -679,7 +795,7 @@

    - +

    procedure, public :: get_y => surfd_get_y @@ -767,7 +883,7 @@

    - +

    procedure, public :: get_z => surfd_get_z @@ -847,6 +963,75 @@

    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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + character(len=*), + intent(in) + + ::x +

      The name.

      +
      + +
    @@ -923,7 +1108,7 @@

    Arguments

    - +

    procedure, public :: set_use_wireframe => surfd_set_wireframe @@ -992,7 +1177,7 @@

    Arguments

    - +

    procedure, public :: set_x => surfd_set_x @@ -1090,7 +1275,7 @@

    Arguments

    - +

    procedure, public :: set_y => surfd_set_y @@ -1188,7 +1373,7 @@

    Arguments

    - +

    procedure, public :: set_z => surfd_set_z @@ -1301,7 +1486,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/terminal.html b/doc/type/terminal.html index 3d306f3..b83d217 100644 --- a/doc/type/terminal.html +++ b/doc/type/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(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-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/tri_surface_plot_data.html b/doc/type/tri_surface_plot_data.html index 7557507..3c92c9f 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
  • 13 statements + title="

    1.5% of total for derived types.

    Including implementation: 164 statements, 1.3% of total for derived types.">13 statements
  • @@ -130,13 +130,16 @@

    Type-Bound Procedures

  • @@ -164,7 +167,61 @@

    Type-Bound Procedures

    - + +

    + 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 +data set.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + +
    • +
    +
    + +
    +
    +
    +
    +

    procedure, public :: define_data => tspd_define_data @@ -232,7 +289,7 @@

    Arguments

    - +

    procedure, public :: get_command_string => tspd_get_cmd @@ -290,7 +347,7 @@

    - +

    procedure, public :: get_data_string => tspd_get_data_cmd @@ -348,6 +405,65 @@

    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(in) + + ::this +

      The plot_data object.

      +
      + +

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

      +

      The name.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -406,7 +522,7 @@

    - +

    procedure, public :: get_use_wireframe => tspd_get_wireframe @@ -457,6 +573,75 @@

    Returns true if the plot is to be drawn as a wireframe; else, false 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + character(len=*), + intent(in) + + ::x +

      The name.

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

    Arguments

    - +

    procedure, public :: set_use_wireframe => tspd_set_wireframe @@ -617,7 +802,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/vector_field_plot_data.html b/doc/type/vector_field_plot_data.html index d43f663..f402512 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
  • 14 statements + title="

    1.7% of total for derived types.

    Including implementation: 254 statements, 2.0% of total for derived types.">14 statements
  • @@ -130,17 +130,20 @@

    Type-Bound Procedures

    + create_unique_datablock_name define_data get_arrow_size get_color_index get_command_string get_data_string + get_datablock_name get_fill_arrow get_line_color get_name get_use_data_dependent_colors set_arrow_size set_color_index + set_datablock_name set_fill_arrow set_line_color set_name @@ -169,6 +172,60 @@

    Type-Bound Procedures

    +
    + +

    + 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 +data set.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + +
    • +
    +
    + +
    +
    +

    @@ -549,6 +606,65 @@

    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(in) + + ::this +

      The plot_data object.

      +
      + +

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

      +

      The name.

      + +
    • +
    +
    + +
    +
    +
    +

    procedure, public :: @@ -912,6 +1028,75 @@

    Arguments

    +

  • + +

    + +
    +
    +
    +
    + +

    + 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 +plot file.

      + +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeIntentOptional AttributesName
      + + class(plot_data), + intent(inout) + + ::this +

      The plot_data object.

      +
      + + character(len=*), + intent(in) + + ::x +

      The name.

      +
      + +
    @@ -1139,7 +1324,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/windows_terminal.html b/doc/type/windows_terminal.html index 33e70b8..bfc6332 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-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/wxt_terminal.html b/doc/type/wxt_terminal.html index 85ae3e3..78720a0 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-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/x_axis.html b/doc/type/x_axis.html index 3d00b37..6d8a2c9 100644 --- a/doc/type/x_axis.html +++ b/doc/type/x_axis.html @@ -74,7 +74,7 @@

    x_axis
  • 5 statements + title="

    0.6% of total for derived types.

    Including implementation: 349 statements, 2.8% of total for derived types.">5 statements
  • @@ -131,8 +131,8 @@

    Type-Bound Procedures

    get_autoscale - get_command_string - get_id_string + get_command_string + get_id_string get_is_log_scaled get_limits get_manual_tic_labels @@ -257,7 +257,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -316,7 +316,7 @@

    - +

    procedure, public :: get_id_string => xa_get_id @@ -1660,7 +1660,7 @@

    Gets the axis display limits, assuming autoscaling is not -active for this axis. This routine also calls set_autoscale and +active for this axis. This routine also calls set_autoscale and sets the property value to false.

    Arguments

    @@ -1745,7 +1745,7 @@

    Sets a list of manual tic labels. This routine also sets -set_use_manual_tic_labels to true.

    +set_use_manual_tic_labels to true.

    Arguments

    @@ -2865,7 +2865,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/y2_axis.html b/doc/type/y2_axis.html index c643429..1ecc369 100644 --- a/doc/type/y2_axis.html +++ b/doc/type/y2_axis.html @@ -74,7 +74,7 @@

    y2_axis
  • 5 statements + title="

    0.6% of total for derived types.

    Including implementation: 349 statements, 2.8% of total for derived types.">5 statements
  • @@ -131,8 +131,8 @@

    Type-Bound Procedures

    get_autoscale - get_command_string - get_id_string + get_command_string + get_id_string get_is_log_scaled get_limits get_manual_tic_labels @@ -257,7 +257,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -316,7 +316,7 @@

    - +

    procedure, public :: get_id_string => y2a_get_id @@ -1660,7 +1660,7 @@

    Gets the axis display limits, assuming autoscaling is not -active for this axis. This routine also calls set_autoscale and +active for this axis. This routine also calls set_autoscale and sets the property value to false.

    Arguments

    @@ -1745,7 +1745,7 @@

    Sets a list of manual tic labels. This routine also sets -set_use_manual_tic_labels to true.

    +set_use_manual_tic_labels to true.

    Arguments

  • @@ -2865,7 +2865,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/y_axis.html b/doc/type/y_axis.html index 2d98e2a..4f61651 100644 --- a/doc/type/y_axis.html +++ b/doc/type/y_axis.html @@ -74,7 +74,7 @@

    y_axis
  • 5 statements + title="

    0.6% of total for derived types.

    Including implementation: 349 statements, 2.8% of total for derived types.">5 statements
  • @@ -131,8 +131,8 @@

    Type-Bound Procedures

    get_autoscale - get_command_string - get_id_string + get_command_string + get_id_string get_is_log_scaled get_limits get_manual_tic_labels @@ -257,7 +257,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -316,7 +316,7 @@

    - +

    procedure, public :: get_id_string => ya_get_id @@ -1660,7 +1660,7 @@

    Gets the axis display limits, assuming autoscaling is not -active for this axis. This routine also calls set_autoscale and +active for this axis. This routine also calls set_autoscale and sets the property value to false.

    Arguments

    @@ -1745,7 +1745,7 @@

    Sets a list of manual tic labels. This routine also sets -set_use_manual_tic_labels to true.

    +set_use_manual_tic_labels to true.

    Arguments

  • @@ -2865,7 +2865,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03


    diff --git a/doc/type/z_axis.html b/doc/type/z_axis.html index 370f5f3..bcc4129 100644 --- a/doc/type/z_axis.html +++ b/doc/type/z_axis.html @@ -74,7 +74,7 @@

    z_axis
  • 5 statements + title="

    0.6% of total for derived types.

    Including implementation: 349 statements, 2.8% of total for derived types.">5 statements
  • @@ -131,8 +131,8 @@

    Type-Bound Procedures

    get_autoscale - get_command_string - get_id_string + get_command_string + get_id_string get_is_log_scaled get_limits get_manual_tic_labels @@ -257,7 +257,7 @@

    - +

    procedure, public :: get_command_string => pa_get_cmd_string @@ -316,7 +316,7 @@

    - +

    procedure, public :: get_id_string => za_get_id @@ -1660,7 +1660,7 @@

    Gets the axis display limits, assuming autoscaling is not -active for this axis. This routine also calls set_autoscale and +active for this axis. This routine also calls set_autoscale and sets the property value to false.

    Arguments

    @@ -1745,7 +1745,7 @@

    Sets a list of manual tic labels. This routine also sets -set_use_manual_tic_labels to true.

    +set_use_manual_tic_labels to true.

    Arguments

  • @@ -2865,7 +2865,7 @@

    Arguments

    Documentation generated by FORD - on 2026-06-14 08:02

    + on 2026-06-16 07:03