def __call__(self, x, pos=None): locs = [abs(y) for y in self.locs if abs(y) != 0] if locs and max(locs) / min(locs) <= 10000: _, exponent = _help_format_sci(max(locs), 2) div = 10 ** exponent for dig in range(3): digs = [abs((int((elem / div) * 10 ** dig) - (elem / div) * 10 ** dig)) for elem in self.locs] if max(digs) < 0.001: self.fmt = "%%.%df" % dig break else: self.fmt = "%%.%df" % self.digs if self.set_label_fun and self.label_template: prefix = si_exp_to_prefixes.get(exponent, "q") if prefix == "q": prefix = "" div = 1 self.fmt = "%%.%de" % self.digs xlabel = self.label_template % dict(prefix=prefix, powerprefix=exponent) self.set_label_fun(xlabel) return FormatStrFormatter.__call__(self, x / div, pos) else: self.engfmt.locs = self.locs return self.engfmt(x, pos)
def __call__(self, x, pos=None): locs = [abs(y) for y in self.locs if abs(y) != 0] if locs and max(locs) / min(locs) <= 10000: _, exponent = _help_format_sci(max(locs), 2) div = 10**exponent for dig in range(3): digs = [ abs((int((elem / div) * 10**dig) - (elem / div) * 10**dig)) for elem in self.locs ] if max(digs) < 0.001: self.fmt = "%%.%df" % dig break else: self.fmt = "%%.%df" % self.digs if self.set_label_fun and self.label_template: prefix = si_exp_to_prefixes.get(exponent, "q") if prefix == "q": prefix = "" div = 1 self.fmt = "%%.%de" % self.digs xlabel = self.label_template % dict(prefix=prefix, powerprefix=exponent) self.set_label_fun(xlabel) return FormatStrFormatter.__call__(self, x / div, pos) else: self.engfmt.locs = self.locs return self.engfmt(x, pos)
def __call__(self, x, pos=None): div = 1 prefix = "" for dig in range(3): digs = [abs((int((elem / div) * 10 ** dig) - (elem / div) * 10 ** dig)) for elem in self.locs] if max(digs) < 0.001: self.fmt = "%%.%df" % dig break else: self.fmt = "%.3f" if self.set_label_fun and self.label_template: xlabel = self.label_template % dict(prefix=prefix) self.set_label_fun(xlabel) return FormatStrFormatter.__call__(self, x / div, pos)
def __call__(self, x, pos=None): div = 1 prefix = "" for dig in range(3): digs = [ abs((int((elem / div) * 10**dig) - (elem / div) * 10**dig)) for elem in self.locs ] if max(digs) < 0.001: self.fmt = "%%.%df" % dig break else: self.fmt = "%.3f" if self.set_label_fun and self.label_template: xlabel = self.label_template % dict(prefix=prefix) self.set_label_fun(xlabel) return FormatStrFormatter.__call__(self, x / div, pos)
def __call__(self, v, i=0): return FormatStrFormatter.__call__(self, v*self._factor, i)