2017-01-02 3 views
1

Gibt es eine Möglichkeit, die Ticks und Hilfsstrichsbeschriftungen der x-Achse so zu verankern, dass sie die y-Achse an einer anderen Stelle kreuzen als die tatsächliche x-Achse Y-Achse?Matplotlib Tick- und Hilfsstrichbeschriftungen Position getrennt von Achse verankert

ax = plt.gca() 
ax.get_xaxis().set_tick_params(pad=5) 

oder

ax.xaxis.set_tick_params(pad=500) 

Zum Beispiel: Dies kann grundsätzlich mit erreicht werden

Waveform with x-axis anchored at y-axis 0 and tick labels anchored at y-axis -0.04223

Abgesehen davon, dass ich die Arbeit mit Audio-Datei-Eingänge und die y-Achse ist variabel (basierend auf der höchsten/niedrigsten Amplitude der Wellenform). Daher ändern sich die maximalen und minimalen y-Achsenwerte abhängig von der Audiodatei. Ich bin besorgt, dass pad=NUM wird relativ zur y-Achse bewegt werden.

Deshalb suche ich nach einem Weg zu erreichen, was pad tut, aber die Zecken haben und kreuzen Sie Etiketten auf den Minimalwert der y-Achse verankert werden.

Als Bonus, würde das Umdrehen, so dass die Y-Achse irgendwo anders verankert ist als die Tick-Etiketten der Y-Achse, sicherlich auch jemandem nützen.

In meinem speziellen Fall habe ich die x-Achse, die die y-Achse bei y = 0 kreuzt. Die X-Achsen-Ticks und Tick-Labels werden manchmal bei -1,0, manchmal bei -0,5, manchmal bei -0,25 usw. liegen. Ich weiß immer, was der Minimalwert der Y-Achse ist, und möchte daher, dass sie der Ankerpunkt ist für X-Achsen-Ticks und Tick-Labels. (In der Tat, ich bin froh, es nur mit den X-Achsen-Tick-Etiketten zu tun, wenn es möglich ist, Ticks und Tick-Labels separat zu behandeln). Ein Beispiel dafür ist in diesem Bild oben gezeigt (was ich mit pad=500 erreicht habe).

Ich habe mich in anderen Threads und in der Dokumentation umgesehen, aber ich vermisse es entweder oder kenne die richtigen Begriffe nicht, um es zu finden.

+0

Darüber hinaus habe ich festgestellt, dass die Einbeziehung der Wellenform in einem Unterplot das Padding geändert werden muss. Daher ist es auch bei dieser Methode bevorzugt, von einem "Block" wegzukommen und ihn auf einen Wert auf der y-Achse zu verankern. – whatisit

Antwort

0

UPDATE: Ich habe Gitternetzlinien hinzugefügt und bekam ein sehr unerwartetes Verhalten (z. B. Linienstil und Linienbreite funktionierten nicht wie erwartet) aufgrund der Verschiebung der oberen x-Achse. Ich erkannte noch einen besseren Weg - behalte die Achsen (schalte die Splines aus) und zeichne einfach eine zweite Zeile bei (0, 0) auf (max_time, 0).

ax.plot([0,times[-1]], [0,0], color='k') # Creates a 'false' x-axis at y=0 
ax.spines['top'].set_color('none') # Position unchanged 
ax.spines['bottom'].set_color('none') # Position unchanged 


es heraus! Ich habe darüber nachgedacht der falsche Weg ...

Problem: Verschieben der unteren x-Achse in die Mitte und die Zecke Klotzen Etiketten

Lösung: die untere x-Achse halten, wo es ist (Drehen Sie den unteren Rücken ab) und bewegen Sie die obere x-Achse in die Mitte (behalten Sie den oberen Rücken, aber deaktivieren Sie Ticks und Ticks).

Verwandte Themen