29/03/2013, 20:32
|
| | Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 4 meses Puntos: 0 | |
Respuesta: Mostrar números eje x No sabia que se podia usar "%d%%", en el eje x mostraba el 0 debido a que los valores eran menores a 1, se aumentaron lineas para rotar los numeros y mostrarlos con 3 decimales.
Gracias por responder.
Código:
from __future__ import unicode_literals
import numpy as np
from numpy import ma
from matplotlib import scale as mscale
from matplotlib import transforms as mtransforms
from matplotlib.ticker import Formatter, FixedLocator, FuncFormatter
class EscalaAcumuladaGumbel(mscale.ScaleBase):
name = 'gumbel'
def __init__(self, axis, **kwargs):
mscale.ScaleBase.__init__(self)
thresh = kwargs.pop("thresh", 5000)
if thresh >= 5800.0:
raise ValueError("thresh must be less than 5800")
self.thresh = thresh
def get_transform(self):
return self.TransformacionAcumuladaGumbel(self.thresh)
def set_default_locators_and_formatters(self, axis):
class DegreeFormatter(Formatter):
def __call__(self, x, pos=None):
# \u0025 : simbolo %
return "%d%%" % (x*0.02)
axis.set_major_locator(FixedLocator(np.arange(0.0, 1.0, 0.02)))
axis.set_major_formatter(DegreeFormatter())
axis.set_minor_formatter(DegreeFormatter())
def limit_range_for_scale(self, vmin, vmax, minpos):
return max(vmin, -self.thresh), min(vmax, self.thresh)
class TransformacionAcumuladaGumbel(mtransforms.Transform):
input_dims = 1
output_dims = 1
is_separable = True
def __init__(self, thresh):
mtransforms.Transform.__init__(self)
self.thresh = thresh
def transform(self, a):
masked = ma.masked_where((a < -self.thresh) | (a > self.thresh), a)
if masked.mask.any():
return ma.exp(-np.exp(-a))
else:
return np.exp(-np.exp(-a))
def inverted(self):
return EscalaAcumuladaGumbel.TransformacionInversaAcumuladaGumbel(self.thresh)
class TransformacionInversaAcumuladaGumbel(mtransforms.Transform):
input_dims = 1
output_dims = 1
is_separable = True
def __init__(self, thresh):
mtransforms.Transform.__init__(self)
self.thresh = thresh
def transform(self, a):
return -np.log(-np.log(a))
def inverted(self):
return EscalaAcumuladaGumbel.TransformacionAcumuladaGumbel(self.thresh)
mscale.register_scale(EscalaAcumuladaGumbel)
if __name__ == '__main__':
import matplotlib.pyplot as plt
Datos = np.array([ 2690.0, 2700.0, 2700.667, 2701.333, 2702.0, 3196.0, 2372.0, 2395.0, 2128.0, 2727.0, 2431.0, 2850.0, 2216.0, 2057.0, 2269.0, 2208.0, 2628.0, 2729.0, 2588.0, 3448.0, 2508.0, 3081.0, 2417.0, 2770.0, 2283.0, 2455.0, 1963.0, 2786.0, 2885.0, 2357.0, 3422.0, 2423.0, 2148.0, 1305.0, 2472.0, 2186.0, 2720.0, 2430.0, 2304.0, 2556.0, 2625.0, 2164.0, 2585.0, ])
DatosOrdenados = np.sort(Datos)
mu = 2353.157
sigma = 297.961
y1 = ( DatosOrdenados - mu) / sigma
x1 = np.exp(-np.exp(-y1))
plt.plot(x1, y1, 'ro', lw=2)
plt.gca().set_xscale('gumbel')
plt.xlabel('F(z)')
plt.ylabel('z')
plt.title('Papel de probabilidad de Gumbel')
plt.xticks(rotation='vertical', fontsize=7)
def form3(x, pos):
return '%.3f' % x
formatter = FuncFormatter(form3)
plt.gca().xaxis.set_major_formatter(FuncFormatter(formatter))
plt.grid(True)
plt.show()
Última edición por Bael_Balzac; 29/03/2013 a las 21:58 |