Source code for threeML.config.plotting_structure

from dataclasses import dataclass, field
from enum import Enum, Flag
from typing import Any, Dict, List, Optional
import numpy as np
import matplotlib.pyplot as plt
from omegaconf import II, MISSING, SI, OmegaConf

# type checking matplotlib colormaps
MPLCmap = Enum("MPLCmap", zip(plt.colormaps(), plt.colormaps()))


[docs]@dataclass class BinnedSpectrumPlot: data_cmap: MPLCmap = MPLCmap.Set1 model_cmap: MPLCmap = MPLCmap.Set1 background_cmap: MPLCmap = MPLCmap.Set1 n_colors: int = 5 step: bool = False show_legend: bool = True show_residuals: bool = True data_color: Optional[str] = None model_color: Optional[str] = None background_color: Optional[str] = None show_background: bool = False data_mpl_kwargs: Optional[Dict[str, Any]] = None model_mpl_kwargs: Optional[Dict[str, Any]] = None background_mpl_kwargs: Optional[Dict[str, Any]] = None
[docs]@dataclass class DataHistPlot: counts_color: str = "#500472" background_color: str = "#79cbb8" warn_channels_color: str = "#C79BFE" bad_channels_color: str = "#FE3131" masked_channels_color: str = "#566573"
[docs]@dataclass class PlotStyle: linestyle: Optional[str] = '-' linewidth: Optional[float] = 1.7
[docs]@dataclass class ContourStyle: alpha: float = 0.4
[docs]@dataclass class CornerStyle: show_titles: bool = True smooth: float = 0.9 title_fmt: str = ".2g" bins: int = 25 quantiles: List[float] = field(default_factory= lambda:[0.16, 0.50, 0.84]) fill_contours: bool = True cmap: MPLCmap = MPLCmap.viridis extremes: str = "white" contourf_kwargs: Dict[str, Any] = field( default_factory=lambda: {"colors": None, "extend": "both"}) levels: List[float] = field(default_factory= lambda:[0.99, 0.865,0.393])
# class LegendLoc(Enum): # best = 'best' # lower_left = 'lower left' # lower_right = 'lower right' # upper_left = 'upper left' # upper_right = 'upper right'
[docs]@dataclass class LegendStyle: loc: str = "best" fancybox: bool = True shadow: bool = True
[docs]@dataclass class PointSourcePlot: fit_cmap: MPLCmap = MPLCmap.Set1 contour_cmap: MPLCmap = MPLCmap.Set1 bayes_cmap: MPLCmap = MPLCmap.Set1 plot_style: PlotStyle = PlotStyle() contour_style: ContourStyle = ContourStyle() show_legend: bool = True legend_style: LegendStyle = LegendStyle() flux_unit: str = "1/(keV s cm2)" emin: float = 10. emax: float = 1e4 num_ene: int = 100 ene_unit: str = "keV"
[docs]@dataclass class ResidualPlot: linewidth: float = 1 marker: str = "." size: float = 3
[docs]@dataclass class GenericPlotting: mplstyle: str = "threeml.mplstyle" residual_plot: ResidualPlot = ResidualPlot()
[docs]@dataclass class ModelPlotting: point_source_plot: PointSourcePlot = PointSourcePlot()