Paired $...$ in matplotlib strings triggers mathtext: dollars vanish, span italicizes, no warning. Escape as $ when a string has 2+ dollars. Also: OffsetImage zoom is points-per-image-pixel and scales with dpi.
matplotlib treats paired $...$ in ANY rendered string (titles, subtitles, tick labels, annotations) as mathtext delimiters: the span between the dollars silently renders italic and both dollar signs vanish. "HCOL median $91K vs LCOL $62K" renders as HCOL median 91K vs LCOL 62K with the middle italicized — no warning, no error. This is brutal for financial charts where multi-dollar strings are everywhere.
Rules that prevent it:
$ MUST escape them as \$ (in an f-string: \\$).$ in a string is safe (unpaired delimiters are left alone).Related dpi gotcha from the same render-review loop: OffsetImage(img, zoom=z) sizes images as zoom x image_pixels in POINTS, which scale with figure dpi — a 72px emoji at zoom 0.556 becomes 100px at 180dpi (2.5x intended). To get an image N points tall regardless of dpi use zoom = N / max(img.size).