fortplot_plotting Module

Basic plot addition methods for figure (SOLID principles compliance)

This module contains basic add_* methods for plot types, separated from figure base for better modularity and maintainability. Advanced plot types are in fortplot_plotting_advanced module.



Interfaces

public interface add_plot

  • private subroutine add_plot_impl(self, x, y, label, linestyle, color_rgb, color_str, marker, markercolor)

    Add 2D line plot to figure

    Arguments

    Type IntentOptional Attributes Name
    class(figure_t), intent(inout) :: self
    real(kind=wp), intent(in) :: x(:)
    real(kind=wp), intent(in) :: y(:)
    character(len=*), intent(in), optional :: label
    character(len=*), intent(in), optional :: linestyle
    real(kind=wp), intent(in), optional :: color_rgb(3)
    character(len=*), intent(in), optional :: color_str
    character(len=*), intent(in), optional :: marker
    real(kind=wp), intent(in), optional :: markercolor(3)

public interface add_scatter_2d

  • private subroutine add_scatter_2d_impl(self, x, y, s, c, label, marker, markersize, color, colormap, vmin, vmax, show_colorbar, alpha)

    Add 2D scatter plot to figure

    Arguments

    Type IntentOptional Attributes Name
    class(figure_t), intent(inout) :: self
    real(kind=wp), intent(in) :: x(:)
    real(kind=wp), intent(in) :: y(:)
    real(kind=wp), intent(in), optional :: s(:)
    real(kind=wp), intent(in), optional :: c(:)
    character(len=*), intent(in), optional :: label
    character(len=*), intent(in), optional :: marker
    real(kind=wp), intent(in), optional :: markersize
    real(kind=wp), intent(in), optional :: color(3)
    character(len=*), intent(in), optional :: colormap
    real(kind=wp), intent(in), optional :: vmin
    real(kind=wp), intent(in), optional :: vmax
    logical, intent(in), optional :: show_colorbar
    real(kind=wp), intent(in), optional :: alpha

public interface add_scatter_3d

  • private subroutine add_scatter_3d_impl(self, x, y, z, s, c, label, marker, markersize, color, colormap, vmin, vmax, show_colorbar, alpha)

    Add 3D scatter plot to figure

    Arguments

    Type IntentOptional Attributes Name
    class(figure_t), intent(inout) :: self
    real(kind=wp), intent(in) :: x(:)
    real(kind=wp), intent(in) :: y(:)
    real(kind=wp), intent(in) :: z(:)
    real(kind=wp), intent(in), optional :: s(:)
    real(kind=wp), intent(in), optional :: c(:)
    character(len=*), intent(in), optional :: label
    character(len=*), intent(in), optional :: marker
    real(kind=wp), intent(in), optional :: markersize
    real(kind=wp), intent(in), optional :: color(3)
    character(len=*), intent(in), optional :: colormap
    real(kind=wp), intent(in), optional :: vmin
    real(kind=wp), intent(in), optional :: vmax
    logical, intent(in), optional :: show_colorbar
    real(kind=wp), intent(in), optional :: alpha

public interface errorbar

  • private subroutine errorbar_impl(self, x, y, xerr, yerr, xerr_lower, xerr_upper, yerr_lower, yerr_upper, label, marker, markersize, ecolor, elinewidth, capsize, capthick, color)

    Add error bar plot to figure

    Arguments

    Type IntentOptional Attributes Name
    class(figure_t), intent(inout) :: self
    real(kind=wp), intent(in) :: x(:)
    real(kind=wp), intent(in) :: y(:)
    real(kind=wp), intent(in), optional :: xerr(:)
    real(kind=wp), intent(in), optional :: yerr(:)
    real(kind=wp), intent(in), optional :: xerr_lower(:)
    real(kind=wp), intent(in), optional :: xerr_upper(:)
    real(kind=wp), intent(in), optional :: yerr_lower(:)
    real(kind=wp), intent(in), optional :: yerr_upper(:)
    character(len=*), intent(in), optional :: label
    character(len=*), intent(in), optional :: marker
    real(kind=wp), intent(in), optional :: markersize
    real(kind=wp), intent(in), optional :: ecolor(3)
    real(kind=wp), intent(in), optional :: elinewidth
    real(kind=wp), intent(in), optional :: capsize
    real(kind=wp), intent(in), optional :: capthick
    real(kind=wp), intent(in), optional :: color(3)

