Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/03/2013, 18:51
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Mostrar números eje x

A mi no me marco error.

Ni con el código que pusiste.

Ni con la modificación que le hice.

Código Python:
Ver original
  1. from __future__ import unicode_literals
  2.  
  3. import numpy as np
  4. from numpy import ma
  5. from matplotlib import scale as mscale
  6. from matplotlib import transforms as mtransforms
  7. from matplotlib.ticker import Formatter, FixedLocator
  8.  
  9. class EscalaAcumuladaGumbel(mscale.ScaleBase):
  10.  
  11.     name = 'gumbel'
  12.  
  13.     def __init__(self, axis, **kwargs):
  14.         mscale.ScaleBase.__init__(self)
  15.         thresh = kwargs.pop("thresh", 5000)
  16.         if thresh >= 5800.0:
  17.             raise ValueError("thresh must be less than 5800")
  18.         self.thresh = thresh
  19.  
  20.     def get_transform(self):
  21.         return self.TransformacionAcumuladaGumbel(self.thresh)
  22.  
  23.     def set_default_locators_and_formatters(self, axis):
  24.         class DegreeFormatter(Formatter):
  25.             def __call__(self, x, pos=None):
  26.                 # \u0025 : simbolo %
  27.                 return "%d%%" % (x*1.0)
  28.         axis.set_major_locator(FixedLocator(np.arange(-3.0, 3.0, 0.25)))
  29.         axis.set_major_formatter(DegreeFormatter())
  30.         axis.set_minor_formatter(DegreeFormatter())
  31.  
  32.     def limit_range_for_scale(self, vmin, vmax, minpos):
  33.         return max(vmin, -self.thresh), min(vmax, self.thresh)
  34.  
  35.     class TransformacionAcumuladaGumbel(mtransforms.Transform):
  36.         input_dims = 1
  37.         output_dims = 1
  38.         is_separable = True
  39.  
  40.         def __init__(self, thresh):
  41.             mtransforms.Transform.__init__(self)
  42.             self.thresh = thresh
  43.  
  44.         def transform(self, a):
  45.             masked = ma.masked_where((a < -self.thresh) | (a > self.thresh), a)
  46.             if masked.mask.any():
  47.                 return ma.exp(-np.exp(-a))
  48.             else:
  49.                 return np.exp(-np.exp(-a))
  50.  
  51.         def inverted(self):
  52.             return EscalaAcumuladaGumbel.TransformacionInversaAcumuladaGumbel(self.thresh)
  53.  
  54.     class TransformacionInversaAcumuladaGumbel(mtransforms.Transform):
  55.         input_dims = 1
  56.         output_dims = 1
  57.         is_separable = True
  58.  
  59.         def __init__(self, thresh):
  60.             mtransforms.Transform.__init__(self)
  61.             self.thresh = thresh
  62.  
  63.         def transform(self, a):
  64.             return -np.log(-np.log(a))
  65.  
  66.         def inverted(self):
  67.             return EscalaAcumuladaGumbel.TransformacionAcumuladaGumbel(self.thresh)
  68.  
  69. mscale.register_scale(EscalaAcumuladaGumbel)
  70.  
  71.  
  72. if __name__ == '__main__':
  73.     import matplotlib.pyplot as plt
  74.  
  75.     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, ])
  76.     DatosOrdenados = np.sort(Datos)
  77.     mu = 2353.157
  78.     sigma = 297.961
  79.  
  80.     x1 = ( DatosOrdenados - mu) / sigma
  81.     y1 = (np.exp(-np.exp(-x1)))
  82.  
  83.     plt.plot(x1, y1, 'ro', lw=2)
  84.     plt.gca().set_xscale('gumbel')
  85.  
  86.     plt.xlabel('F(z)')
  87.     plt.ylabel('z')
  88.     plt.title('Papel de probabilidad de Gumbel')
  89.     plt.grid(True)
  90.  
  91.     plt.show()

Estoy usando python 2.7