Suena como un problema fácil, pero no encuentro ninguna solución efectiva para cambiar la fuente (no el tamaño de la fuente) en un diagrama realizado con matplotlib en python.
Encontré un par de tutoriales para cambiar la fuente predeterminada de matplotlib modificando algunos archivos en las carpetas donde matplotlib almacena su fuente predeterminada - vea esta publicación de blog - pero estoy buscando una solución menos radical ya que me gustaría usar más de una fuente en mi gráfico (texto, etiqueta, etiqueta del eje, etc.).
python
fonts
matplotlib
SirC
fuente
fuente
hfont = {'fontname':'Helvetica'} plt.annotate('Country ', (0.17,0.95), xytext=None, xycoords='figure fraction',size=28, color='red', horizontalalignment = 'left', **hfont)
y el error es, en/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))
cambio, si utilizo como nombre de fuente Comic Sans MS como en su ejemplo, el código funciona.Respuestas:
Digamos que quiere Comic Sans para el título y Helvetica para la etiqueta x.
csfont = {'fontname':'Comic Sans MS'} hfont = {'fontname':'Helvetica'} plt.title('title',**csfont) plt.xlabel('xlabel', **hfont) plt.show()
fuente
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))
. ¿Cómo puedo instalar Helvetica en el conjunto de fuentes conocidas por matplotlib?También puede utilizar
rcParams
para cambiar la familia de fuentes de forma global.import matplotlib.pyplot as plt plt.rcParams["font.family"] = "cursive" # This will change to your computer's default cursive font
La lista de argumentos de la familia de fuentes de matplotlib está aquí .
fuente
Prefiero emplear:
from matplotlib import rc #rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) rc('font',**{'family':'serif','serif':['Times']}) rc('text', usetex=True)
fuente
import pylab as plb plb.rcParams['font.size'] = 12
o
import matplotlib.pyplot as mpl mpl.rcParams['font.size'] = 12
fuente
La fuente Helvetica no viene incluida con Windows, por lo que para usarla debe descargarla como un archivo .ttf. Luego puede referirlo a matplotlib de esta manera (reemplace "crm10.ttf" con su archivo):
import os from matplotlib import font_manager as fm, rcParams import matplotlib.pyplot as plt fig, ax = plt.subplots() fpath = os.path.join(rcParams["datapath"], "fonts/ttf/cmr10.ttf") prop = fm.FontProperties(fname=fpath) fname = os.path.split(fpath)[1] ax.set_title('This is a special font: {}'.format(fname), fontproperties=prop) ax.set_xlabel('This is the default font') plt.show()
print(fpath)
le mostrará dónde debe colocar el .ttf.Puede ver el resultado aquí: https://matplotlib.org/gallery/api/font_file.html
fuente
fontproperties
globalmente para que no tenga que especificarlo con cada llamada aset_title()
, por ejemplo,,set_xlabel()
etc.?