Marcas de ejes

Supongamos que partimos de los siguientes datos:

Marcas de ejes

Como podemos comprobar, se trata de un conjunto de datos cuyos valores x varían entre 100 y 200 (este último valor sin incluir, esto es, se trata de 100 números enteros consecutivos comenzando por el 100) y cuyos valores y resultan de la suma acumulada de números reales extraídos de una distribución gaussiana.

Mostremos estos valores en una gráfica usando la función plt.plot:

Marcas de ejes

Vemos que matplotlib hace un más que razonable esfuerzo en mostrar tanto en el eje x como en el eje y marcas suficientemente significativas: en eje x las sitúa de 20 en 20 entre el número 100 y el 200 (es decir, cubriendo todo el rango de nuestros valores x) y en el eje y las sitúa de 2 en 2 entre los valores -4 y 10 (aunque este último valor no lo muestra).

Pero ¿y si queremos mostrar las marcas entre dos valores distintos? ¿o con una frecuencia diferente? Para esto tenemos las funciones matplotlib.pyplot.xticks y matplotlib.pyplots.yticks. Estas funciones permiten obtener o establecer las marcas en los ejes. Por ejemplo, supongamos que queremos mostrar las marcas del eje x solo entre los valores 12 y 180, pero de 10 en 10. Bastaría con ejecutar la siguiente función:

plt.xticks(range(120, 180, 10))

Marcas de ejes

Si, por otro lado, quisiéramos que las marcas se mostrasen incluyendo valores de x no incluidos en nuestro rango de datos, por ejemplo entre 0 y 250 de 20 en 20, usaríamos la misma función con los valores correspondientes:

Marcas de ejes

Vemos que, ahora, la gráfica ocupa un espacio menor para dejar sitio a los valores para los que hemos establecido las marcas.

Para el eje y el proceso es exactamente el mismo. Mostremos marcas, por ejemplo solo entre los valores 120 y 180 de 10 en 10 en el eje x, y entre -2 y 4 de 1 en 1 en el eje y:

Marcas de ejes

En realidad, las funciones plt.xticks y plt.yticks no solo pueden fijar las marcas en los ejes, también pueden fijar las etiquetas de dichas marcas. Por ejemplo, en este último ejemplo que hemos visto, las etiquetas mostradas en el eje x son 120, 130, 140, 150, 160 y 170, pero podríamos querer fijarlas en algo como 2010, 2011, 2012, 2013, 2014 y 2015:

Marcas de ejes

En el ejemplo anterior, hemos pasado a la función plt.xticks un primer argumento que fija los valores en los que se van a mostrar marcas, y un segundo argumento que fija las etiquetas a mostrar en dichas posiciones. Idealmente, este segundo argumento tiene la misma longitud que el primero, de forma que a cada marca le corresponda una etiqueta. Pero no tiene por qué ser así: si la lista de etiquetas es más larga que la lista de marcas, se ignoran las etiquetas extras. Y si es más corta, las marcas para las que no haya etiqueta se muestran sin ella.

Los métodos en el estilo OO equivalentes son:

plt.xticks → ax.set_xticks()

plt.yticks → ax.set_yticks()

...siendo ax la variable que representa el conjunto de ejes. De esta forma, el equivalente al código mostrado en In [78] es:

Marcas de ejes

Existen también métodos para establecer solo las etiquetas: set_xticklabels y set_yticklabels. Así, el código anterior podría quedar de la siguiente forma:

Marcas de ejes