real - Especifique el tamaño de la figura en centímetros en matplotlib
matplotlib python 3 (3)
AFIK matplotlib
no tiene funciones de conversión.
Si a menudo necesitas convertir unidades, podrías considerar usar una pint . También ofrece soporte NumPy
.
Para tu ejemplo podrías hacer algo como lo siguiente:
from pint import UnitRegistry
ureg = UnitRegistry()
width_cm, height_cm = (12.8 * ureg.centimeter, 9.6 * ureg.centimeter)
width_inch, height_inch = (width_cm.to(ureg.inch), height_cm.to(ureg.inch))
figsize_inch = (width_inch.magnitude, height_inch.magnitude)
fig = plt.figure(figsize=figsize_inch)
Me pregunto si puede especificar el tamaño de una figura en matplotlib en centímetro. En el momento escribo:
def cm2inch(value):
return value/2.54
fig = plt.figure(figsize=(cm2inch(12.8), cm2inch(9.6)))
Pero ¿hay un enfoque nativo?
Esto no es una respuesta a una pregunta '''' ¿Existe una forma nativa? '''', pero creo que hay una forma más elegante:
def cm2inch(*tupl):
inch = 2.54
if isinstance(tupl[0], tuple):
return tuple(i/inch for i in tupl[0])
else:
return tuple(i/inch for i in tupl)
Entonces uno puede emitir plt.figure(figsize=cm2inch(12.8, 9.6))
, que creo que es una forma mucho más limpia. La implementación también nos permite usar cm2inch((12.8, 9.6))
, que personalmente no prefiero, pero algunas personas pueden hacerlo.
EDITAR: Aunque no hay manera de hacer esto de forma nativa en este momento, encontré una discusión here .
He enviado una solicitud de extracción al repositorio matplotlib en GitHub para incluir las funciones set_size_cm y get_size_cm para las cifras ( https://github.com/matplotlib/matplotlib/pull/5104 )
Si se acepta, debería permitirle utilizar un enfoque nativo para la configuración de tamaño en centímetros.