fortplot_margins Module

Common margin and axis functionality for plotting backends

This module provides shared functionality for calculating margins, plot areas, and drawing axes across different backends (PNG, PDF, etc.) Follows DRY principle by centralizing common plotting layout logic.



Subroutines

public subroutine get_axis_tick_positions(plot_area, num_ticks_x, num_ticks_y, x_positions, y_positions, actual_num_x, actual_num_y)

Generate tick mark positions for basic axes

Arguments

Type IntentOptional Attributes Name
type(plot_area_t), intent(in) :: plot_area
integer, intent(in) :: num_ticks_x
integer, intent(in) :: num_ticks_y
real(kind=wp), intent(out) :: x_positions(:)
real(kind=wp), intent(out) :: y_positions(:)
integer, intent(out) :: actual_num_x
integer, intent(out) :: actual_num_y

public subroutine draw_basic_axes_frame(plot_area, draw_line_proc)

Draw basic rectangular axes frame Uses a procedure pointer to be backend-agnostic

Arguments

Type IntentOptional Attributes Name
type(plot_area_t), intent(in) :: plot_area
private subroutine draw_line_proc(x1, y1, x2, y2)
Arguments
Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: x1
real(kind=wp), intent(in) :: y1
real(kind=wp), intent(in) :: x2
real(kind=wp), intent(in) :: y2