Prevent axes from being in scientific notation (powers of 10) using matplotlib in Python on semilogy plot

三世轮回 提交于 2019-11-29 16:11:28

How do you want to display 10^15? As 1000000000000000 ?! The other answer applies to the default formatter, when you switch to log scale a LogFormatter is used which has a different set of rules. You can switch back to ScalarFormatter and disable the offset

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

See http://matplotlib.org/api/ticker_api.html for all of the available Formatter classes.

(this image is generated off of the 2.x branch, but should work on all recent version of mpl)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!