我正在使用matplot lib绘制一些曲线,并将x轴设置为对数比例。我想出了如何从set ticks with logarithmic scale设置自定义刻度线:
import matplotlib
from matplotlib import pyplot as plt
ax = plt.gca()
ax.set_xscale('log')
ax.set_xticks([0.001, 0.003, 0.010, 0.033, 0.10, 0.33, 1.0, 3.3, 10.0, 33.0, 100.0])
ax.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
ax.get_xaxis().set_tick_params(which='minor', size=0, width=0)
plt.savefig('logscale.png')
plt.close()
此代码产生以下图:
如您所见,最左边的两个刻度是0.00
,而不是应有的0.001
和0.003
。如何格式化这些格式以在小数点后显示更多数字?
答案 0 :(得分:2)
ScalarFormatter
自动确定要显示的有效数字位数。这是最经常需要的。但是,ScalarFormatter
并未进行优化以用于对数刻度。因此,在这种情况下将失败。
因为在这里,我们无论如何都不需要ScalarFormatter
的很多功能,我们可以选择使用StrMethodFormatter
。对于三位数,请使用例如
matplotlib.ticker.StrMethodFormatter("{x:1.3f}")