# ML4T Matplotlib Configuration
# ==============================
# Automatically loaded when running from repo root (Docker or local).
# Matplotlib checks cwd for matplotlibrc before user/system configs.
#
# See utils/style.py for color palette definitions (COLORS dict) and
# the SERIES_SLOTS / gray_context / save_dual helpers used by notebooks.

# Figure
# Canonical Packt embed width: 5.833"  (derived from the Chapter01
# template demo — Packt scales all figures to this width in the typeset
# manuscript). Rendering matplotlib natively at this width means in-figure
# text at S pt prints at S pt on the page — no scale-conversion needed.
# Heights for multi-panel layouts: see utils.style.FIGSIZE.
figure.dpi: 100
figure.figsize: 5.833, 3.4
figure.facecolor: FAFAF9
figure.constrained_layout.use: True
savefig.dpi: 300
savefig.bbox: tight
savefig.pad_inches: 0.05

# Axes — clean, no in-figure title, subplot titles left-aligned and small
axes.facecolor: FAFAF9
axes.edgecolor: 334155
axes.labelcolor: 334155
axes.titlecolor: 334155
axes.linewidth: 0.75
axes.spines.top: False
axes.spines.right: False
axes.titlesize: 10
axes.titleweight: normal
axes.titlelocation: left
axes.titlepad: 6
axes.labelsize: 9
axes.labelpad: 4
axes.grid: False
axes.axisbelow: True
axes.prop_cycle: cycler('color', ['0a1628', 'D4A84B', 'C87533', '1a2d4a', '10b981', 'ef4444'])

# Grid (disabled by default; enable per-axes via ax.grid(axis='y') when needed)
grid.color: e8e8e6
grid.alpha: 0.6
grid.linewidth: 0.5
grid.linestyle: --

# Ticks
xtick.color: 334155
ytick.color: 334155
xtick.labelsize: 8
ytick.labelsize: 8
xtick.major.pad: 3
ytick.major.pad: 3
xtick.major.size: 3
ytick.major.size: 3
xtick.major.width: 0.6
ytick.major.width: 0.6
xtick.direction: out
ytick.direction: out

# Lines (fine, not fat — Stefan: "lines should be not fat, but fine")
lines.linewidth: 1.4
lines.markersize: 4
lines.markeredgewidth: 0

# Legend
legend.frameon: False
legend.fontsize: 8
legend.loc: best
legend.handlelength: 2.0

# Font — Source Sans 3 matches Packt F0-Figure block font when installed;
# DejaVu Sans is matplotlib's bundled fallback (always available).
font.family: sans-serif
font.sans-serif: Source Sans 3, DejaVu Sans, Helvetica, Arial, sans-serif
font.size: 9
text.color: 334155

# Patches (bars, histograms)
patch.linewidth: 0.5
patch.edgecolor: e8e8e6

# Scatter
scatter.marker: o
scatter.edgecolors: face

# Histogram
hist.bins: 50

# Boxplot
boxplot.boxprops.color: 0a1628
boxplot.whiskerprops.color: 0a1628
boxplot.capprops.color: 0a1628
boxplot.medianprops.color: D4A84B
boxplot.flierprops.markerfacecolor: 0a1628
boxplot.flierprops.markeredgecolor: 0a1628

# Diverging / sequential colormaps used book-wide (set explicitly in code).
# Diverging:  RdBu_r   — for signed loadings, correlations
# Sequential: cividis  — for magnitude / probability (colorblind-safe)
image.cmap: cividis
