我想绘制一个没有科学记数法的对数刻度图。
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.plot(np.arange(0,10,0.1))
plt.xscale('log')
plt.yscale('log')
plt.xlim(0.1,100)
plt.ylim(1,10)
plt.gca().xaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
plt.gca().yaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
plt.show()
问题:
最佳答案
<强>1。摆脱科学记数法。
刻度是主要刻度和次要刻度,因此您还需要设置次要格式化程序:
plt.gca().yaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
plt.gca().yaxis.set_minor_formatter(mpl.ticker.ScalarFormatter())
<强>2。在特定的自定义位置显示刻度
摆脱次要的刻度标签允许 yticks
按预期工作。
plt.yticks([1,10])
plt.gca().yaxis.set_minor_formatter(mpl.ticker.NullFormatter())
<强>3。去掉小数点
我想去掉像 0.1
这样的标签的小数点是没有意义的。因此,人们可能会选择具有g通用数字格式g
的StrMethodFormatter
。
plt.gca().yaxis.set_major_formatter(mpl.ticker.StrMethodFormatter("{x:g}"))
关于python - 如何设置 x&y 轴的对数刻度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51827536/