2010-08-09 3 views

Antwort

15

Um die rechts und von oben Stacheln eines subplot zu verstecken, müssen Sie sowohl die Farbe der entsprechenden Stacheln auf 'none', und setzen Sie die Tick-Position auf 'left' für den Xtick und 'bottom' für den Ytick (um die Häkchen sowie die Stacheln zu verstecken).

Leider ist derzeit keiner über matplotlibrc erreichbar. Die in matplotlibrc angegebenen Parameter werden validiert und dann in einem Dict mit der Bezeichnung rcParams gespeichert. Es liegt dann an den einzelnen Modulen, nach einem Schlüssel in diesem Diktat zu suchen, dessen Wert als ihr Standardwert dient. Wenn sie es nicht für eine ihrer Optionen überprüfen, ist diese Option nicht über die Datei rc änderbar.

Aufgrund der Natur des rc Systems und die Art und Weise, die Stacheln geschrieben sind, den Code zu ändern, damit dies nicht einfach sein würde:

Spines zur Zeit ihre Farbe durch die gleichen rc Parameter erhalten wurden definiert, Achsenfarben; Sie können es nicht auf 'none' setzen, ohne alle Achsenzeichnungen auszublenden. Sie sind auch agnostisch, ob sie top, right, left oder bottom — sind, das sind wirklich nur vier separate Stacheln in einem dict gespeichert. Die einzelnen Spine-Objekte wissen nicht, welche Seite des Plots sie zusammensetzen. Sie können also nicht einfach neue rc Parameter hinzufügen und die richtige während der Initialisierung der Spine zuweisen.

self.set_edgecolor(rcParams['axes.edgecolor']) 

(./matplotlib/lib/matplotlib/spines.py, __init __(), Linie 54)

Wenn Sie eine große Menge an vorhandenen Code, so dass die Achse Hinzufügen Parameter manuell zu jedem wäre zu beschwerlich, Sie könnten alternativ eine Hilfsfunktion verwenden, um alle Axis-Objekte zu durchlaufen und die Werte für Sie festzulegen.

Hier ist ein Beispiel:

import matplotlib 
import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.pyplot import show 

# Set up a default, sample figure. 
fig = plt.figure() 
x = np.linspace(-np.pi,np.pi,100) 
y = 2*np.sin(x) 

ax = fig.add_subplot(1,2,2) 
ax.plot(x,y) 
ax.set_title('Normal Spines') 

def hide_spines(): 
    """Hides the top and rightmost axis spines from view for all active 
    figures and their respective axes.""" 

    # Retrieve a list of all current figures. 
    figures = [x for x in matplotlib._pylab_helpers.Gcf.get_all_fig_managers()] 
    for figure in figures: 
     # Get all Axis instances related to the figure. 
     for ax in figure.canvas.figure.get_axes(): 
      # Disable spines. 
      ax.spines['right'].set_color('none') 
      ax.spines['top'].set_color('none') 
      # Disable ticks. 
      ax.xaxis.set_ticks_position('bottom') 
      ax.yaxis.set_ticks_position('left') 

hide_spines() 
show() 

Rufen Sie hide_spines() vor show(), und es wird sie in allen Figuren, dass show() Displays verstecken. Ich kann mir keine einfachere Möglichkeit vorstellen, eine große Anzahl von Zahlen zu ändern, außer die Zeit zu verbringen, matplotlib zu patchen und rc Unterstützung für die benötigten Optionen hinzuzufügen.

13

Um matplotlib nicht zu zeichnen obere und rechte Stacheln zu machen, kann man folgendes in matplotlibrc Datei

axes.spines.right : False 
axes.spines.top : False 
+0

Können Sie auch die Zecken aus den oberen und rechten Achsen aus der matplotlibrc Datei entfernen eingestellt? – jkokorian

+0

@jkokorian: In der kommenden Version 2.0.0 von Matplotlib können Sie die Optionen "xtick.top" und "ytick.right" einstellen. – Roun