graficos - graficar matrices en python
Cómo: reducir el número de ticks con matplotlib (5)
Tengo demasiados tics en mi gráfica y se topan entre sí. ¿Cómo puedo reducir el número de tics? Por ejemplo, tengo tics:
1E-6, 1E-5, 1E-4, ... 1E6, 1E7
y solo quiero
1E-5, 1E-3, ... 1E5, 1E7
He intentado jugar con el LogLocator, pero no he sido capaz de resolver esto. Sugerencias?
¡Gracias!
Alternativamente, si simplemente desea establecer el número de ticks mientras permite que matplotlib los coloque (actualmente solo con MaxNLocator
), hay pyplot.locator_params
,
pyplot.locator_params(nbins=4)
Puede especificar un eje específico en este método como se menciona a continuación, el valor predeterminado es ambos:
# To specify the number of ticks on both or any single axes
pyplot.locator_params(axis=''y'', nbins=6)
pyplot.locator_params(axis=''x'', nbins=10)
Cuando se usa una escala de registro, el número de tics principales se puede arreglar con el siguiente comando
import matplotlib.pyplot as plt
....
plt.locator_params(numticks=12)
plt.show()
El valor establecido en numticks
determina el número de tics de eje que se mostrarán.
Créditos a la publicación de @ bgamari para introducir la función locator_params()
, pero el parámetro nticks
arroja un error cuando se usa una escala de registro.
Hay una función set_ticks()
para objetos de eje.
Si alguien sigue obteniendo esta página en los resultados de búsqueda:
fig, ax = plt.subplots()
plt.plot(...)
every_nth = 4
for n, label in enumerate(ax.xaxis.get_ticklabels()):
if n % every_nth != 0:
label.set_visible(False)
en caso de que alguien todavía lo necesite, y como nada aquí realmente funcionó para mí, se me ocurrió una manera muy simple que mantiene la apariencia de la trama generada "tal como está" mientras se fija el número de ticks exactamente N:
import numpy as np
import matplotlib.pyplot as plt
f, ax = plt.subplots()
ax.plot(range(100))
ymin, ymax = ax.get_ylim()
ax.set_yticks(np.round(np.linspace(ymin, ymax, N), 2))