?

Log in

No account? Create an account

August 1st, 2019

pyplot en Julia

Por estos días estuve pegado en un roblema de plot en Julialang utiizando la librería pyplot de python, anteriormente trabajé con otra librería de ploting, pero ahora estoy leyendo el libro Statistics With Julia [DRAFT] de Hayden Klok, Yoni Nazarathy.
El libro está increible, pero tiene algunos problemas, pues seguramente cuando lo escribieron aún utilizaban una versión anterior de pyplot y que ahora hay algunas sentencias deprecadas.
La Actividad 10 “Listing 1.10: Histogram of hailstone sequence lengthsme arrojaba el siguiente error:

┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.
│   caller = top-level scope at none:0
└ @ Core none:0

Erroneamente yo buscaba el problema en la linea 3, pero no, gracias a la ayuda de kristoffer.carlsson en el foro de Julia, al código comenzó a funcionar, pero la corrección se debía hacer en 18 (Thanks Kriss).

Aquí el código:

using PyPlot

function hailLength(x::Int)
   n=0
    while x != 1
        if x % 2 == 0
           x = Int(x/2)
        else
           x = 3x +1
        end
           n += 1
    end
    return n
end

lengths = [hailLength(x0) for x0 in 2:10^7]
plt[:hist](lengths, 1000, normed="true") #deprecated code
plt.hist(lengths, 1000, density="true")
xlabel("Length")
ylabel("Frequency");

Ahora, lo curioso es que el código funciona en la consola REPL, pero en VS Code no funciona, no se por qué, eso lo tengo que averiguar mañana, porque ya es muy tarde hoy.

REPL
julia> using PyPlot

julia> function hailLength(x::Int)
          n=0
          while x != 1
              if x % 2 == 0
                  x = Int(x/2)
              else
                  x = 3x +1
              end
                  n += 1
          end
          return n
      end
hailLength (generic function with 1 method)

julia> lengths = [hailLength(x0) for x0 in 2:10^7]
9999999-element Array{Int64,1}:
  1
  7
  2
  5
  8
16
  3
19
  6
14
  
114
114
114
114
163
163
163
220
145

julia> plt.hist(lengths, 1000, density="true")
([1.46199e-7, 1.46199e-7, 1.46199e-7, 0.0, 1.46199e-7, 2.92398e-7, 0.0, 2.92398e-7, 5.84795e-7, 0.0  …  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.46199e-7], [1.0, 1.684, 2.368, 3.052, 3.736, 4.42, 5.104, 5.788, 6.472, 7.156  …  678.844, 679.528, 680.212, 680.896, 681.58, 682.264, 682.948, 683.632, 684.316, 685.0], PyCall.PyObject[PyObject <matplotlib.patches.Rectangle object at 0x13d954a90>, PyObject <matplotlib.patches.Rectangle object at 0x124e74668>, PyObject <matplotlib.patches.Rectangle object at 0x13d954d68>, PyObject <matplotlib.patches.Rectangle object at 0x13d960400>, PyObject <matplotlib.patches.Rectangle object at 0x13d960748>, PyObject <matplotlib.patches.Rectangle object at 0x13d960a90>, PyObject <matplotlib.patches.Rectangle object at 0x13d960dd8>, PyObject <matplotlib.patches.Rectangle object at 0x13d960ef0>, PyObject <matplotlib.patches.Rectangle object at 0x13d96b4a8>, PyObject <matplotlib.patches.Rectangle object at 0x13d96b7f0>  …  PyObject <matplotlib.patches.Rectangle object at 0x14737ddd8>, PyObject <matplotlib.patches.Rectangle object at 0x14737def0>, PyObject <matplotlib.patches.Rectangle object at 0x1473884a8>, PyObject <matplotlib.patches.Rectangle object at 0x1473887f0>, PyObject <matplotlib.patches.Rectangle object at 0x147388b38>, PyObject <matplotlib.patches.Rectangle object at 0x147388e80>, PyObject <matplotlib.patches.Rectangle object at 0x147388f98>, PyObject <matplotlib.patches.Rectangle object at 0x147392550>, PyObject <matplotlib.patches.Rectangle object at 0x147392898>, PyObject <matplotlib.patches.Rectangle object at 0x147392be0>])

julia> xlabel("Length")
PyObject Text(0.5, 23.52222222222222, 'Length')

julia> ylabel("Frequency");

julia>

Perfil

deoxyt2
Juan Rodrigo Anabalón R.
Website

Acerca de mi

He estado escribiendo sobre temas de seguridad en Livejournal desde el 2008 y en mi horrible y extinto MSN Spaces desde el 2006. En la actualidad, soy CISO en MonkeysLab y Presidente en ISSA Chile.




MonkeysLab




Copyleft

Copyleft: Atribuir con enlace.







Flickr


ISSA Chile



contador de visitas


contadores gratis

Último mes

September 2019
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Tags

Powered by LiveJournal.com
Designed by Lilia Ahner