2012-06-09 18 views

Respuesta

70

Este problema puede llegar a tener un par de diferentes causas: (antes de que se produzca algún trazado)

La fuente predeterminada no incluye estos glifos

Es posible cambiar la fuente predeterminada utilizando la siguiente

matplotlib.rc('font', family='Arial') 

En algunas versiones de matplotlib que tendrá la familia te conjunto:

matplotlib.rc('font', **{'sans-serif' : 'Arial', 
          'family' : 'sans-serif'}) 

(Tenga en cuenta que debido a sans-serif contiene un guión dentro de la sintaxis **{}, en realidad es necesario.)

El primer comando cambia la familia sans-serif fuente a contener sólo un tipo de letra (en mi caso fue Arial), la segundo establece la familia de fuentes predeterminada a sans-serif.

Se incluyen otras opciones in the documentation.

Ha creado incorrectamente objetos de cadena/passsed en Matplotlib

Incluso si la fuente contiene glifos adecuados, si se olvidó de usar u para crear Unicode constantes, Matplotlib tendrá este comportamiento:

plt.xlabel("Średnia odległość między stacjami wsparcia a modelowaną [km]") 

Así que hay que añadir u:

plt.xlabel(u"Średnia odległość między stacjami wsparcia a modelowaną [km]") 

Otra causa es que se olvidó de poner un comentario magia UTF-8 en la parte superior del archivo (he leído que este might be the source of the problem):

# -*- coding: utf-8 -*- 
+14

De acuerdo con los documentos [] (http://matplotlib.org/api/artist_api .html # matplotlib.text.Text.set_family), puede pasar directamente un nombre de fuente en lugar de una familia. Esto funciona para mí: 'matplotlib.rc ('font', family = 'DejaVu Sans')' – Lekensteyn

+2

¡Definitivamente esta es la mejor sintaxis! Dejaré el antiguo en caso de que fuera realmente necesario para algún tipo de versión matplotlib antigua. –

Cuestiones relacionadas