【问题标题】:Use matplotlib.pyplot.rcparams with a custom font which is not installed将 matplotlib.pyplot.rcparams 与未安装的自定义字体一起使用
【发布时间】:2017-12-11 17:00:41
【问题描述】:

我正在尝试将系统中未安装的自定义 ttf 字体用于 matplotlib 图中的文本元素。

with plt.style.context('mplparams.mplstyle'):
    plt.plot(np.sin(np.linspace(0, 3 * np.pi)), '-o')

我知道我可以使用 FontManager 更改文本属性,但我正在寻找仅涉及外部配置文件的解决方案。

目前我只知道我可以将font.sans-serif 更改为字体名称,而不是字体路径。

这可能吗?

【问题讨论】:

    标签: python matplotlib fonts


    【解决方案1】:

    字体管理器必须知道要使用的字体,否则您无法将其放入情节中。为了通过 rcParams 指定字体,必须在 matplotlib 查找它的文件夹中找到该字体。如果您不想安装任何东西,您可以将 .ttf 文件复制到 matplotlib 字体文件夹。就我而言,这是

    python\Lib\site-packages\matplotlib\mpl-data\fonts
    

    然后你需要清除font.chache。通过print(matplotlib.get_cachedir()) 找出它的路径并删除 fontList 文件。 (如果您愿意,也可以先进行备份)。

    然后运行指定了 rcParam 的脚本

    font.sans-serif : <name of font>
    

    或使用

    plt.rcParams['font.sans-serif'] = "<name of font>"
    

    另见this question

    【讨论】:

    • 所以我想在rcParams中直接使用ttf文件的路径而不将其复制到系统字体或mpl字体目录中是不可能的?
    • 绝对不能使用rcParams中的路径。仍然可能以某种方式(但我不知道如何)是在将字体从默认字体搜索路径之外的路径加载到 Fontmanager 或操纵搜索路径之后,在 rcParams 中指定字体名称包括一些自定义路径。
    • 我明白了.. 好吧,既然这是下一个最好的事情,我会接受这个答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 2012-06-10
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多