Source code for gleplot.markers

"""Marker utilities for gleplot."""

# Matplotlib to GLE marker mapping
MATPLOTLIB_TO_GLE_MARKERS = {
    'o': 'FCIRCLE',      # Circle
    's': 'FSQUARE',      # Square
    '^': 'FTRIANGLE',    # Triangle up
    'v': 'FTRIANGLED',   # Triangle down
    '<': 'TRIANGLE',     # Triangle left (outline)
    '>': 'TRIANGLE',     # Triangle right (outline)
    'D': 'FDIAMOND',     # Diamond
    '*': 'FSTARR',       # Star
    'p': 'STARR',        # Pentagon
    'H': 'HEART',        # Heart
    'h': 'DIAMOND',      # Hexagon
    '+': 'PLUS',         # Plus sign
    'P': 'PLUS',         # Plus alternate
    'x': 'PCROSS',       # X cross
    'X': 'PCROSS',       # X cross alternate
    '.': 'DOT',          # Point
    ',': 'DOT',          # Pixel
    '|': 'PLUS',         # Vertical line
    '_': 'PLUS',         # Horizontal line
}

# GLE marker types
GLE_MARKER_TYPES = {
    # Filled markers
    'FCIRCLE': 'Filled circle',
    'FSQUARE': 'Filled square',
    'FTRIANGLE': 'Filled triangle',
    'FTRIANGLED': 'Filled triangle down',
    'FDIAMOND': 'Filled diamond',
    'FSTARR': 'Filled star',
    
    # Outline markers
    'CIRCLE': 'Circle outline',
    'SQUARE': 'Square outline',
    'TRIANGLE': 'Triangle outline',
    'TRIANGLED': 'Triangle outline down',
    'DIAMOND': 'Diamond outline',
    'STARR': 'Star outline',
    
    # Symbol markers
    'DOT': 'Small dot',
    'PLUS': 'Plus sign',
    'PCROSS': 'X cross',
    'CROSS': 'Cross',
    'CLUB': 'Club symbol',
    'HEART': 'Heart symbol',
    'SPADE': 'Spade symbol',
    'STAR': 'Star symbol',
    'DAG': 'Dagger symbol',
    'DDAG': 'Double dagger',
    'SNAKE': 'Snake symbol',
}


[docs] def get_gle_marker(matplotlib_marker: str, default: str = 'FCIRCLE') -> str: """ Convert matplotlib marker to GLE marker name. Parameters ---------- matplotlib_marker : str Matplotlib marker symbol default : str Default GLE marker if not found Returns ------- str GLE marker name """ if not matplotlib_marker or matplotlib_marker == 'None': return None marker_lower = str(matplotlib_marker).lower().strip() return MATPLOTLIB_TO_GLE_MARKERS.get(marker_lower, default)
def is_valid_gle_marker(marker: str) -> bool: """Check if marker is a valid GLE marker name.""" return marker in GLE_MARKER_TYPES def get_marker_size_scale(marker: str) -> float: """Get size scaling factor for marker (GLE msize vs matplotlib markersize).""" # GLE marker sizes typically need scaling down from matplotlib # Default scale is 0.1-0.15 for good visibility return 0.15