2009-05-29 7 views

Antwort

44

Dies ist die vorgeschlagene Matplotlib 2.0-Lösung von der offiziellen Website HERE:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.linspace(0, 2*np.pi, 100) 
y = np.sin(x) 

ax = plt.subplot(111) 
ax.plot(x, y) 

# Hide the right and top spines 
ax.spines['right'].set_visible(False) 
ax.spines['top'].set_visible(False) 

# Only show ticks on the left and bottom spines 
ax.yaxis.set_ticks_position('left') 
ax.xaxis.set_ticks_position('bottom') 

plt.show() 

enter image description here

+2

Dies ist die bessere als die akzeptierte Antwort in neueren Versionen von Matplotlib. – ffledgling

32

[Bearbeiten] matplotlib in jetzt (2013-10) auf Version 1.3.0, die diese tatsächlich nur hinzugefügt

Diese Fähigkeit beinhaltet, und Sie müssen die Subversion-Version für sie. Sie können den Beispielcode here sehen.

Ich aktualisiere nur um zu sagen, dass es jetzt eine bessere example online ist. Immer noch die Subversion-Version, es gab noch keine Veröffentlichung mit dieser.

[bearbeiten] Matplotlib 0.99.0 RC1 wurde gerade veröffentlicht und enthält diese Fähigkeit.

+0

Achten Sie darauf, die Warnung an http://matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/overview lesen.html über die Unterstützung von Häkchen, die unvollständig sind, bevor Sie versuchen, das oben genannte mit z. B. gedrehten Etiketten zu verwenden! – timday

+2

Bitte stellen Sie sicher, dass Sie mit meinen Änderungen cool sind. – tacaswell

+0

Es hängt davon ab, wie Sie die Achse konstruieren. Die von '' mplplots'' generierten Achsen können so nicht verwendet werden? –

7

Wenn Sie nicht brauchen, Zecken und solche (z zum Plotten qualitative Abbildungen) Sie auch diese schnelle Abhilfe verwenden könnten:

Stellen die Achse unsichtbar (beispielsweise mit plt.gca().axison = False) und sie dann mit plt.arrow manuell zeichnen.

+1

Dies scheint die Stacheln zu entfernen, aber lassen Sie die Markierungen an Ort und Stelle. Irgendeine Idee, wie man die Zecken auch entfernt? –

+1

@Rob: Du hast recht, ich habe tatsächlich eine andere Lösung in dem Skript verwendet, an das ich gedacht habe. Ich habe meine Antwort geändert, das sollte jetzt funktionieren, aber im Allgemeinen ist die oben genannte Lösung besser. – nikow

56

Alternativ kann diese

def simpleaxis(ax): 
    ax.spines['top'].set_visible(False) 
    ax.spines['right'].set_visible(False) 
    ax.get_xaxis().tick_bottom() 
    ax.get_yaxis().tick_left() 

scheint, ohne zu verlieren gedreht Schildträger die gleiche Wirkung auf eine Achse zu erreichen.

(Matplotlib 1.0.1; Lösung inspiriert durch this).

-4

So viel mehr rudimentär ist, könnte aber den Trick:

remove_border()

0

(Dies ist eher eine Erweiterung Kommentar, zusätzlich zu den zu verstehen nsive Antworten hier)


Beachten Sie, dass wir jede dieser drei Elemente unabhängig voneinander verstecken.

  • Um die Grenze (auch bekannt als "Rückgrat") ausblenden: ax.set_frame_on(False) oder ax.spines['top'].set_visible(False)

  • die Zecken zu verbergen: ax.tick_params(top=False)

  • th auszublenden e-Etiketten: ax.tick_params(labeltop=False)

Verwandte Themen