在matplotlib中显示外语(在虚拟环境中)

g6baxovj  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(153)

我在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)
1.复制字体目录中的字体('/Users/Library/Fonts')
1.重启Jupyter内核并测试
我又运行了一次matplotlib看看结果是否正确,但还是得到了空盒子。
这是我在木星上运行的代码。

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的正确目录中,Jupyter在我的机器上的virenv上运行。我的问题是这个目录在哪里?我检查了“font_manager.py”文件,但我没有从中得到什么。文件说我的OS字体目录确实是
用户/库/字体
我很感激你的帮助!先谢谢你!

yeotifhr

yeotifhr1#

结果比我想象的要简单,就像@ImportanceOfBeingErnest上面提到的,关键在于:
1.安装字体
1.清除字体缓存
在我的例子中,我找不到有字体缓存的正确目录。我从这个post中得到了帮助。
1.下载你想要的字体。把它放在字体目录下。在我的例子中是,用户/库/字体/...
1.找到字体缓存所在的目录。
在木星,在你的牢房里执行这个命令。

from matplotlib import font_manager
fm = mpl.font_manager
fm.get_cachedir()
>> '/Users/.matplotlib'

1.然后转到该目录并删除该文件
转到shell并执行此命令。

rm fontList.py3k.cache

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

rdlzhqv9

rdlzhqv92#

**2023年3月10日:**Ubuntu 20.04

我想在触发plt.show()时显示韩文/韩文字符。在我的matplotlib预览中出现了矩形框,我试图安装不同的字体来解决这个问题,但这个问题的起源是不同的。

**解决方案:**给定.ttf文件到主文件的直接链接

from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname='/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf').get_name()
rc('font', family=font_name)

相关问题