2012-01-06 8 views
24

p. Ej. cuando quiero establecer font en¿Cómo obtener una lista de todas las fuentes actualmente disponibles para Matplotlib?

matplotlib.rc('font', **font) 

Thanks.

+0

Al parecer ninguno de ellos aparecerá una lista de fuentes disponibles en el 'MPL-datos 'directorio encontrado en' ~/anaconda/lib/pythonX.X/site-packages/matplotlib/mpl-data/fonts/ttf' (prueba 'import matplotlib; matplotlib.matplotlib_fname()' para obtener la ubicación exacta). A pesar de que ** usar 'fname = ' para cargar fuentes en esta ubicación es exitoso **. ¿Alguien tiene una respuesta que lo haga? –

Respuesta

39
import matplotlib.font_manager 
matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf') 

Compruebe this para ver otras opciones.

+0

genial, gracias! BTW: aparentemente tienes que 'importar matplotlib.font_manager' para que sucedan las cosas ;-) – nye17

+0

Correcto. He editado la respuesta. – imsc

+1

Además, los argumentos especificados son los predeterminados, por lo que 'matplotlib.font_manager.findSystemFonts()' devuelve lo mismo. –

13

Para obtener una lista (legible) de fuentes disponibles a matplotlib:

import matplotlib.font_manager 
flist = matplotlib.font_manager.get_fontconfig_fonts() 
names = [matplotlib.font_manager.FontProperties(fname=fname).get_name() for fname in flist] 
print names 

El documentation recomienda get_fontconfig_fonts():

Esta es una manera fácil de agarrar todas las fuentes que el usuario desea hacerse disponible para las aplicaciones, sin necesidad de saber dónde residen todas ellas .

Tenga en cuenta que se puede obtener la (inversa) a nombre de la fuente de consulta fácilmente utilizando la clase FontProperties:

font = matplotlib.font_manager.FontProperties(family='TeX Gyre Heros') 
file = matplotlib.font_manager.findfont(font) 

findfont es robusto, ya que devuelve una fuente por defecto si no se puede encontrar propiedades que corresponden .

+0

Limpio, gracias. Parece que este proporciona los ** nombres disponibles ** mientras que la respuesta aceptada muestra los archivos '.ttf'. Desafortunadamente por cualquier razón ** esto falla en mi macbook (MacOS Sierra) **, pero funciona en algunos servidores Linux remotos que uso. La respuesta aceptada funciona en todas partes. –

0

por this blog post, este código le conseguirá fuentes disponibles y muestras:

import matplotlib.font_manager 
from IPython.core.display import HTML 

def make_html(fontname): 
    return "<p>{font}: <span style='font-family:{font}; font-size: 24px;'>{font}</p>".format(font=fontname) 

code = "\n".join([make_html(font) for font in sorted(set([f.name for f in matplotlib.font_manager.fontManager.ttflist]))]) 

HTML("<div style='column-count: 2;'>{}</div>".format(code)) 

Por ejemplo:

enter image description here

Cuestiones relacionadas