¿Por qué la configuración de la fuente? la familia en matplotlibrc no reflejada?
Uso macOS y python3.7.
Estoy teniendo problemas para configurar fuentes en Matplotlib.
Estoy tratando de configurar la fuente a Times New Roman en Matplotlib.
En el archivo matplotlibrc (que se encuentra en /Users/my_name/.pyenv/versions/anaconda3-2019.10/lib/python3.7/site-packages/matplotlib/mpl-data
), Cambié #font.family: sans-serif
en font.family: serif
y #font.serif: DejaVu Serif, ..., Times New Roman, ...
en font.serif: Times New Roman, ...
Después de establecer el archivo matplotlibrc como se describe anteriormente, invoqué el shell interactivo escribiendo python
en la terminal.
>>> import matplotlib as mpl
>>> import matplotlib.pyplot as plt
>>> mpl.matplotlib_fname()
'/Users/my_name/.pyenv/versions/anaconda3-2019.10/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc'
>>> plt.rcParams['font.family']
['serif']
>>> plt.rcParams['font.serif']
['Times New Roman', 'DejaVu Serif', 'Bitstream Vera Serif', 'Computer Modern Roman', 'New Century Schoolbook', 'Century Schoolbook L', 'Utopia', 'ITC Bookman', 'Bookman', 'Nimbus Roman No9 L', 'Times', 'Palatino', 'Charter', 'serif']
Como puede ver más arriba, los ajustes se han aplicado con éxito hasta ahora.
Pero, cuando creé el principal. py se muestra a continuación
import matplotlib as mpl
import matplotlib.pyplot as plt
print(mpl.matplotlib_fname())
print(plt.rcParams["font.family"])
print(plt.rcParams['font.serif'])
y lo corrió con python main.py
en la terminal. La producción fue
/Users/my_name/.pyenv/versions/anaconda3-2019.10/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
['sans-serif']
['Times New Roman', ..., 'serif']
y resulta que la fuente. no se refleja el entorno familiar.
Cuando realmente creé el gráfico, la fuente Times New Roman no fue aplicada. Además, añadí print(plt.rcParams["font.sans-serif"])
a la central. py y la salida ['Arial', 'Liberation Sans', 'DejaVu Sans', 'Bitstream Vera Sans', 'sans-serif']
, que es diferente de la configuración #font.sans-serif: DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
en el matplotlibrc.
En la concha interactiva, plt.rcParams["font.sans-serif"]
Producción correcta #font.sans-serif: DejaVu Sans, ...
como se describe en el matplotlibrc.
Agradecería que alguien pudiera decirme por qué esto está sucediendo cuando los ajustes fueron reflejados en la concha interactiva. No estoy muy confiado en mi inglés, así que por favor hágame saber si hay algo que sea difícil de entender.
Muchas gracias.
Pregunta hecha hace 3 años, 4 meses, 13 días - Por stackscripter
2 Respuestas:
-
El problema que estás experimentando con la configuración de la fuente en Matplotlib probablemente se deba a que estás sobrescribiendo las configuraciones en otro lugar dentro de tu script.
Cuando ejecutas el script
main.py
, es posible que estés estableciendo la configuración de la fuente después de la importación de Matplotlib, lo que podría causar que las configuraciones previas se sobrescriban.Para evitar este problema, te recomendaría que hagas lo siguiente:
- Asegúrate de configurar la fuente antes de cualquier otra operación con Matplotlib en tu script `main.py`. Por ejemplo:
python import matplotlib as mpl import matplotlib.pyplot as plt
Configurar la fuente antes de realizar cualquier otra operación
plt.rcParams['font.family'] = 'serif' plt.rcParams['font.serif'] = ['Times New Roman'] print(mpl.matplotlib_fname()) print(plt.rcParams["font.family"]) print(plt.rcParams['font.serif'])- Comprueba que no hayas establecido la configuración de la fuente en otro archivo de configuración o en otra parte de tu entorno que pueda estar sobrescribiendo las configuraciones que has realizado en `matplotlibrc`.
Siguiendo estos pasos, deberías poder asegurarte de que la configuración de la fuente se refleje correctamente en tus gráficos con Matplotlib. Espero que esta información te sea de ayuda. ¡Déjame saber si tienes alguna otra pregunta o inquietud!
Respondida el Dec 18, 2020 a las 11:47 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Causa:
El problema surge porque estás importando
matplotlib
dos veces en tu scriptmain.py
. La primera vez, importasmatplotlib
comompl
, y la segunda vez, importasmatplotlib
comomatplotlib
. Esto carga dos configuraciones dematplotlibrc
diferentes en la memoria.Solución:
Para resolver este problema, solo debes importar
matplotlib
una vez en tu scriptmain.py
. Aquí tienes el código corregido:python import matplotlib.pyplot as plt print(plt.rcParams["font.family"]) print(plt.rcParams['font.serif'])
Esto importará
matplotlib
y cargará la configuración dematplotlibrc
correctamente, reflejando la fuente Times New Roman en tus gráficos.Respondida el Dec 18, 2020 a las 11:57 - por Gemini
Votos positivos: 0 | Votos negativos: 0