type, public :: figure_t
    Main figure class implementing Facade Pattern for plotting operations
This type provides a unified interface for all figure operations while
delegating implementation details to specialized modules. The design 
follows object-oriented principles with clear separation of concerns.
    
    
    Components
      
    
      
        | Type | Visibility | Attributes |  | Name |  | Initial |  | 
    
        
            | type(figure_state_t), | public |  | :: | state |  |  |  | 
        
            | type(plot_data_t), | public, | allocatable | :: | plots(:) |  |  |  | 
        
            | type(plot_data_t), | public, | allocatable | :: | streamlines(:) |  |  |  | 
        
            | type(text_annotation_t), | public, | allocatable | :: | annotations(:) |  |  |  | 
        
            | integer, | public |  | :: | annotation_count | = | 0 |  | 
        
            | integer, | public |  | :: | max_annotations | = | 1000 |  | 
        
            | integer, | public |  | :: | subplot_rows | = | 0 |  | 
        
            | integer, | public |  | :: | subplot_cols | = | 0 |  | 
        
            | integer, | public |  | :: | current_subplot | = | 1 |  | 
        
            | type(subplot_data_t), | public, | allocatable | :: | subplots_array(:,:) |  |  |  | 
        
            | character(len=:), | public, | allocatable | :: | title |  |  |  | 
        
            | character(len=:), | public, | allocatable | :: | xlabel |  |  |  | 
        
            | character(len=:), | public, | allocatable | :: | ylabel |  |  |  | 
        
            | integer, | public |  | :: | plot_count | = | 0 |  | 
    
  
    
    
    
      
        Finalization Procedures
            
    
    
      
      
    
    
      - 
            
    private  subroutine destroy(self)  
    Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | type(figure_t), | intent(inout) |  |  | :: | self |  |  
 
 
      
      
      
        Type-Bound Procedures
          
              
    
      
          - 
                    
    private  subroutine initialize(self, width, height, backend)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | integer, | intent(in), | optional |  | :: | width |  |  
            | integer, | intent(in), | optional |  | :: | height |  |  
            | character(len=*), | intent(in), | optional |  | :: | backend |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine add_plot(self, x, y, label, linestyle, color)  
Arguments
    
      
        | Type | Intent | Optional | 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(3) |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine add_plot(self, x, y, label, linestyle, color)  
Arguments
    
      
        | Type | Intent | Optional | 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(3) |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine add_contour(self, x_grid, y_grid, z_grid, levels, label)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x_grid(:) |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y_grid(:) |  |  
            | real(kind=wp), | intent(in) |  |  | :: | z_grid(:,:) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | levels(:) |  |  
            | character(len=*), | intent(in), | optional |  | :: | label |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine add_contour_filled(self, x_grid, y_grid, z_grid, levels, colormap, show_colorbar, label)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x_grid(:) |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y_grid(:) |  |  
            | real(kind=wp), | intent(in) |  |  | :: | z_grid(:,:) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | levels(:) |  |  
            | character(len=*), | intent(in), | optional |  | :: | colormap |  |  
            | logical, | intent(in), | optional |  | :: | show_colorbar |  |  
            | character(len=*), | intent(in), | optional |  | :: | label |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine add_surface(self, x_grid, y_grid, z_grid, label, colormap, show_colorbar, alpha, edgecolor, linewidth)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x_grid(:) |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y_grid(:) |  |  
            | real(kind=wp), | intent(in) |  |  | :: | z_grid(:,:) |  |  
            | character(len=*), | intent(in), | optional |  | :: | label |  |  
            | character(len=*), | intent(in), | optional |  | :: | colormap |  |  
            | logical, | intent(in), | optional |  | :: | show_colorbar |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | alpha |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | edgecolor(3) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | linewidth |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine add_pcolormesh(self, x, y, c, colormap, vmin, vmax, edgecolors, linewidths)  
Arguments
    
      
        | Type | Intent | Optional | 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) |  |  | :: | c(:,:) |  |  
            | character(len=*), | intent(in), | optional |  | :: | colormap |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | vmin |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | vmax |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | edgecolors(3) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | linewidths |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine streamplot(self, x, y, u, v, density, color, linewidth, rtol, atol, max_time)  
Arguments
    
      
        | Type | Intent | Optional | 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) |  |  | :: | u(:,:) |  |  
            | real(kind=wp), | intent(in) |  |  | :: | v(:,:) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | density |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | color(3) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | linewidth |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | rtol |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | atol |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | max_time |  |  
 
 
           
          
          
          
          
              
    
      
          - 
                    
    private  subroutine set_xlabel(self, label)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | character(len=*), | intent(in) |  |  | :: | label |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_ylabel(self, label)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | character(len=*), | intent(in) |  |  | :: | label |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_title(self, title)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | character(len=*), | intent(in) |  |  | :: | title |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_xscale(self, scale, threshold)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | character(len=*), | intent(in) |  |  | :: | scale |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | threshold |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_yscale(self, scale, threshold)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | character(len=*), | intent(in) |  |  | :: | scale |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | threshold |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_xlim(self, x_min, x_max)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x_min |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x_max |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_ylim(self, y_min, y_max)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y_min |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y_max |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_line_width(self, width)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | width |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_ydata(self, plot_index, y_new)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | integer, | intent(in) |  |  | :: | plot_index |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y_new(:) |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine figure_legend(self, location)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | character(len=*), | intent(in), | optional |  | :: | location |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine show(self, blocking)  
