Mostrar tags de tick al compartir un eje en matplotlib

Estoy ejecutando la siguiente función:

def plot_variance_analysis(indices, stat_frames, legend_labels, shape): x = np.linspace(1, 5, 500) fig, axes = plt.subplots(shape[0], shape[1], sharex=True sharey=True) questions_and_axes = zip(indices, axes.ravel()) frames_and_labels = zip(stat_frames, legend_labels) for qa in questions_and_axes: q = qa[0] ax = qa[1] for fl in frames_and_labels: frame = fl[0] label = fl[1] ax.plot(x, stats.norm.pdf(x, frame['mean'][q], frame['std'][q]), label=label) ax.set_xlabel(q) ax.legend(loc='best') plt.xticks([1,2,3,4,5]) return fig, axes 

Esto es lo que obtengo con algunos de mis propios datos de muestra:

introduzca la descripción de la imagen aquí

Estoy tratando de mantener el estado compartido entre los ejes, pero al mismo tiempo mostrar las tags de marca para el eje x en todas las subplots (incluidas las dos principales). No puedo encontrar ningún medio para desactivar esto en la documentación. ¿Alguna sugerencia? ¿O debería simplemente establecer las tags de marca x eje por eje?

Estoy ejecutando matplotlib 1.4.0, si eso es importante.

Las marcas que faltan han tenido su propiedad visible establecida en False . Esto se señala en la documentación para plt.subplot . La forma más sencilla de solucionar esto es probablemente hacer:

 for ax in axes.flatten(): for tk in ax.get_yticklabels(): tk.set_visible(True) for tk in ax.get_xticklabels(): tk.set_visible(True) 

Aquí he repasado todos los ejes, algo que no necesariamente tiene que hacer, pero el código es más simple de esta manera. También puedes hacer esto con listas de comprensión en un feo, si quieres:

 [([tk.set_visible(True) for tk in ax.get_yticklabels()], [tk.set_visible(True) for tk in ax.get_yticklabels()]) for ax in axes.flatten()] 

En Matplotlib 2.2, las tags de tick se pueden volver a activar usando:

 ax.xaxis.set_tick_params(labelbottom=True)