更改matplotlib的默认字体

goz*_*lli 26 python fonts matplotlib defaults

我正在尝试将matplotlib的默认字体更改为Helvetica Neue.在EPD/Canopy的Mac上,一切都很好.

现在尝试在ubuntu上做同样的事情并且它不起作用.

这就是我做的:

  1. 已安装Helvetica Neue

    $ fc-match 'Helvetica Neue':Light
    HelveticaNeue-Light.otf: "Helvetica Neue" "??"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将odt/dfont转换为ttf:

    fondu -show HelveticaNeue.dfont
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将matplotlibrc更改为

    $ cat ~/.config/matplotlib/matplotlibrc
    ...
    font.family: Helvetica Neue
    
    Run Code Online (Sandbox Code Playgroud)

    我也尝试过:

    font.family: sans-serif
    font.sans-serif: Helvetica Neue
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我删除了字体缓存

    rm ~/.config/matplotlib/fontList.cache
    
    Run Code Online (Sandbox Code Playgroud)

但这些步骤都不适合我.

    $ 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
Run Code Online (Sandbox Code Playgroud)

(prop.get_family(),self.defaultFamily [fontext]))

版本是1.3.0

    $ python -c 'import matplotlib; print  matplotlib.__version__'
    1.3.0
Run Code Online (Sandbox Code Playgroud)

我也尝试过移动字体,~/.config/matplotlib/fonts/ttf但它没有用.


编辑: 建议我尝试为特定文本选择特定字体.

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')
Run Code Online (Sandbox Code Playgroud)

但它没有任何区别.

/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
Run Code Online (Sandbox Code Playgroud)

但是,我似乎只能使用这个Helvetica/Helvetica Neue字体来解决这个问题.(prop.get_family(),self.defaultFamily [fontext]))

Bri*_*ian 13

这不会永久改变你的字体,但值得一试

matplotlib.rc('font', family='sans-serif') 
matplotlib.rc('font', serif='Helvetica Neue') 
matplotlib.rc('text', usetex='false') 
matplotlib.rcParams.update({'font.size': 22})
Run Code Online (Sandbox Code Playgroud)


Kyu*_*Kim 9

Ubuntu 14.04 LTS

上传字体

sudo cp NotoSansKR-Regular.otf /usr/share/fonts/
Run Code Online (Sandbox Code Playgroud)

更新字体缓存

sudo fc-cache -fv
Run Code Online (Sandbox Code Playgroud)

您可以检查字体列表

fc-list
Run Code Online (Sandbox Code Playgroud)

重启ipython等.检查字体列表

[f.name for f in matplotlib.font_manager.fontManager.ttflist]
Run Code Online (Sandbox Code Playgroud)

拿一个你的字体名称

import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'Noto Sans Korean'
Run Code Online (Sandbox Code Playgroud)

plt.title(u'?? ??')
plt.xlabel(u'?? ? ??')
plt.plot(range(5))
Run Code Online (Sandbox Code Playgroud)

  • 你可以尝试这个命令```import matplotlib.font_manager``` (2认同)
  • 有时`matplotlib.font_manager._rebuild()`需要使用新字体 (2认同)