2012-07-22 4 views
7

Ich möchte 2 Unterplots mit Matlibplot Achsen plotten. Da diese beiden Unterplots dasselbe Ylabel und dieselben Ticks haben, möchte ich sowohl die Ticks als auch die Markierungen des zweiten Subplots deaktivieren. Im Anschluss ist mein kurzes Skript:Wie Sie die Ticks UND Marken einer Matlibplot-Achse ausschalten?

import matplotlib.pyplot as plt 
ax1=plt.axes([0.1,0.1,0.4,0.8]) 
ax1.plot(X1,Y1) 
ax2=plt.axes([0.5,0.1,0.4,0.8]) 
ax2.plot(X2,Y2) 

die X-Achse Markierungen BTW, überlappten und nicht sicher, ob es eine saubere Lösung ist oder nicht. (Eine Lösung könnte sein, dass die letzte Markierung für jeden Teilplan unsichtbar ist, außer für die letzte, aber nicht sicher wie). Vielen Dank!

Antwort

8

Ein schnell Google, und ich fand die Antworten:

plt.setp(ax2.get_yticklabels(), visible=False) 
ax2.yaxis.set_tick_params(size=0) 
ax1.yaxis.tick_left() 
4

Eine etwas andere Lösung gesetzt sein könnte tatsächlich den ticklabels ‚auf‘. Im Folgenden wird loszuwerden, alle die y-ticklabels und Markierungen tick:

# This is from @pelson's answer 
plt.setp(ax2.get_yticklabels(), visible=False) 

# This actually hides the ticklines instead of setting their size to 0 
# I can never get the size=0 setting to work, unsure why 
plt.setp(ax2.get_yticklines(),visible=False) 

# This hides the right side y-ticks on ax1, because I can never get tick_left() to work 
# yticklines alternate sides, starting on the left and going from bottom to top 
# thus, we must start with "1" for the index and select every other tickline 
plt.setp(ax1.get_yticklines()[1::2],visible=False) 

Und nun der letzte Häkchen und Label für die x-Achse, um loszuwerden

# I used a for loop only because it's shorter 
for ax in [ax1, ax2]: 
    plt.setp(ax.get_xticklabels()[-1], visible=False) 
    plt.setp(ax.get_xticklines()[-2:], visible=False) 
Verwandte Themen