Не допускайте нахождения осей в научной нотации (степени 10), используя matplotlib в Python на графике полулогии

Я читал здесь ( Как предотвратить изменение чисел в экспоненциальной форме на рисунке Python Matplotlib) и здесь ( Matplotlib: отключить степени десяти в лог-графике) и пробовал их решения безрезультатно.

Как я могу преобразовать свою ось Y, чтобы отображать нормальные десятичные числа вместо научных обозначений? Обратите внимание, что это Python 3.5.2.

введите описание изображения здесь

Вот мой код:

#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()

1 ответ

Как вы хотите отобразить 10^15? Как 1000000000000000?! Другой ответ относится к форматеру по умолчанию, когда вы переключаетесь на LogFormatter используется который имеет другой набор правил. Вы можете переключиться обратно на ScalarFormatter и отключить смещение

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()

пример вывода

Смотрите http://matplotlib.org/api/ticker_api.html для всех доступных Formatter классы.

(это изображение создается из ветки 2.x, но должно работать на всех последних версиях mpl)

Другие вопросы по тегам