fortplot_pdf_axes Module

PDF axes, grid, tick drawing, and plot frame operations

Thin coordinator module that delegates to specialized sub-modules: - fortplot_pdf_axes_tick_data: tick position/label computation - fortplot_pdf_axes_drawing: frame, tick marks, minor ticks - fortplot_pdf_axes_text: title/label text rendering with mathtext



Subroutines

public subroutine setup_axes_data_ranges(ctx, x_min_orig, x_max_orig, y_min_orig, y_max_orig, x_min_adj, x_max_adj, y_min_adj, y_max_adj, xscale, yscale)

Set up data ranges for axes with optional log scaling

Arguments

Type IntentOptional Attributes Name
type(pdf_context_core), intent(inout) :: ctx
real(kind=wp), intent(in) :: x_min_orig
real(kind=wp), intent(in) :: x_max_orig
real(kind=wp), intent(in) :: y_min_orig
real(kind=wp), intent(in) :: y_max_orig
real(kind=wp), intent(out) :: x_min_adj
real(kind=wp), intent(out) :: x_max_adj
real(kind=wp), intent(out) :: y_min_adj
real(kind=wp), intent(out) :: y_max_adj
character(len=*), intent(in), optional :: xscale
character(len=*), intent(in), optional :: yscale

public subroutine generate_tick_data(ctx, data_x_min, data_x_max, data_y_min, data_y_max, x_positions, y_positions, x_labels, y_labels, num_x_ticks, num_y_ticks, xscale, yscale, x_date_format, y_date_format, plot_area_left, plot_area_bottom, plot_area_width, plot_area_height, symlog_threshold, custom_xticks, custom_xtick_labels, custom_yticks, custom_ytick_labels)

Generate tick positions and labels for axes

Arguments

Type IntentOptional Attributes Name
type(pdf_context_core), intent(in) :: ctx
real(kind=wp), intent(in) :: data_x_min
real(kind=wp), intent(in) :: data_x_max
real(kind=wp), intent(in) :: data_y_min
real(kind=wp), intent(in) :: data_y_max
real(kind=wp), intent(out), allocatable :: x_positions(:)
real(kind=wp), intent(out), allocatable :: y_positions(:)
character(len=50), intent(out), allocatable :: x_labels(:)
character(len=50), intent(out), allocatable :: y_labels(:)
integer, intent(out) :: num_x_ticks
integer, intent(out) :: num_y_ticks
character(len=*), intent(in), optional :: xscale
character(len=*), intent(in), optional :: yscale
character(len=*), intent(in), optional :: x_date_format
character(len=*), intent(in), optional :: y_date_format
real(kind=wp), intent(in) :: plot_area_left
real(kind=wp), intent(in) :: plot_area_bottom
real(kind=wp), intent(in) :: plot_area_width
real(kind=wp), intent(in) :: plot_area_height
real(kind=wp), intent(in), optional :: symlog_threshold
real(kind=wp), intent(in), optional :: custom_xticks(:)
character(len=*), intent(in), optional :: custom_xtick_labels(:)
real(kind=wp), intent(in), optional :: custom_yticks(:)
character(len=*), intent(in), optional :: custom_ytick_labels(:)

public subroutine draw_pdf_axes_and_labels(ctx, xscale, yscale, symlog_threshold, data_x_min, data_x_max, data_y_min, data_y_max, title, xlabel, ylabel, x_date_format, y_date_format, plot_area_left, plot_area_bottom, plot_area_width, plot_area_height, custom_xticks, custom_xtick_labels, custom_yticks, custom_ytick_labels)

Draw complete axes system with labels using actual plot area coordinates

Arguments

Type IntentOptional Attributes Name
type(pdf_context_core), intent(inout) :: ctx
character(len=*), intent(in), optional :: xscale
character(len=*), intent(in), optional :: yscale
real(kind=wp), intent(in), optional :: symlog_threshold
real(kind=wp), intent(in) :: data_x_min
real(kind=wp), intent(in) :: data_x_max
real(kind=wp), intent(in) :: data_y_min
real(kind=wp), intent(in) :: data_y_max
character(len=*), intent(in), optional :: title
character(len=*), intent(in), optional :: xlabel
character(len=*), intent(in), optional :: ylabel
character(len=*), intent(in), optional :: x_date_format
character(len=*), intent(in), optional :: y_date_format
real(kind=wp), intent(in) :: plot_area_left
real(kind=wp), intent(in) :: plot_area_bottom
real(kind=wp), intent(in) :: plot_area_width
real(kind=wp), intent(in) :: plot_area_height
real(kind=wp), intent(in), optional :: custom_xticks(:)
character(len=*), intent(in), optional :: custom_xtick_labels(:)
real(kind=wp), intent(in), optional :: custom_yticks(:)
character(len=*), intent(in), optional :: custom_ytick_labels(:)