我希望能够将.ttf
文件放在本地文件夹中,并将Matplotlib配置为在正常系统文件夹中找不到字体时在该文件夹中查找字体。This previous answer演示了如何指向任意目录中的特定字体。答案中的代码如下:
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()
这样做的问题是,每次需要Helvetica时都必须这样做我相信另一个解决方案是将ttf文件复制到类似~/anaconda/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf
的文件中,但我不希望触及这些东西,而是将文件放置在本地,这样当我更新matplotlib时,它们就不会消失。所以在不同的机器上同步我的配置更容易,我觉得应该有一些方法来配置~/.matplotlib/matplotlibrc
文件中的matplotlib,这样如果我使用Helvetica,我就不必每次都提供路径。我怎样才能把.ttf
文件放到一个自定义目录(或者至少是一个对python或matplotlib更新安全的目录)中,而不必在每次绘图时重新输入文件路径?
如果解决方案允许我使用import matplotlib; matplotlib.get_configdir()
返回的目录的相对路径,那就更好了,因为对于我的一些机器来说,它是~/.config/matplotlib
,而对于另一些机器来说,它是~/.matplotlib
。
3条答案
按热度按时间fquxozlt1#
如果有人关心的话,我决定把我的
.ttf
文件复制到类似~/anaconda/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf
的目录下是最方便的。在我更新matplotlib之后,这些文件仍然在那里,所以至少在我不得不重复这个过程之前可能需要一段时间。这样我就不需要每次绘图时都指向目录或调用脚本。如果你这样做和/或更改matplotlibrc
文件中的默认字体列表(我都做了)你可能需要删除缓存文件,比如~/.matplotlib/fontList.cache
或~/.cache/matplotlib/fontList.cache '。下次你绘图的时候,Matplotlib会重新生成这个文件。vulvrdjw2#
1.安装字体。在Windows中,右键单击并选择“安装”。在Linux中,将TTF文件放入
~/.local/share/fonts/
中并运行fc-cache
。您可以检查它是否工作,并使用fc-list
获得字体名称。1.在您的虚拟环境中运行一次:
matplotlib.font_manager._rebuild()
1.如果使用Jupyter,请重新启动内核。
1.将以下内容添加到代码中:
1.对于某些字体,matplotlib没有得到正确的权重;您可能希望在
rcParams
中显式指定它们:szqfcxe23#
为了补充@Ben的答案,我写了一个脚本,它可以自动为任何python发行版执行此操作,将
.ttf
文件放在某个文件夹中,然后运行此脚本将它们移动到matplotlib fonts文件夹。