matplotlib: ¿cómo disminuir la densidad de las tags de tic en las subplots?

Estoy buscando disminuir la densidad de las tags de tick en diferentes subplots

import pandas as pd import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec from StringIO import StringIO data = """\ abcd z 54.65 6.27 19.53 4.54 w -1.27 4.41 11.74 3.06 d 5.51 3.39 22.98 2.29 t 76284.53 -0.20 28394.93 0.28 """ df = pd.read_csv(StringIO(data), sep='\s+') gs = gridspec.GridSpec(3, 1,height_ratios=[1,1,4] ) ax0 = plt.subplot(gs[0]) ax1 = plt.subplot(gs[1]) ax2 = plt.subplot(gs[2]) df.plot(kind='bar', ax=ax0,color=('Blue','DeepSkyBlue','Red','DarkOrange')) df.plot(kind='bar', ax=ax1,color=('Blue','DeepSkyBlue','Red','DarkOrange')) df.plot(kind='bar', ax=ax2,color=('Blue','DeepSkyBlue','Red','DarkOrange'),rot=45) ax0.set_ylim(69998, 78000) ax1.set_ylim(19998, 29998) ax2.set_ylim(-2, 28) ax0.legend().set_visible(False) ax1.legend().set_visible(False) ax2.legend().set_visible(False) ax0.spines['bottom'].set_visible(False) ax1.spines['bottom'].set_visible(False) ax1.spines['top'].set_visible(False) ax2.spines['top'].set_visible(False) ax0.xaxis.set_ticks_position('none') ax1.xaxis.set_ticks_position('none') ax0.xaxis.set_label_position('top') ax1.xaxis.set_label_position('top') ax0.tick_params(labeltop='off') ax1.tick_params(labeltop='off', pad=15) ax2.tick_params(pad=15) ax2.xaxis.tick_bottom() d = .015 kwargs = dict(transform=ax0.transAxes, color='k', clip_on=False) ax0.plot((-d,+d),(-d,+d), **kwargs) ax0.plot((1-d,1+d),(-d,+d), **kwargs) kwargs.update(transform=ax1.transAxes) ax1.plot((-d,+d),(1-d,1+d), **kwargs) ax1.plot((1-d,1+d),(1-d,1+d), **kwargs) ax1.plot((-d,+d),(-d,+d), **kwargs) ax1.plot((1-d,1+d),(-d,+d), **kwargs) kwargs.update(transform=ax2.transAxes) ax1.plot((-d,+d),(1-d/4,1+d/4), **kwargs) ax1.plot((1-d,1+d),(1-d/4,1+d/4), **kwargs) plt.show() 

lo que resulta en introduzca la descripción de la imagen aquí

Me gustaría disminuir las tags de tick en las dos subplots superiores. Como hacer eso ? Gracias.

Bonificación: 1) ¿Cómo deshacerse de la línea de puntos en y = 0 en la base de las barras? 2) ¿Cómo deshacerse de la etiqueta x-trick entre la subplot 0 y 1? 3) ¿Cómo configurar la parte posterior de la ttwig a la transparencia? (vea la línea del eje Y rota en la parte inferior derecha que desaparece detrás de la parte posterior de la gráfica)

Puede establecer los ticks en el lugar que desee, al igual que establece los xticks.

 import numpy as np ax0.yaxis.set_ticks(np.arange(70000,80000,2500)) 

Esto creará cuatro tics espaciados uniformemente para su subttwig ax0. Puedes hacer algo similar para tus otras subplots.

Un enfoque general es decirle a matplotlib el número deseado de tics:

 plt.locator_params(nbins=10) 

Editar mediante comentarios de @Daniel Power: para cambiar para un solo eje (por ejemplo, 'x' ) en un eje, use:

 ax.locator_params(nbins=10, axis='x') 

Una mejora sobre la sugerencia de enfoque de Aman es la siguiente:

 import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(1, 1, 1) # ... plot some things ... # Find at most 101 ticks on the y-axis at 'nice' locations max_yticks = 100 yloc = plt.MaxNLocator(max_yticks) ax.yaxis.set_major_locator(yloc) plt.show() 

Espero que esto ayude.