pad_inches=0 et bbox_inches=“serré” rend l'intrigue plus petit que déclaré figsize
Je suis à la production d'une publication de qualité de l'intrigue pour être intégré en latex et je tiens à être très précis en termes de tailles et polices de caractères (de sorte que les polices sont de la même taille dans l'article comme dans la parcelle). Pour prévenir le terrain de mise à l'échelle en latex, j'aimerais avoir la taille exacte, mais je ne peux pas. Voici mon code:
import matplotlib.pyplot as plt
from matplotlib import rc, rcParams
from numpy import sin
rc('text', usetex=True)
rc('font', family='serif', serif='Computer Modern Roman', size=8)
rc('legend', fontsize=10)
width_in = 5
fig = plt.figure(1, figsize=(width_in, 2))
ax = fig.add_subplot(111)
ax.plot(range(0,100), sin(range(0,100)))
fig.tight_layout()
fig.savefig('test.eps', bbox_inches='tight', pad_inches=0)
plt.close()
Le problème est avec bbox_inches='serré' et pad_inches=0. L'ajout de ces options permet de ma parcelle de 4,76 cm de large au lieu de déclaré 5 pouces. Mais je veux qu'ils économiser de l'espace. Alors, comment le résoudre?
Edit: eh Bien, les réponses suggèrent de supprimer bbox_inches='tight'
et pad_inches=0
et utiliser seulement les tight_layout()
. Puis, les images est de bonne taille, mais il a encore un peu de blanc rembourrage autour de. Je peux l'enlever avec fig.tight_layout(pad=0)
, mais alors les titres de figure, il a déménagé à l'intérieur de la boîte, ce qui semble laid. D'autre part, je peux utiliser tight_layout(rect=[...])
et obtenir le résultat souhaité, mais c'est un manuel de travail pour obtenir le droit de nombres - je ne l'aime pas. Ainsi, actuellement, je ne vois pas du tout facile et en général de solution à mon problème.
OriginalL'auteur cauchy | 2013-04-16
Vous devez vous connecter pour publier un commentaire.
Le problème que vous rencontrez est que
bbox_inches='tight'
supprime juste l'ensemble de l'espace blanc supplémentaire autour de votre figure, il ne fait pas ré-arranger quoi que ce soit dans votre figure, après qu'elle ait été rendue.Vous devrez peut-être ajuster les paramètres que vous passez à
tight_layout
(tutoriel) pour obtenir l'effet désiré.J'espère que cela vous arrive pointé dans la bonne direction.
Puis poser une nouvelle question
Merci! Je l'ai fait et c'est ici: stackoverflow.com/questions/23532036/...
merci de créer un nouvel élément de réponse
OriginalL'auteur tacaswell
J'ai le même problème de prise de matplotlib parcelles pour le LaTeX. Depuis mon parcelles n'autorise pas l'utilisation de
tight_layout
, donnant cette avertissement, j'ai fini par utiliserfig.subplots_adjust(bottom=bottom_pos, top=top_pos, left=left_pos, right=right_pos)
. Voir ce tutoriel.Il exige manuellement trouver les meilleures valeurs pour
bottom_pos
etc. mais dans mon cas, il semble être la seule possibilité pour obtenir des images sans beaucoup d'espaces de ne pas changer la figure de la taille de la sortie.OriginalL'auteur Kyrion
Votre parcelle d'origine doit avoir de l'espace autour d'elle, sinon bbox_inches=serré ne serait pas supprimer toute la région. Il y a deux solutions à ce que je connais:
La méthode simple est d'utiliser
tight_layout
comme mentionné par tcaswell.Le plus compliqué, mais plus contrôlable méthode est d'éviter d'utiliser
fig.add_subplot(111)
et au lieu d'utiliserfig.add_axes()
qui vous permettent d'être beaucoup plus strictes en termes de la taille de vos axes sont lorsque vous définissez les axes de l'instance. Vous pouvez ensuite modifier la taille de vos axes de prendre autant de la figure de la zone afin de maintenir un 5" la figure de la zone. Une fois que vous avez fait cela, je vous recommande tout simplement pas à l'aide debbox_inches
ou Aucun (valeur par défaut) pour éviter unnessicary recadrage.fig.add_axes()
nécessite unrect
paramètre en tant que premier argument qui consiste à[left_position, bottom_position, width, height]
chaque de qui varient de 0 à 1.Edit: Après être passé par le
tight_layout
tutoriel encore une fois, j'ai réalisé qu'il couvre à peu près tout. Je n'avais pas réalisé qu'il était en mesure de maintenir le ratio d'aspect de la axes instance facilement, même si le ratio d'aspect de la figure est différent de celui des axes de l'instance. J'ai tendance à essayer d'être très explicite lorsque je définis les axes régions parce que je deal avec l'imagerie par satellite et d'essayer de le garder aussi le natif de la résolution du capteur ou un facteur de que la résolution du capteur, ce qui nécessite un peu plus de contrôle.OriginalL'auteur Vorticity