相关疑难解决方法(0)

更改matplotlib的默认字体

我正在尝试将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 …
Run Code Online (Sandbox Code Playgroud)

python fonts matplotlib defaults

26
推荐指数
2
解决办法
4万
查看次数

为什么matplotlib不使用我提供的.ttf字体?

我正在尝试在matplotlib中使用TTF字体; .ttf文件已下载并在我的机器上本地存在.我已按照本网站上的其他说明选择使用的字体font_manager; 但是,我生成的任何试图使用字体属性的文本仍然以默认的matplotlib字体显示.

我知道Python确实成功找到了字体文件,因为prop.get_name()类似的命令确实显示了我想要的字体的属性 - 但这不是我的图中出现的.有什么建议?

举个例子:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

fig, ax = plt.subplots()

prop = fm.FontProperties(fname='/Users/smith/fonts/coolfont.ttf')
ax.set_title('Text in a cool font', fontproperties=prop, size=40)

fig.show()
Run Code Online (Sandbox Code Playgroud)

python fonts matplotlib

7
推荐指数
1
解决办法
3390
查看次数

如何配置 matplotlib 以便能够从本地路径读取字体?

.ttf如果在普通系统文件夹中找不到字体,我希望能够将文件放在本地文件夹中,并将 Matplotlib 配置为在该文件夹中查找字体。上一个答案显示了如何指向任何目录中的特定字体。这是答案中的代码:

import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager

path = '/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS.ttf'
prop = font_manager.FontProperties(fname=path)
mpl.rcParams['font.family'] = prop.get_name()
fig, ax = plt.subplots()
ax.set_title('Text in a cool font', size=40)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,每次我想要 Helvetica(或在这种情况下 Comic Sans)在我的情节中时,我都必须这样做。我相信另一种解决方案是将 ttf 文件复制到类似~/anaconda/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf. . 我觉得应该有一些方法可以在我的~/.matplotlib/matplotlibrc文件中配置 matplotlib,这样如果我使用 Helvetica,我就不必每次都提供路径。如何将.ttf文件放置在自定义目录中(或至少一个对 python 或 matplotlib 更新是安全的)并且每次绘图时都不必重新键入文件路径?

奖励积分,如果解决方案允许我到一个相对路径使用返回的目录import matplotlib; matplotlib.get_configdir(),因为我的一些机器,是~/.config/matplotlib和一些人来说~/.matplotlib

python fonts matplotlib

4
推荐指数
1
解决办法
4614
查看次数

标签 统计

fonts ×3

matplotlib ×3

python ×3

defaults ×1