Акцентированные персонажи в Matplotlib - PullRequest
20 голосов
/ 09 марта 2010

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

Ответы [ 4 ]

15 голосов
/ 09 марта 2010

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

ax.set_yticklabels([u'é', u'ã', u'â'])
8 голосов
/ 09 марта 2010

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

from matplotlib import rcParams
rcParams['text.usetex'] = True
ax = ... # Axes object
ax.set_yticklabels(['$\'{e}$', '$\tilde{a}$', '$\hat{a}$'])
5 голосов
/ 18 января 2013

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

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

И вот что я использовал для решения этой проблемы:

"accented string i.e. sāo paulo".decode('utf-8')
1 голос
/ 12 апреля 2013

из импорта матплотлиб rc

rcParams['text.latex.unicode']=True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...