2012-07-22 9 views
7

Quiero trazar 2 subparcelas usando los ejes matlibplot. Como estas dos subparcelas tienen el mismo ylabel y ticks, quiero desactivar tanto las marcas Y como las marcas de la segunda subparcela. Lo que sigue es mi corta secuencia de comandos:¿Cómo desactivar los ticks AND marks de un matlibplot ejes?

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) 

Por cierto, los X marcas de los ejes se superponen y no está seguro de si hay una solución pura o no. (Una solución podría ser hacer que la última marca sea invisible para cada subparcela excepto la última, pero no estoy seguro de cómo). ¡Gracias!

Respuesta

8

Una rápida de Google y me encontré las respuestas:

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

una solución ligeramente diferente podría ser para la creación efectiva los ticklabels a ''. A continuación se librará de todos los y-ticklabels y marcas de graduación:

# 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) 

Y ahora para deshacerse de la última tickmark y una etiqueta para el eje x

# 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) 
Cuestiones relacionadas