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 default font has changed from "Bitstream Vera Sans" to "DejaVu Sans".
You can set the fontsize argument, change how Matplotlib treats fonts in general, or even changing the figure size.
Plot x data points using plot() method. To change the font size of the scale in matplotlib, we can use labelsize in the ticks_params()method. To display the figure, use show() method.
This will not change your font permanently, but it's worth a try.
matplotlib.rc('font', family='sans-serif') matplotlib.rc('font', serif='Helvetica Neue') matplotlib.rc('text', usetex='false') matplotlib.rcParams.update({'font.size': 22})
Ubuntu 14.04 LTS
Upload the fonts
sudo cp NotoSansKR-Regular.otf /usr/share/fonts/
Update the cache of font
sudo fc-cache -fv
You can check the font list
fc-list
Restart ipython, etc. Check the font list
[f.name for f in matplotlib.font_manager.fontManager.ttflist]
Take a your font name
import matplotlib.pyplot as plt from matplotlib import rcParams rcParams['font.family'] = 'Noto Sans Korean'
Draw
plt.title(u'한글 제목') plt.xlabel(u'한글 축 이름') plt.plot(range(5))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With