Подтвердить что ты не робот

Акцентированные персонажи в Matplotlib

Есть ли способ заставить 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.

4b9b3361

Ответ 1

Префикс строки с u, чтобы сообщить Python, что они являются строками Unicode:

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

Ответ 2

Конечно. Вы можете использовать TeX:

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

Ответ 3

У меня также возникла эта проблема, особенно когда я пытался использовать функцию аннотации. Вот мое сообщение об ошибке:

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

И вот что я использовал для этого:

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

Ответ 4

из matplotlib import rc

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