# Matplotlib Visualization Configuration Use `vipr.visualization` in YAML to control matplotlib output globally and per diagram. ## Scope The configuration is used for: - Tier-2 images (`dc.image(...).set_from_matplotlib(...)`) - Tier-1 auto-generated diagram images (`*_plot.svg/png`) ## YAML Schema ```yaml vipr: visualization: plot_style: # global defaults export: format: svg # svg | png dpi: 180 # 72..600 figure: figsize: [11.0, 6.5] # inches rc: font.size: 11 axes.labelsize: 11 axes.titlesize: 13 xtick.labelsize: 10 ytick.labelsize: 10 diagrams: # per-diagram overrides reflectivity_matplotlib: export: format: png dpi: 300 figure: figsize: [14.0, 8.0] ``` ## Merge Rules For a given `diagram_id`, VIPR resolves style in this order: 1. Built-in defaults 2. `vipr.visualization.plot_style` 3. `vipr.visualization.diagrams.` Only explicitly set keys in `diagrams.` override global values. ## `diagram_id` vs Filename Configuration uses the internal `diagram_id`, not the generated filename. Example: - `diagram_id`: `mode_2_sld_profile` - generated file: `mode_2_sld_profile_plot.svg` Set config like: ```yaml vipr: visualization: diagrams: mode_2_sld_profile: export: format: svg dpi: 300 figure: figsize: [14.0, 8.0] ``` ## Typical IDs (Reflectometry) - `reflectivity_matplotlib` - `reflectivity_primary` - `sld_profile` - `residuals_vs_q` - `mode_1_sld_profile`, `mode_2_sld_profile`, ... - `marginals_mode_1`, `marginals_mode_2`, ... ## Notes - `dpi` has limited effect for pure SVG vectors. - In batch runs, filenames may be prefixed (`item0_...`), but `diagram_id` stays unchanged.