Al fin después de tanto luchar ya hallamos la solución de este enigma que tantos usuarios de este sitio presentan. Si tienes algún detalle que aportar no dejes de compartir tu información.
Una posible solución puede ser subclasificar el ScalarFormatter
y corrija el orden de magnitud como en esta pregunta: establezca notación científica con exponente fijo y dígitos significativos para múltiples subparcelas
Luego llamaría a este formateador con el orden de magnitud como argumento order
, OOMFormatter(-2, mathText=False)
. mathText
se establece en false para obtener la notación de la pregunta, es decir
mientras lo establece en True, daría .
A continuación, puede configurar el formateador en la barra de colores a través de la barra de colores. format
argumento.
import numpy as np; np.random.seed(0)
import matplotlib.pyplot as plt
import matplotlib.ticker
class OOMFormatter(matplotlib.ticker.ScalarFormatter):
def __init__(self, order=0, fformat="%1.1f", offset=True, mathText=True):
self.oom = order
self.fformat = fformat
matplotlib.ticker.ScalarFormatter.__init__(self,useOffset=offset,useMathText=mathText)
def _set_order_of_magnitude(self):
self.orderOfMagnitude = self.oom
def _set_format(self, vmin=None, vmax=None):
self.format = self.fformat
if self._useMathText:
self.format = r'$mathdefault%s$' % self.format
z = (np.random.random((10,10)) - 0.5) * 0.2
fig, ax = plt.subplots()
plot = ax.contourf(z)
cbar = fig.colorbar(plot, format=OOMFormatter(-2, mathText=False))
plt.show()
Para las versiones de matplotlib <3.1, la clase debe verse así:
class OOMFormatter(matplotlib.ticker.ScalarFormatter):
def __init__(self, order=0, fformat="%1.1f", offset=True, mathText=True):
self.oom = order
self.fformat = fformat
matplotlib.ticker.ScalarFormatter.__init__(self,useOffset=offset,useMathText=mathText)
def _set_orderOfMagnitude(self, nothing):
self.orderOfMagnitude = self.oom
def _set_format(self, vmin, vmax):
self.format = self.fformat
if self._useMathText:
self.format = '$%s$' % matplotlib.ticker._mathdefault(self.format)
Al final de todo puedes encontrar los informes de otros creadores, tú igualmente tienes el poder mostrar el tuyo si lo crees conveniente.