Display the figure Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | logical, | intent(in), | optional |  | :: | blocking |  |  
 
 
           
          
          
              
    
      
          - 
                    
    private  subroutine clear_streamlines(self)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
 
 
           
          
          
              
    
      
          - 
                    
    private  subroutine add_hist(self, data, bins, density, label, color)  
Create a histogram plot Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | data(:) |  |  
            | integer, | intent(in), | optional |  | :: | bins |  |  
            | logical, | intent(in), | optional |  | :: | density |  |  
            | character(len=*), | intent(in), | optional |  | :: | label |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | color(3) |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine add_hist(self, data, bins, density, label, color)  
Create a histogram plot Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | data(:) |  |  
            | integer, | intent(in), | optional |  | :: | bins |  |  
            | logical, | intent(in), | optional |  | :: | density |  |  
            | character(len=*), | intent(in), | optional |  | :: | label |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | color(3) |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine boxplot(self, data, position, width, label, show_outliers, horizontal, color)  
Create a box plot Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | data(:) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | position |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | width |  |  
            | character(len=*), | intent(in), | optional |  | :: | label |  |  
            | logical, | intent(in), | optional |  | :: | show_outliers |  |  
            | logical, | intent(in), | optional |  | :: | horizontal |  |  
            | character(len=*), | intent(in), | optional |  | :: | color |  |  
 
 
           
          
          
              
    
      
          - 
                interface 
    private module subroutine add_imshow(self, z, xlim, ylim, cmap, alpha, vmin, vmax, origin, extent, interpolation, aspect)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | z(:,:) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | xlim(2) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | ylim(2) |  |  
            | character(len=*), | intent(in), | optional |  | :: | cmap |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | alpha |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | vmin |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | vmax |  |  
            | character(len=*), | intent(in), | optional |  | :: | origin |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | extent(4) |  |  
            | character(len=*), | intent(in), | optional |  | :: | interpolation |  |  
            | character(len=*), | intent(in), | optional |  | :: | aspect |  |  
 
 
           
          
              
    
      
          - 
                interface 
    private module subroutine add_pie(self, values, labels, autopct, startangle, colors, explode)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | values(:) |  |  
            | character(len=*), | intent(in), | optional |  | :: | labels(:) |  |  
            | character(len=*), | intent(in), | optional |  | :: | autopct |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | startangle |  |  
            | character(len=*), | intent(in), | optional |  | :: | colors(:) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | explode(:) |  |  
 
 
           
          
              
    
      
          - 
                interface 
    private module subroutine add_polar(self, theta, r, label, fmt, linestyle, marker, color)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | theta(:) |  |  
            | real(kind=wp), | intent(in) |  |  | :: | r(:) |  |  
            | character(len=*), | intent(in), | optional |  | :: | label |  |  
            | character(len=*), | intent(in), | optional |  | :: | fmt |  |  
            | character(len=*), | intent(in), | optional |  | :: | linestyle |  |  
            | character(len=*), | intent(in), | optional |  | :: | marker |  |  
            | character(len=*), | intent(in), | optional |  | :: | color |  |  
 
 
           
          
              
    
      
          - 
                interface 
    private module subroutine add_step(self, x, y, label, where, linestyle, color, linewidth)  
Arguments
    
      
        | Type | Intent | Optional | 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 |  | :: | where |  |  
            | character(len=*), | intent(in), | optional |  | :: | linestyle |  |  
            | character(len=*), | intent(in), | optional |  | :: | color |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | linewidth |  |  
 
 
           
          
              
    
      
          - 
                interface 
    private module subroutine add_stem(self, x, y, label, linefmt, markerfmt, basefmt, bottom)  
Arguments
    
      
        | Type | Intent | Optional | 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 |  | :: | linefmt |  |  
            | character(len=*), | intent(in), | optional |  | :: | markerfmt |  |  
            | character(len=*), | intent(in), | optional |  | :: | basefmt |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | bottom |  |  
 
 
           
          
              
    
      
          - 
                interface 
    private module subroutine add_fill(self, x, y, color, alpha)  
