ticklabel_format - ticks python
Evite que los ejes estén en notación científica(potencias de 10) usando matplotlib en Python en el diagrama de semilogía (1)
¿Cómo quieres mostrar 10^15
? Como 1000000000000000
?! La otra respuesta se aplica al formateador predeterminado, cuando cambia a la escala de registro, se utiliza un LogFormatter
que tiene un conjunto diferente de reglas. Puede volver a ScalarFormatter
y desactivar el desplazamiento
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
plt.ion()
possible_chars = 94
max_length = 8
pw_possibilities = []
for num_chars in range(1, max_length+1):
pw_possibilities.append(possible_chars**num_chars)
x = range(1, max_length+1)
y = pw_possibilities
#plot
fig, ax = plt.subplots()
ax.semilogy(x, y, ''o-'')
ax.set_xlabel("num chars in password")
ax.set_ylabel("number of password possibilities")
ax.set_title("password (PW) possibilities verses # chars in PW")
ax.yaxis.set_major_formatter(mticker.ScalarFormatter())
ax.yaxis.get_major_formatter().set_scientific(False)
ax.yaxis.get_major_formatter().set_useOffset(False)
fig.tight_layout()
plt.show()
Consulte http://matplotlib.org/api/ticker_api.html para ver todas las clases de Formatter
disponibles.
(esta imagen se genera fuera de la rama 2.x, pero debería funcionar en todas las versiones recientes de mpl)
He leído aquí ( Cómo evitar que los números cambien a forma exponencial en la figura de Matplotlib de Python ) y aquí ( Matplotlib: deshabilite las potencias de diez en el gráfico de registro ) y probé sus soluciones en vano.
¿Cómo puedo convertir mi eje y para mostrar números decimales normales en lugar de notación científica? Tenga en cuenta que esto es Python 3.5.2.
Aquí está mi código:
#Imports:
import matplotlib.pyplot as plt
possible_chars = 94
max_length = 8
pw_possibilities = []
for num_chars in range(1, max_length+1):
pw_possibilities.append(possible_chars**num_chars)
x = range(1, max_length+1)
y = pw_possibilities
#plot
plt.figure()
plt.semilogy(x, y, ''o-'')
plt.xlabel("num chars in password")
plt.ylabel("number of password possibilities")
plt.title("password (PW) possibilities verses # chars in PW")
plt.show()