ProPlot registers several new fonts and includes tools for adding your own fonts. These features are described below.
Matplotlib provides a
font_manager module for working with
system fonts and classifies fonts into five font families:
rc['font.fantasy']. The default font family
is sans-serif, because sans-serif fonts are generally more suitable for
figures than serif fonts, and the default font name belonging to this family
is DejaVu Sans, which comes packaged with
Matplotlib uses DejaVu Sans in part because it includes glyphs for a very wide range of symbols, especially mathematical symbols. However in our opinion, DejaVu Sans is not very aesthetically pleasing. To improve the font selection while keeping things consistent across different workstations, ProPlot comes packaged with the open-source TeX Gyre font series and adds them as the default entries for all of matplotlib’s font famlies:
The Century lookalike
'TeX Gyre Schola'.
The Helvetica lookalike
'TeX Gyre Heros'.
The Courier lookalike
'TeX Gyre Cursor'.
The Chancery lookalike
'TeX Gyre Chorus'.
The Avant Garde lookalike
'TeX Gyre Adventor'.
After importing ProPlot, the default matplotlib font will be TeX Gyre Heros, which emulates the more conventional and aesthetically pleasing font Helvetica. The full font priority lists for each family are displayed in the default proplotrc file.
To compare different fonts, use the
show_fonts command. By
default, this displays the sans serif fonts available on your system and
packaged with ProPlot. The sans serif table on the RTD server is shown
below. The “¤” symbol appears where characters for a particular font are
unavailable (when making plots, “¤” is replaced with the character from
a fallback font). Since most TeX Gyre fonts have limited
character sets, if your plots contain lots of mathematical symbols,
you may want to set
rc['font.family'] to DejaVu Sans or
Fira Math, which is packaged
Try to avoid
.ttf files with
Thin in the file name. Some versions of
matplotlib interpret fonts with the “thin” style as having normal weight (see
this issue page),
causing them to override the correct normal weight versions. While ProPlot
tries to filter out these files, this cannot be done systematically. In the
below example, the “Roboto” font may be overridden by its “thin” version
because the RTD server includes this style.
import proplot as pplt fig, axs = pplt.show_fonts()
Using your own fonts¶
You can register your own fonts by adding files to the
user_folder and calling
register_fonts. This command is called on import. You can
also manually pass file paths to
To change the default font, use the
object or modify your
proplotrc. See the
configuration section for details.
Sometimes the font you would like to use is installed, but the font file
is not stored under the matplotlib-compatible
formats. For example, several macOS fonts are unavailable because they are
.dfont collections. Also, while matplotlib nominally supports
.ttc collections, ProPlot ignores them because figures with
cannot be saved as PDFs.
You can get matplotlib to use
.ttc collections by
expanding them into individual
.ttf files with the
then saving the files in-place or in the
To find font collections, check the paths listed in