更改matplotlib的默认字体

2024-09-29 21:50:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将matplotlib的默认字体改为Helvetica Neue。在我的带有EPD/Canopy的Mac电脑上,前一段时间一切正常。

现在尝试在ubuntu上做同样的事情,但它不起作用。

我就是这么做的:

  1. 已安装Helvetica Neue

    $ fc-match 'Helvetica Neue':Light
    HelveticaNeue-Light.otf: "Helvetica Neue" "細體"
    
  2. 将odt/dfont转换为ttf:

    fondu -show HelveticaNeue.dfont
    
  3. 将matplotlibrc更改为

    $ cat ~/.config/matplotlib/matplotlibrc
    ...
    font.family: Helvetica Neue
    

    我也尝试过:

    font.family: sans-serif
    font.sans-serif: Helvetica Neue
    
  4. 我删除了字体缓存

    rm ~/.config/matplotlib/fontList.cache
    

但这些步骤都不适合我。

    $ 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]))

版本是1.3.0

    $ python -c 'import matplotlib; print  matplotlib.__version__'
    1.3.0

我也试着把字体移到~/.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')

但这没什么区别。

/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

不过,我似乎只遇到这个Helvetica/Helvetica Neue字体的问题。 (prop.get_family(),self.defaultFamily[fontext]))


Tags: importconfigmatplotlibas字体managerpltttf
3条回答

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

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

字体缓存显示在我的另一个位置(.cache/matplotlib/fontList.cache)。在我把他们三个放在不同的地方之前

也许可以尝试在主目录中搜索它:

find ~/ -name fontList.cache -exec rm {} \;

Ubuntu 14.04 LTS公司

上传字体

sudo cp NotoSansKR-Regular.otf /usr/share/fonts/

更新字体缓存

sudo fc-cache -fv

你可以检查字体列表

fc-list

重新启动ipython等。 检查字体列表

[f.name for f in matplotlib.font_manager.fontManager.ttflist]

取你的字体名

import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'Noto Sans Korean'

绘制

plt.title(u'한글 제목')
plt.xlabel(u'한글 축 이름')
plt.plot(range(5))

相关问题 更多 >

    热门问题