Subroutines

public subroutine add_3d_plot(self, x, y, z, label, linestyle, markersize, linewidth)

Add 3D line plot to figure (projected to 2D)

Arguments

Type IntentOptional Attributes Name
class(figure_t), intent(inout) :: self
real(kind=wp), intent(in) :: x(:)
real(kind=wp), intent(in) :: y(:)
real(kind=wp), intent(in) :: z(:)
character(len=*), intent(in), optional :: label
character(len=*), intent(in), optional :: linestyle
real(kind=wp), intent(in), optional :: markersize
real(kind=wp), intent(in), optional :: linewidth

public subroutine add_surface(self, x, y, z, label)

Add surface plot to figure

Arguments

Type IntentOptional Attributes Name
class(figure_t), intent(inout) :: self
real(kind=wp), intent(in) :: x(:)
real(kind=wp), intent(in) :: y(:)
real(kind=wp), intent(in) :: z(:,:)
character(len=*), intent(in), optional :: label

public subroutine add_text_annotation(self, x, y, text, coord_type, font_size, rotation, ha, va, bbox, color, alpha, weight, style)

Add text annotation to figure

Arguments

Type IntentOptional Attributes Name
class(figure_t), intent(inout) :: self
real(kind=wp), intent(in) :: x
real(kind=wp), intent(in) :: y
character(len=*), intent(in) :: text
character(len=*), intent(in), optional :: coord_type
real(kind=wp), intent(in), optional :: font_size
real(kind=wp), intent(in), optional :: rotation
character(len=*), intent(in), optional :: ha
character(len=*), intent(in), optional :: va
logical, intent(in), optional :: bbox
real(kind=wp), intent(in), optional :: color(3)
real(kind=wp), intent(in), optional :: alpha
character(len=*), intent(in), optional :: weight
character(len=*), intent(in), optional :: style

public subroutine add_arrow_annotation(self, text, xy, xytext, xy_coord_type, xytext_coord_type, arrowprops, font_size, color, alpha)

Add arrow annotation to figure

Arguments

Type IntentOptional Attributes Name
class(figure_t), intent(inout) :: self
character(len=*), intent(in) :: text
real(kind=wp), intent(in) :: xy(2)
real(kind=wp), intent(in) :: xytext(2)
character(len=*), intent(in), optional :: xy_coord_type
character(len=*), intent(in), optional :: xytext_coord_type
character(len=*), intent(in), optional :: arrowprops
real(kind=wp), intent(in), optional :: font_size
real(kind=wp), intent(in), optional :: color(3)
real(kind=wp), intent(in), optional :: alpha

public subroutine add_line_plot_data(self, x, y, label, linestyle, color_rgb, color_str, marker)

Add line plot data with comprehensive validation Refactored to be under 100 lines (QADS compliance)

Arguments

Type IntentOptional Attributes Name
class(figure_t), intent(inout) :: self
real(kind=wp), intent(in) :: x(:)
real(kind=wp), intent(in) :: y(:)
character(len=*), intent(in), optional :: label
character(len=*), intent(in), optional :: linestyle
real(kind=wp), intent(in), optional :: color_rgb(3)
character(len=*), intent(in), optional :: color_str
character(len=*), intent(in), optional :: marker

public subroutine add_scatter_plot_data(self, x, y, z, s, c, label, marker, markersize, color, colormap, vmin, vmax, show_colorbar, alpha)

Add scatter plot data with optional properties

Arguments

Type IntentOptional Attributes Name
class(figure_t), intent(inout) :: self
real(kind=wp), intent(in) :: x(:)
real(kind=wp), intent(in) :: y(:)
real(kind=wp), intent(in), optional :: z(:)
real(kind=wp), intent(in), optional :: s(:)
real(kind=wp), intent(in), optional :: c(:)
character(len=*), intent(in), optional :: label
character(len=*), intent(in), optional :: marker
real(kind=wp), intent(in), optional :: markersize
real(kind=wp), intent(in), optional :: color(3)
character(len=*), intent(in), optional :: colormap
real(kind=wp), intent(in), optional :: vmin
real(kind=wp), intent(in), optional :: vmax
logical, intent(in), optional :: show_colorbar
real(kind=wp), intent(in), optional :: alpha