matplotlibfontsgoogle-colaboratory

Custom fonts in Google Colaboratory matplotlib charts


Using custom fonts in matplotlib locally involves storing the .ttfs in the matplotlib/mpl-data/fonts/ttf/ folder, then calling mpl.font_manager._rebuild(), then setting mpl.rcParams['font.sans-serif'].

Is there any way to do this in Google Colaboratory, where it doesn't seem that this ttf folder is accessible?

For example, I'd like to use the Roboto font. After installing, this would be invoked using mpl.rcParams['font.sans-serif'] = 'Roboto'.


Solution

  • The ttf folder is here:

    /usr/local/lib/python3.6/dist-packages/matplotlib/mpl-data/fonts/ttf
    

    So you want to download the ttf there, e.g.:

    !wget https://github.com/Phonbopit/sarabun-webfont/raw/master/fonts/thsarabunnew-webfont.ttf -P /usr/local/lib/python3.6/dist-packages/matplotlib/mpl-data/fonts/ttf
    
    matplotlib.font_manager._rebuild()
    matplotlib.rc('font', family='TH Sarabun New')
    

    update 2019-12

    _rebuild() no longer works. Here's another method which still works.

    import matplotlib
    import matplotlib.font_manager as fm
    
    !wget https://github.com/Phonbopit/sarabun-webfont/raw/master/fonts/thsarabunnew-webfont.ttf
    fm.fontManager.ttflist += fm.createFontList(['thsarabunnew-webfont.ttf'])
    matplotlib.rc('font', family='TH Sarabun New')