Préciser la taille de la figure au centimètre près dans matplotlib
, je me demande si vous pouvez spécifier la taille d'une figure dans matplotlib en centimètre. Au moment où j'écris:
def cm2inch(value):
return value/2.54
fig = plt.figure(figsize=(cm2inch(12.8), cm2inch(9.6)))
Mais est-il originaire?
3 réponses
Ce n'est pas une réponse à une question " Est-il originaire? ", mais je pense qu'il y a une façon plus élégante:
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)
alors on peut émettre plt.figure(figsize=cm2inch(12.8, 9.6))
, ce qui est à mon avis Une façon beaucoup plus propre. La mise en œuvre nous permet également d'utiliser cm2inch((12.8, 9.6))
, ce que je ne préfère pas personnellement, mais certaines personnes peuvent le faire.
EDIT: même s'il n'y a aucun moyen de faisant cela nativement en ce moment, j'ai trouvé une discussion ici .
j'ai soumis une demande de pull au matplotlib repo sur GitHub pour inclure les fonctionnalités set_size_cm et get_size_cm pour les figures ( https://github.com/matplotlib/matplotlib/pull/5104 )
si elle est acceptée, cela devrait vous permettre d'utiliser une approche native pour la taille en centimètres.
AFIK matplotlib
n'a pas de fonctions de conversion.
si vous avez souvent besoin de convertir des unités, vous pouvez envisager d'utiliser pinte . Il offre également NumPy
de soutien.
Pour votre exemple, vous pourriez faire quelque chose comme ce qui suit:
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)