2017-12-18 3 views
1

Ist es möglich, Tick-Etiketten innerhalb des Plotbereichs zu platzieren? Ich habe bereits versucht:Matplotlib bewegt Tick-Etiketten innerhalb des Plotbereichs

ax.tick_params(axis="y",pad=-.5, left="off",labelleft="on") 

und

ax.tick_params(axis="y",direction="in", left="off",labelleft="on") 

Erstere bewegt sich nur die Achse nach innen, und dieser bewegt sich nur die Zecken nicht die Zecke Etiketten.

Antwort

1

Ich denke, Sie sind völlig auf dem richtigen Weg. Das Problem besteht nur darin, die guten Parameter für das Padding zu finden, um die Tick-Labels in den Achsen zu haben. Das Padding wird in Punkten gemessen, daher ist es sinnvoll, viel größere Zahlen als 0,5 zu verwenden. Aufgrund der Ausrichtung des Textes ist auch die Auffüllung für die X- und Y-Achse unterschiedlich.

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
ax.tick_params(axis="y",direction="in", pad=-22) 
ax.tick_params(axis="x",direction="in", pad=-15) 

plt.show() 

enter image description here

3

aktualisieren

Ich habe ganz vergessen über die pad param in tick_params. @ImportanceOfBeingErnest’s answer nutzt dies und ist besser geeignet für die gestellte Frage.

Nichtsdestoweniger werde ich meine Antwort hier als ein Beispiel dafür lassen, wie man dasselbe Ziel erreichen könnte, wenn es nicht durch eine allgemeine Methode wie thick_params verfügbar wäre.

---

Ich bin der offizielle Weg nicht bekannt, dies zu erreichen. Aber Sie können es "fest codieren".

Wenn Sie die Zecken nur auf der Innenseite haben wollen, müssen Sie nur ausführen müssen:

ax.tick_params(direction="in") 

nun die Etiketten innerhalb der Zeichnungsfläche zu bewegen, müssen Sie padding zu den Zecken schreiben, follows:

Möglicherweise müssen Sie für die X- und Y-Ticks eine andere Auffüllung verwenden. In diesem Fall sollten Sie:

X_TICK_PADDING = -10 
Y_TICK_PADDING = -20 

xticks = [*ax.xaxis.get_major_ticks(), *ax.xaxis.get_minor_ticks()] 
yticks = [*ax.yaxis.get_major_ticks(), *ax.yaxis.get_minor_ticks()] 

for tick in xticks: 
    tick.set_pad(X_TICK_PADDING) 

for tick in yticks: 
    tick.set_pad(Y_TICK_PADDING) 

Es ist nicht schön, aber es funktioniert. Lass es mich wissen, wenn du das wolltest.

+0

Dies ist genau das gleiche wie die andere Antwort, nur mit viel mehr Codezeilen. Können Sie etwas dazu sagen, warum dies vorzuziehen wäre, wenn Sie nur 'tick_params' verwenden würden? – ImportanceOfBeingErnest

+0

Ich habe den 'Pad'-Parameter in 'tick_params' verpasst. Ich denke, die Methode in Ihrer Antwort ist besser als meine. Nun, ich frage mich, warum deine wurde downvoted und meine upvoted ...? – TPVasconcelos

+0

Ich habe meine Antwort aktualisiert – TPVasconcelos

Verwandte Themen