在这个小例子中考虑y刻度:
import matplotlib.pyplot as plt
plt.plot([200,400,600,800])
plt.ticklabel_format(axis='y',style='sci',scilimits=(0,0))
plt.show()
我希望y刻度标签有一个十进制的固定格式,即1.0
而不是1
,等等。我怎么能这样做,同时保持科学记数法的指数情节的顶部?
到目前为止我找到的所有解决方案(大多数使用FormatStrFormatter
代替ScalarFormatter
)都会在所有刻度标签上重复指数,例如1.0e2
,2.0e2
等等,这不是我想要的。
提前谢谢你。
答案 0 :(得分:1)
我刚刚找到了解决方案。在这里:
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
class ScalarFormatterForceFormat(ScalarFormatter):
def _set_format(self,vmin,vmax): # Override function that finds format to use.
self.format = "%1.1f" # Give format here
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot([200,400,600,800])
yfmt = ScalarFormatterForceFormat()
yfmt.set_powerlimits((0,0))
ax.yaxis.set_major_formatter(yfmt)
plt.show()
它基于this answer在另一个主题上。