Acentuados personajes en matplotlib

¿Hay alguna manera de hacer que Matplotlib genere caracteres acentuados (é, ã, â, etc.)?

Por ejemplo, estoy tratando de usar caracteres acentuados en set_yticklabels() y Matplotlib renderiza cuadrados en su lugar, y cuando uso unicode() representa los caracteres incorrectos.

¿Hay alguna manera de hacer que esto funcione?

Resulta que puedes usar u “éã”, pero primero debes configurar la encoding del archivo:

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

Después de eso Matplotlib rinde correctamente

 u"é" 

También aprendí que puedes usar

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

en caso de que necesite renderizar caracteres que Matplotlib no tiene.

Prefije las cadenas con u para decirle a Python que son cadenas Unicode:

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

Por supuesto. Puedes usar TeX:

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

También tuve este problema específicamente cuando intentaba usar la función de anotación. Aquí estaba mi mensaje de error:

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

Y aquí está lo que usé para resolver esto:

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

desde matplotlib import rc

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