I'm trying to change matplotlib's default font to Helvetica Neue. On my Mac with EPD/Canopy everything worked fine some time ago.
Trying to do the same on ubuntu now and it's not working.
This is what I did:
Installed Helvetica Neue
$ fc-match 'Helvetica Neue':Light HelveticaNeue-Light.otf: "Helvetica Neue" "細體"
Converted the odt/dfont into ttf:
fondu -show HelveticaNeue.dfont
changed matplotlibrc to
$ cat ~/.config/matplotlib/matplotlibrc ... font.family: Helvetica Neue
I also tried with:
font.family: sans-serif font.sans-serif: Helvetica Neue
I removed the font cache
rm ~/.config/matplotlib/fontList.cache
But none of these steps are working for me.
$ python -c 'from matplotlib import pyplot as plt; plt.plot(1); plt.savefig("/tmp/test.png")'
/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.0-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:1236:
UserWarning: findfont: Font family ['Helvetica Neue'] not found. Falling back to Bitstream Vera Sans
(prop.get_family(), self.defaultFamily[fontext]))
Version is 1.3.0
$ python -c 'import matplotlib; print matplotlib.__version__'
1.3.0
I also tried moving the fonts to ~/.config/matplotlib/fonts/ttf
but it didn't work.
EDIT: As suggested I tried selecting a specific font for a specific text.
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
path = '/home/<myusername>/.fonts/HelveticaNeue.ttf'
prop = font_manager.FontProperties(fname=path)
prop.set_weight = 'light'
mpl.rcParams['font.family'] = prop.get_name()
mpl.rcParams['font.weight'] = 'light'
fig, ax = plt.subplots()
ax.set_title('Text in a cool font', fontproperties=prop, size=40)
plt.savefig('/tmp/test2.png')
But it makes no difference.
/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.0-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:1236:
UserWarning: findfont: Font family ['Helvetica Neue'] not found. Falling back to Bitstream Vera Sans
However I seem to experience this problem only with this Helvetica/Helvetica Neue font. (prop.get_family(), self.defaultFamily[fontext]))
The font cache shows up in a different place for me (.cache/matplotlib/fontList.cache). And before I actually had three of them in different places somehow :/
maybe try searching for it in your home directory:
This won't change you font permanently, but it's worth a try
Kim already introduced dynamic solution works perfectly, and here's two other ways doing the same in static.
First, you may put a line to rc file for matplotlib . Refer to this page for more information about locating the file and detailed settings.
Second, if you are working with ipython, you can put some commands for font setting to a configuration file for the interactive shell. Find the file named ipython_config.py which usually located under ~/.ipython/somewhere. Then add two more lines to the list, c.InteractiveShellApp.exec_lines .
Former always works whatever environment you run your shell script on as it loads the font when your script imports matplotlib .
Ubuntu 14.04 LTS
Upload the fonts
Update the cache of font
You can check the font list
Restart ipython, etc. Check the font list
Take a your font name
Draw