2014-04-17 6 views
11

in Matlab, es ist einfach zu erhalten und die Position eines vorhandenen Achsen auf der Figur gesetzt:Matplotlib: get und set Achsen Position

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

Wie kann ich dies tun in Matplotlib?

Ich brauche dies aus zwei Gründen:

Dies sind die spezifischen Probleme, die ich zu lösen habe versucht:

  • Ich habe eine Spalte von Nebenhandlungen wo einige Farbbalken haben und einige nicht , und sie haben nicht die gleiche Breite, dh die X-Achsen stimmen nicht überein. Die Farbleiste stiehlt den Raum von den Achsen. Dies geschieht auch in Matlab, und ich würde den obigen Trick verwenden, um alle Achsen gleich breit zu machen, indem ich die Breite von einer Achse mit einer Farbleiste auf jene ohne Breite übertrage.

  • fügen Sie zwischen den einzelnen Teilplots durch Schrumpfen der Achsen einen Abstand hinzu. Die Funktion adjust_subplots() passt alle Unterplots an.

Antwort

32

Die Einstellung der Achsenposition ist in Matplotlib ähnlich. Sie können die GET_POSITION und set_position Methoden der 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 

verwenden Sie auch einen Blick auf GridSpec nehmen möchten, wenn Sie nicht bereits haben.

+0

Ich probierte und versuchte es erneut, aber wenn ich mit set_position spiele, verschiebe ich nur die Grafik in meinem Fenster. Wie kann ich die X-Achsen bei y = 0 oder y = -1 oder in anderen Positionen plotten? – DaniPaniz