标量格式化器支持收集指数,文档如下: class matplotlib.ticker.ScalarFormatter(useOffset=True,useMathText=False,useLocale=None)基础:matplotlib.ticker.Formatter 刻度位置是一个普通的旧数字。如果useOffset==True且数据范围远小于数据平均值,则将确定偏移量,以便刻度标签有意义。科学计数法用于data〈10^-n或data〉= 10^m,其中n和m是使用set_powerlimits设置的功率限制((n,m))。它们的默认值由axes.formatter.limits rc参数控制。 你的技巧是
from matplotlib.ticker import ScalarFormatter
xfmt = ScalarFormatter()
xfmt.set_powerlimits((-3,3)) # Or whatever your limits are . . .
{{ Make your plot }}
gca().xaxis.set_major_formatter(xfmt)
4条答案
按热度按时间q9yhzks01#
尝试使用
matplotlib.pyplot.ticklabel_format
:这将科学计数法(即
a x 10^b
)应用于x轴刻度线nsc4cvqm2#
这并不是回答你原来的问题,而是回答你在问题中提出的一个问题。
一个小小的序言,这样我的命名就不会显得奇怪了:
如前所述,你可以使用ticklabel_format来指定matplotlib应该使用科学记数法来表示大值或小值:
你可以使用rcParams中的标志(来自matplotlib import rcParams)或者直接设置它们来改变它的显示方式。我还没有找到比在'1 e'和'x10^'科学记数法之间转换更优雅的方法:
这应该会给予你更多的Matlab-esc,而且确实可以说是更好的外观。我认为下面应该做同样的事情:
ruarlubt3#
标量格式化器支持收集指数,文档如下:
class matplotlib.ticker.ScalarFormatter(useOffset=True,useMathText=False,useLocale=None)基础:matplotlib.ticker.Formatter
刻度位置是一个普通的旧数字。如果useOffset==True且数据范围远小于数据平均值,则将确定偏移量,以便刻度标签有意义。科学计数法用于data〈10^-n或data〉= 10^m,其中n和m是使用set_powerlimits设置的功率限制((n,m))。它们的默认值由axes.formatter.limits rc参数控制。
你的技巧是
要获得以
x10^5
显示的指数,请使用useMathText=True
示例化ScalarFormatter。您还可以用途:
要得到这样的结果:
hs1ihplo4#
我找到了一个简单的解决办法