我在Python中使用Matplotlib绘制简单的xy数据集。这会生成漂亮的图形,尽管当我使用“图形视图”(执行时出现plt.show()
)在绘图图形的各个部分上“放大”得太近时,x轴值也会从标准数字格式(1050、1060, 1070等)转换为具有指数符号的科学形式(例如x,x轴标记为的1、1.5、2.0 +1.057e3
)。
我希望我的图形保留轴的简单编号,而不要使用指数形式。有没有一种方法可以强制Matplotlib执行此操作?
Answers:
刻度标签的格式由一个Formatter
对象控制ScalerFormatter
,默认情况下,假设您没有做任何花哨的操作,它将成为。如果可见值的分数变化很小,则此格式化程序将使用恒定移位。为了避免这种情况,只需将其关闭:
plt.plot(arange(0,100,10) + 1000, arange(0,100,10))
ax = plt.gca()
ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.draw()
如果您想避免普遍采用科学计数法,
ax.get_xaxis().get_major_formatter().set_scientific(False)
可以通过axes.formatter.useoffset
rcparam全局控制。
axes.formatter.useoffset
rcparam
您可以使用类似:
from matplotlib.ticker import ScalarFormatter, FormatStrFormatter
ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))
AttributeError: 'LogFormatterSciNotation' object has no attribute 'set_scientific'