我想在Matplotlib中更改图例文本的字体类型。我知道我可以做这样的事情:
plt.legend(prop={'family': 'Arial'})
Run Code Online (Sandbox Code Playgroud)
但是我想使用中文字体类型,我不知道应该在上面的行中输入什么姓。但是我确实有该中文字体类型的fontproperties对象。但是,我还没有找到一种设置图例的fontproperties的方法。
有两个问题:
通过FontProperties对象(如font下文),以ax.legend经由所述prop参数:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.font_manager as font_manager
fig, ax = plt.subplots()
x = np.linspace(-10, 10, 100)
ax.plot(np.sin(x)/x, label='Mexican hat')
font = font_manager.FontProperties(family='Comic Sans MS',
weight='bold',
style='normal', size=16)
ax.legend(prop=font)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在Ubuntu上,您可以通过运行以下命令使新字体对系统可用
fc-cache -f -v /path/to/fonts/directory
Run Code Online (Sandbox Code Playgroud)
我不确定在其他操作系统上是如何完成的,或者fc-cache在其他类型的Unix上通用性如何。
一旦你安装你的字体(S),这样你的OS知道他们,你可能会导致matplotlib以再生它的FontList通过删除文件~/.cache/fontconfig和~/.cache/matplotlib。
该~/.cache/matplotlib/fontList.json文件为您提供了matplotlib知道的所有字体的可读列表。在这里,您将找到如下所示的条目:
{
"weight": "bold",
"stretch": "normal",
"fname": "/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS_Bold.ttf",
"_class": "FontEntry",
"name": "Comic Sans MS",
"style": "normal",
"size": "scalable",
"variant": "normal"
},
Run Code Online (Sandbox Code Playgroud)
请注意,fname是基础ttf文件的路径,并且还有一个name属性。您可以通过ttf文件的路径指定FontProperties对象:
font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS_Bold.ttf")
Run Code Online (Sandbox Code Playgroud)
或按名称:
font = font_manager.FontProperties(family='Comic Sans MS',
weight='bold',
style='normal', size=16)
Run Code Online (Sandbox Code Playgroud)
如果您不希望在系统范围内安装字体,则可以FontProperties按fname路径指定对象,从而避免了的fc-cache麻烦~/.cache。
| 归档时间: |
|
| 查看次数: |
6392 次 |
| 最近记录: |