Arguments
    
      
        | Type | Intent | Optional | 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 |  | :: | color |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | alpha |  |  
 
 
           
          
              
    
      
          - 
                interface 
    private module subroutine add_fill_between(self, x, y1, y2, where, color, alpha, interpolate)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x(:) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | y1(:) |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | y2(:) |  |  
            | logical, | intent(in), | optional |  | :: | where(:) |  |  
            | character(len=*), | intent(in), | optional |  | :: | color |  |  
            | real(kind=wp), | intent(in), | optional |  | :: | alpha |  |  
            | logical, | intent(in), | optional |  | :: | interpolate |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine twinx(self)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine twiny(self)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine use_axis(self, axis_name)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | character(len=*), | intent(in) |  |  | :: | axis_name |  |  
 
 
           
          
              
    
      
          - 
                    
    private  function get_active_axis(self) result(axis_name)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    character(len=10)
    
 
           
          
              
    
      
          - 
                    
    private  subroutine subplots(self, nrows, ncols)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | integer, | intent(in) |  |  | :: | nrows |  |  
            | integer, | intent(in) |  |  | :: | ncols |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine subplot_plot(self, row, col, x, y, label, linestyle, color)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | integer, | intent(in) |  |  | :: | row |  |  
            | integer, | intent(in) |  |  | :: | col |  |  
            | 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(3) |  |  
 
 
           
          
              
    
      
          - 
                    
    private  function subplot_plot_count(self, row, col) result(count)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
            | integer, | intent(in) |  |  | :: | row |  |  
            | integer, | intent(in) |  |  | :: | col |  |  
 
    Return Value
    integer
    
 
           
          
              
    
      
          - 
                    
    private  subroutine subplot_set_title(self, row, col, title)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | integer, | intent(in) |  |  | :: | row |  |  
            | integer, | intent(in) |  |  | :: | col |  |  
            | character(len=*), | intent(in) |  |  | :: | title |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine subplot_set_xlabel(self, row, col, xlabel)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | integer, | intent(in) |  |  | :: | row |  |  
            | integer, | intent(in) |  |  | :: | col |  |  
            | character(len=*), | intent(in) |  |  | :: | xlabel |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine subplot_set_ylabel(self, row, col, ylabel)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | integer, | intent(in) |  |  | :: | row |  |  
            | integer, | intent(in) |  |  | :: | col |  |  
            | character(len=*), | intent(in) |  |  | :: | ylabel |  |  
 
 
           
          
              
    
      
          - 
                    
    private  function subplot_title(self, row, col) result(title)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
            | integer, | intent(in) |  |  | :: | row |  |  
            | integer, | intent(in) |  |  | :: | col |  |  
 
    Return Value
    character(len=:), allocatable
    
 
           
          
              
    
      
          - 
                    
    private  function get_width(self) result(width)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    integer
    
 
           
          
              
    
      
          - 
                    
    private  function get_height(self) result(height)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    integer
    
 
           
          
              
    
      
          - 
                    
    private  function get_rendered(self) result(rendered)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    logical
    
 
           
          
              
    
      
          - 
                    
    private  subroutine set_rendered(self, rendered)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | logical, | intent(in) |  |  | :: | rendered |  |  
 
 
           
          
              
    
      
          - 
                    
    private  function get_plot_count(self) result(plot_count)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    integer
    
 
           
          
              
    
      
          - 
                    
    private  function get_plots(self) result(plots_ptr)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in), |  | target | :: | self |  |  
 
    Return Value
    type(plot_data_t), pointer, (:)
    
 
           
          
              
    
      
          - 
                    
    private  subroutine setup_png_backend_for_animation(self)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine extract_rgb_data_for_animation(self, rgb_data)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(out) |  |  | :: | rgb_data(:,:,:) |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine extract_png_data_for_animation(self, png_data, status)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | integer(kind=1), | intent(out), |  | allocatable | :: | png_data(:) |  |  
            | integer, | intent(out) |  |  | :: | status |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine backend_color(self, r, g, b)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | r |  |  
            | real(kind=wp), | intent(in) |  |  | :: | g |  |  
            | real(kind=wp), | intent(in) |  |  | :: | b |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine backend_line(self, x1, y1, x2, y2)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x1 |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y1 |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x2 |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y2 |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine backend_arrow(self, x, y, dx, dy, size, style)  
Arguments
    
      
        | Type | Intent | Optional | 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) |  |  | :: | dx |  |  
            | real(kind=wp), | intent(in) |  |  | :: | dy |  |  
            | real(kind=wp), | intent(in) |  |  | :: | size |  |  
            | character(len=*), | intent(in) |  |  | :: | style |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine clear_backend_arrows(self)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(inout) |  |  | :: | self |  |  
 
 
           
          
              
    
      
          - 
                    
    private  function backend_associated(self) result(is_associated)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    logical
    
 
           
          
              
    
      
          - 
                    
    private  function get_x_min(self) result(x_min)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    real(kind=wp)
    
 
           
          
              
    
      
          - 
                    
    private  function get_x_max(self) result(x_max)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    real(kind=wp)
    
 
           
          
              
    
      
          - 
                    
    private  function get_y_min(self) result(y_min)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    real(kind=wp)
    
 
           
          
              
    
      
          - 
                    
    private  function get_y_max(self) result(y_max)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(figure_t), | intent(in) |  |  | :: | self |  |  
 
    Return Value
    real(kind=wp)