2012-10-08 45 views
7

Estoy tratando de usar una fuente TTF en matplotlib; el archivo .ttf se descarga y vive localmente en mi máquina. Seguí other instructions on this site para seleccionar la fuente usando font_manager; sin embargo, cualquier texto que genero al tratar de usar las propiedades de fuente todavía aparece en la fuente matplotlib predeterminada.¿Por qué Matplotlib no usa la fuente .ttf que proporciono?

Sé que Python encuentra con éxito el archivo de fuente, ya que prop.get_name() y comandos similares muestran los atributos de la fuente que quiero, pero eso no es lo que aparece en mi figura. ¿Alguna sugerencia?

A modo de ejemplo:

import matplotlib.pyplot as plt 
import matplotlib.font_manager as fm 

fig, ax = plt.subplots() 

prop = fm.FontProperties(fname='/Users/smith/fonts/coolfont.ttf') 
ax.set_title('Text in a cool font', fontproperties=prop, size=40) 

fig.show() 
+1

intente borrar su caché de fuente en el directorio mpl (por ejemplo, ~/.matplotlib) –

+0

Eliminé el archivo de caché de fuente en el directorio mpl. Ejecutar el código nuevamente no cambió los resultados. Notaré que no es solo el uso de una fuente * .ttf específica, incluso para fuentes en mi directorio mpl-data/fonts /, al configurar un nombre de familia diferente en 'Font Manager' nunca cambia lo que aparece en la ventana de trazado. – kwill

+0

hmmm. Solo otra cosa en la que puedo pensar es cambiar tu cuarta línea por: 'prop = fm.FontProperties (fname = 'coolfont')' –

Respuesta

4

su debido al backend que está utilizando.

Cuando traté de hacer algo similar con mi backend predeterminado que es MacOS y con el backend cairo, no funcionó.

Sin embargo, cuando cambié a agg y TKagg y ejecutaba su ejemplo, la fuente personalizada estaba allí.

Aquí se modifica el código para que se ejecute en mi máquina

#!/usr/bin/env python 
import matplotlib 
matplotlib.use("agg") 
import matplotlib.pyplot as plt 
import matplotlib.font_manager as fm 

fig, ax = plt.subplots() 
prop = fm.FontProperties(fname='Outwrite.ttf') 
ax.set_title('Text in a cool font', fontproperties=prop, size=40) 
plt.show() 
plt.savefig('test.png') 

La imagen resultante es con una fuente personalizada.

+1

Esto resolvió mi problema en OSX Yosemite ejecutando una notebook iPython en un entorno Python 3 conda. – wil3

Cuestiones relacionadas