Matplotlib 中的重音字符

发布于 2024-08-24 13:43:41 字数 558 浏览 4 评论 0原文

有没有办法让 Matplotlib 渲染重音字符(é、ã、â 等)?

例如,我尝试在 set_yticklabels() 上使用重音字符,而 Matplotlib 则渲染正方形,而当我使用 unicode() 时,它会渲染错误的字符。

有办法让这项工作发挥作用吗?

事实证明,您可以使用 u"éã",但首先您必须设置文件编码:

# Using the magic encoding
# -*- coding: utf-8 -*-

在 Matplotlib 正确渲染之后,

u"é"

我还了解到您可以

import matplotlib.font_manager as fm
fp1=fm.FontProperties(fname="/path/to/somefont.ttf")
ax.title("é",fontproperties=fp1)

在需要渲染 Matplotlib 没有的字符时使用。

Is there a way to get Matplotlib to render accented chars (é,ã,â,etc)?

For instance, I'm trying to use accented characters on set_yticklabels() and Matplotlib renders squares instead, and when I use unicode() it renders the wrong characters.

Is there a way to make this work?

It turns out you can use u"éã", but first you have to set the file encoding:

# Using the magic encoding
# -*- coding: utf-8 -*-

After that Matplotlib correctly renders

u"é"

I also learned that you can use

import matplotlib.font_manager as fm
fp1=fm.FontProperties(fname="/path/to/somefont.ttf")
ax.title("é",fontproperties=fp1)

in case you need to render a characters that Matplotlib does not have.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我早已燃尽 2024-08-31 13:43:41

在字符串前面加上 u 前缀,告诉 Python 它们是 Unicode 字符串:

ax.set_yticklabels([u'é', u'ã', u'â'])

Prefix the strings with u to tell Python that they are Unicode strings:

ax.set_yticklabels([u'é', u'ã', u'â'])
意中人 2024-08-31 13:43:41

当然。您可以使用 TeX:

from matplotlib import rcParams
rcParams['text.usetex'] = True
ax = ... # Axes object
ax.set_yticklabels(['$\'{e}
, '$\tilde{a}
, '$\hat{a}
])

Sure. You can use TeX:

from matplotlib import rcParams
rcParams['text.usetex'] = True
ax = ... # Axes object
ax.set_yticklabels(['$\'{e}
, '$\tilde{a}
, '$\hat{a}
])
友欢 2024-08-31 13:43:41

当我尝试使用注释功能时,我也遇到了这个问题。这是我的错误消息:

ValueError: matplotlib display text must have all code points < 128 or use Unicode strings

这是我用来解决此问题的方法:

"accented string i.e. sāo paulo".decode('utf-8')

I also had this problem specifically when I was trying to use the annotate function. Here was my error message:

ValueError: matplotlib display text must have all code points < 128 or use Unicode strings

And here's what I used to resolve this:

"accented string i.e. sāo paulo".decode('utf-8')
友欢 2024-08-31 13:43:41

从 matplotlib 导入 rc

rcParams['text.latex.unicode']=True

from matplotlib import rc

rcParams['text.latex.unicode']=True
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文