2011-03-23 28 views
5

Estoy intentando generar un gráfico utilizando Matplotlib con caracteres no latinos (un "μ") en una etiqueta de eje, así:Matplotlib Unicode etiquetas de los ejes utilizando el renderizador Cairo

matplotlib.pyplot.xlabel(u'Sarcomere Length (μm)') 

I' m usando el renderizador Cairo en Linux y me estoy poniendo una "caja" en lugar de "μ":

Incorrect Axis Label

funciona con caracteres latinos acentuados (como "e"). ¿Algunas ideas?

Respuesta

7

Es un problema de fuente. Cualquiera que sea la fuente que haya establecido como valor predeterminado de matplotlib, no tiene ese carácter en particular. Hay varias formas de solucionar esto, pero va a depender bastante del sistema. (Puede ser tan simple como asegurarse de tener instalado el paquete de fuentes adecuado.)

Puede establecer las fuentes que matplotlib usará en su .matplotlibrc file. Si no encuentra la fuente exacta que está tratando de usar, puede especificar la ruta completa al archivo de fuente .ttf apropiado en el archivo .matplotlibrc. Por lo general, no será necesario que hagas esto.

Sin embargo, hay una manera más simple, en el caso particular que especificó anteriormente.

En general, es mejor utilizar matplotlib's mathtext rendering para cosas como símbolos griegos. P.ej. do matplotlib.pyplot.xlabel(r'Sarcomere Length ($\mu m$)') en su lugar.

+1

Tenía la esperanza de evitar usar Computer Modern solo para las unidades, pero supongo que no es tan importante. – srunni

Cuestiones relacionadas