【问题标题】:Display foreign language in matplotlib (in virtual env)在 matplotlib 中显示外语(在虚拟环境中)
【发布时间】:2018-06-30 15:49:01
【问题描述】:

我在 Jupyter 中使用 matplotlib,我的数据包括韩语字符。 Matplotlib 尚不支持韩文字符,因此建议我手动在 matplotlib 上设置字符。在不设置字体的情况下,我的示例图会替换方形空框。

使用韩文字符的示例情节。

objects = ('사과', '배', '귤', '오렌지', '바나나', '수박')
y_pos = np.arange(len(objects))
performance = [10,8,6,4,2,1]

plt.bar(y_pos, performance, align='center', alpha=0.5)
plt.xticks(y_pos, objects)
plt.ylabel('Usage')
plt.title('Programming language usage')

plt.show()

根据互联网上的几个例子,这就是我所做的。

  1. 下载韩文字体 (.ttf)
  2. 复制字体到我的字体目录('/Users/Library/Fonts')
  3. 重启 Jupyter 内核并测试

然后我再次运行我的 matplotlib 以查看它是否正确,但我仍然得到空框。

这是我在 Jupyter 中运行的代码。

from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname = '/Users/Library/Fonts/custom/NanumBarunGothic.ttf').get_name()    
rc('font', family = font_name)

这是错误信息。

/Users/anaconda/envs/my_vir_env/lib/python3.4/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['NanumBarunGothic'] not found. Falling back to DejaVu Sans
  (prop.get_family(), self.defaultFamily[fontext]))

所以这就是我认为我做错了。我没有将字体文件放在我的 Jupyter 的正确目录中,它在我机器上的 virenv 上运行。我的问题是这个目录在哪里?我检查了“font_manager.py”文件,但我无法从中得到太多。该文件说我的操作系统字体目录确实是

用户/库/字体

感谢您的帮助! 提前谢谢!

【问题讨论】:

  • 有很多关于向 matplotlib 添加新字体的问题。总是先将字体复制到字体目录,然后再删除字体缓存。
  • @ImportanceOfBeingErnest 我擦除了错误的缓存。使用这个 fm.get_cachedir() 命令非常感谢您!

标签: matplotlib fonts jupyter


【解决方案1】:

结果比我想象的要简单。正如@ImportanceOfBeingErnest 上面提到的,关键是:

  1. 安装字体
  2. 清除字体缓存

在我的情况下,我无法找到具有字体缓存的正确目录。我从 post 那里得到了帮助。

  1. 下载你想要的字体。将它放在字体目录中。就我而言,用户/图书馆/字体/...
  2. 找到字体缓存所在的目录。

在 Jupyter 中,在您的单元格中执行此操作。

from matplotlib import font_manager
fm = mpl.font_manager
fm.get_cachedir()
>> '/Users/.matplotlib'
  1. 然后到那个目录删除文件

转到 shell 并执行此命令。

rm fontList.py3k.cache

现在当我执行 matplotlib 时,会显示正确的字体。

【讨论】:

    猜你喜欢
    • 2021-06-23
    • 2023-01-28
    • 2019-09-24
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    相关资源
    最近更新 更多