web-dev-qa-db-fra.com

Matplotlib: obtenir et définir la position des axes

Dans matlab, il est simple d'obtenir et de définir la position d'un axe existant sur la figure:

  pos = get(gca(), 'position')
  set(gca(), 'position', pos)

Comment faire cela dans Matplotlib?

J'en ai besoin pour deux raisons liées:

Ce sont les problèmes spécifiques que j'essaie de résoudre:

  • J'ai une colonne de sous-parcelles où certaines ont des barres de couleur et d'autres pas, et elles n'ont pas la même largeur, c'est-à-dire que les axes X ne s'alignent pas. La barre de couleur vole l'espace des axes. Cela se produit également dans matlab, et là j'utiliserais l'astuce ci-dessus pour rendre tous les axes également larges en copiant la largeur d'un axe avec une barre de couleur à ceux sans.

  • ajouter de l'espace entre les sous-parcelles individuelles en réduisant les axes. La fonction adjust_subplots () ajuste tous les sous-tracés de la même manière.

17
Åsmund

Le réglage de la position des axes est similaire dans Matplotlib. Vous pouvez utiliser les méthodes get_position et set_position des axes.

import matplotlib.pyplot as plt

ax = plt.subplot(111)
pos1 = ax.get_position() # get the original position 
pos2 = [pos1.x0 + 0.3, pos1.y0 + 0.3,  pos1.width / 2.0, pos1.height / 2.0] 
ax.set_position(pos2) # set a new position

Vous pouvez également jeter un œil à GridSpec si vous ne l'avez pas déjà fait.

43
Molly