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.
Können Sie auch die Zecken aus den oberen und rechten Achsen aus der matplotlibrc Datei entfernen eingestellt? – jkokorian
@jkokorian: In der kommenden Version 2.0.0 von Matplotlib können Sie die Optionen "xtick.top" und "ytick.right" einstellen. – Roun