Re: [Matplotlib-users] Plotting style

2015-03-10 Thread Marin GILLES

Le 06/03/2015 22:42, Marin GILLES a écrit :

This package is indeeed pretty nice, and I will surely take a look 
into it, but the way styles are added does not seem quite practical or 
shareable.
In my opinion, having a style file for each paper makes things more 
flexible, although this package may get more control out of the box.
Also, not being built-in makes you install an other package, and I 
think some people either do not want to do it, nor know how to do it.


On an other topic, I started working on some of the features you 
wanted to integrate with your PR 
https://github.com/matplotlib/matplotlib/pull/2702. I guessed that 
when you talked about adding the |set_ticks_location| to the rcParams, 
you wanted to control whether the ticks are in or out of the axes box?


Finally, I added a |style| parameter to the rcParams. It lets you 
choose from your |matplotlibrc| which style you want to use. On top of 
that, I made it recursive, so that you can design a style directly 
from other styles.
The only thing I could not get to work was to have your style loading 
directly when importing matplotlib (when defining from your rc file). 
You actually have to import the |matplotlib.style| lib to get your rc 
defined style to load up.


I will continue working on the other features described in olga’s PR 
https://github.com/matplotlib/matplotlib/pull/2702 before submitting 
one on my own. But if you want to take a look, and tell me how I can 
improve what I did, you can find it on my repo 
https://github.com/Mrngilles/matplotlib.


Thanks
Marin

Le 06/03/2015 22:18, Olga Botvinnik a écrit :

There's also the plotsettings package which makes it easy to switch 
between styles required by different papers.


https://pypi.python.org/pypi/plotsettings

On Wed, Mar 4, 2015 at 1:29 PM Marin GILLES mrngil...@gmail.com 
mailto:mrngil...@gmail.com wrote:


Le 04/03/2015 06:21, Tony Yu a écrit :

On Tue, Mar 3, 2015 at 11:50 AM, Gökhan Sever
gokhanse...@gmail.com mailto:gokhanse...@gmail.com wrote:

I see seaborn has paper, notebook, talk, and poster options.
http://stanford.edu/~mwaskom/software/seaborn-dev/aesthetics.html
http://stanford.edu/%7Emwaskom/software/seaborn-dev/aesthetics.html
Apperantly he scales each parameter to get modified views.
This would be a good addition for any of the styles
available in matplotlib.


A similar pattern with `matplotlib.style` would use chained
stylesheets. The idea would be to make stylesheets either
aesthetics focused or layout focused. By aesthetics, I mean
things like colors and marker shape, and by layout, I mean
things like default figure size, figure padding, font size, etc.
Then you can easily have a style that defines the general
aesthetics and easily modify it for papers, talks, etc.

Here's an example from `mpltools`, but the same syntax applies
to the `style` module in `matplotlib`:


http://tonysyu.github.io/mpltools/auto_examples/style/plot_multiple_styles.html

(PoF = Physics of Fluids journal; IIRC I think I have some
personal stylesheets that take the normal two-column figure
layout and convert it to a full-page layout.)

-Tony


On Tue, Mar 3, 2015 at 12:35 PM, Marin GILLES
mrngil...@gmail.com mailto:mrngil...@gmail.com wrote:

Le 03/03/2015 18:15, Gökhan Sever a écrit :



On Tue, Mar 3, 2015 at 12:07 PM, Marin GILLES
mrngil...@gmail.com mailto:mrngil...@gmail.com wrote:




Sure, I'll be careful about that.
I'm going to go try and design some new interesting
ones.
Maybe adding some styles specific to some plot
types could be useful.
Also some styles specific for some applications
(geoscience, biology)?
If you have any other ideas, please let me know.

-- 
*Marin GILLES*



It would be good to have styles for paper and
presentation modes. The former would have smaller
ticks, labels, linewidths, other axis elements that
goes into a journal publication, while the latter with
much magnified elements to be clearly visible on a
screen from the back of a room.

Indeed it would be a very good idea.
I've seen that already in the seaborn lib I guess.

-- 
*Marin GILLES*

/PhD student CNRS
/ /Laboratoire Interdisciplinaire Carnot de Bourgogne (ICB)
UMR 6303 CNRS - Université de Bourgogne
9 av Alain Savary, BP 47870
21078, Dijon (France)
/ ☎ (+33)6.79.35.30.11 tel:%28%2B33%296.79.35.30.11
✉ marin.gil...@u-bourgogne.fr
mailto:marin.gil...@u-bourgogne.fr




-- 
Gökhan




Re: [Matplotlib-users] Lorenz - solution

2015-03-10 Thread Prahas David Nafissian
I think you need to ask Jake Vanderplas -- the code
is all his!  See the link in the email to get to his blog...

Thanks again!




On Tue, Mar 10, 2015 at 8:49 AM, Benjamin Root ben.r...@ou.edu wrote:
 +1000!!

 Great job! Would you mind if I clean it up a bit and add it to the
 mplot3d/animation gallery? Full credit, of course.


 On Tue, Mar 10, 2015 at 11:30 AM, Prahas David Nafissian
 prahas.mu...@gmail.com wrote:

 Friends,

 I thought you'd like to see the solution.

 Many thanks to Jake Vanderplas for his code and teachings:


 https://jakevdp.github.io/blog/2013/02/16/animating-the-lorentz-system-in-3d/

 If you start a new IP Notebook session, run as your first entry:

 %pylab

 and then copy and paste the text below and run it, you should be good to
 go
 (on a Mac, at least).

 There are several parameters I've changed from his original, and I've
 commented as I've changed.  The original code is at the link above.

 There is one error in his code -- I've documented it below.

 Again, thanks to the community, Jake, and Ben Root.

 --Prahas

 **

 import numpy as np
 from scipy import integrate

 from matplotlib import pyplot as plt
 from mpl_toolkits.mplot3d import Axes3D
 from matplotlib.colors import cnames
 from matplotlib import animation

 # orig value of N_traj was 20 -- very cool this way.

 N_trajectories = 1

 def lorentz_deriv((x, y, z), t0, sigma=10., beta=8./3, rho=28.0):
 Compute the time-derivative of a Lorentz system.
 return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]

 # Choose random starting points, uniformly distributed from -15 to 15

 np.random.seed(1)

 # changing from -15,30 to 10,5 below starts the drawing in the middle,
 # rather than getting the long line from below
 # if using N_Traj  1, return to orig values.

 # x0 = -15 + 30 * np.random.random((N_trajectories, 3))

 x0 = 10 + 5 * np.random.random((N_trajectories, 3))


 # Solve for the trajectories

 # orig values:  0,4,1000
 # 3rd value -- lower it, it gets choppier.
 # 2nd value -- increase it -- more points, but speedier.

 # change middle num from 4 to 15 -- this adds points

 t = np.linspace(0, 40, 3000)
 x_t = np.asarray([integrate.odeint(lorentz_deriv, x0i, t)
   for x0i in x0])

 # Set up figure  3D axis for animation
 fig = plt.figure()
 ax = fig.add_axes([0, 0, 1, 1], projection='3d')

 # changing off to on below adds axises.  slows it down but you
 # can fix that with interval value in the animation call

 ax.axis('on')

 # choose a different color for each trajectory
 colors = plt.cm.jet(np.linspace(0, 1, N_trajectories))

 # set up lines and points -- this is a correction from
 # the orig jake code.  the next four lines...

 lines = [ax.plot([], [], [], '-', c=c)[0]
 for c in colors]
 pts = [ax.plot([], [], [], 'o', c=c)[0]
 for c in colors]

 # prepare the axes limits
 ax.set_xlim((-25, 25))
 ax.set_ylim((-35, 35))
 ax.set_zlim((5, 55))

 # set point-of-view: specified by (altitude degrees, azimuth degrees)
 ax.view_init(30, 0)

 # initialization function: plot the background of each frame
 def init():
 for line, pt in zip(lines, pts):
 line.set_data([], [])
 line.set_3d_properties([])

 pt.set_data([], [])
 pt.set_3d_properties([])
 return lines + pts

 # animation function.  This will be called sequentially with the frame
 number
 def animate(i):
 # we'll step two time-steps per frame.  This leads to nice results.

 i = (2 * i) % x_t.shape[1]

 for line, pt, xi in zip(lines, pts, x_t):
 x, y, z = xi[:i].T
 line.set_data(x, y)
 line.set_3d_properties(z)

 pt.set_data(x[-1:], y[-1:])
 pt.set_3d_properties(z[-1:])

 # changed 0.3 to 0.05 below -- this slows the rotation of the
 view.
 # changed 30 to 20 below
 # changing 20 to (20 + (.1 * i)) rotates on the Z axis.  trippy.

 ax.view_init(10, 0.1 * i)
 # ax.view_init(10, 100)
 fig.canvas.draw()
 return lines + pts

 # instantiate the animator.  I've deleted the blit switch (for Mac)
 # enlarging frames=500 works now -- it failed before because I didn't give
 it
 # enough data -- by changing the t=np.linspace line above I generate
 more points.
 # interval larger slows it down
 # changed inteval from 30 to 200, frames from 500 to 3000

 anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=3000, interval=200)

 # Save as mp4. This requires mplayer or ffmpeg to be installed.
 COMPLEX!
 # Instead, use a screen record program:  Quicktime on the Mac; MS
 Expression Encoder on PC.
 # anim.save('PDNlorentz_attractor.mp4', fps=15, extra_args=['-vcodec',
 'libx264'])

 plt.show()

 


 --
 Dive into the World of Parallel Programming The Go Parallel Website,
 sponsored
 by Intel and developed in partnership with 

Re: [Matplotlib-users] Lorenz - solution

2015-03-10 Thread Prahas David Nafissian
@ Adam -- thanks!

@ Everyone:  given the Lorenz code shared, is there a way
to generate a log file of the x,y,z points generated?

Thanks in advance.

--Prahas




On Tue, Mar 10, 2015 at 8:59 AM, Adam Hughes hughesada...@gmail.com wrote:
 That's pretty swag!

 On Tue, Mar 10, 2015 at 11:49 AM, Benjamin Root ben.r...@ou.edu wrote:

 +1000!!

 Great job! Would you mind if I clean it up a bit and add it to the
 mplot3d/animation gallery? Full credit, of course.


 On Tue, Mar 10, 2015 at 11:30 AM, Prahas David Nafissian
 prahas.mu...@gmail.com wrote:

 Friends,

 I thought you'd like to see the solution.

 Many thanks to Jake Vanderplas for his code and teachings:


 https://jakevdp.github.io/blog/2013/02/16/animating-the-lorentz-system-in-3d/

 If you start a new IP Notebook session, run as your first entry:

 %pylab

 and then copy and paste the text below and run it, you should be good to
 go
 (on a Mac, at least).

 There are several parameters I've changed from his original, and I've
 commented as I've changed.  The original code is at the link above.

 There is one error in his code -- I've documented it below.

 Again, thanks to the community, Jake, and Ben Root.

 --Prahas

 **

 import numpy as np
 from scipy import integrate

 from matplotlib import pyplot as plt
 from mpl_toolkits.mplot3d import Axes3D
 from matplotlib.colors import cnames
 from matplotlib import animation

 # orig value of N_traj was 20 -- very cool this way.

 N_trajectories = 1

 def lorentz_deriv((x, y, z), t0, sigma=10., beta=8./3, rho=28.0):
 Compute the time-derivative of a Lorentz system.
 return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]

 # Choose random starting points, uniformly distributed from -15 to 15

 np.random.seed(1)

 # changing from -15,30 to 10,5 below starts the drawing in the middle,
 # rather than getting the long line from below
 # if using N_Traj  1, return to orig values.

 # x0 = -15 + 30 * np.random.random((N_trajectories, 3))

 x0 = 10 + 5 * np.random.random((N_trajectories, 3))


 # Solve for the trajectories

 # orig values:  0,4,1000
 # 3rd value -- lower it, it gets choppier.
 # 2nd value -- increase it -- more points, but speedier.

 # change middle num from 4 to 15 -- this adds points

 t = np.linspace(0, 40, 3000)
 x_t = np.asarray([integrate.odeint(lorentz_deriv, x0i, t)
   for x0i in x0])

 # Set up figure  3D axis for animation
 fig = plt.figure()
 ax = fig.add_axes([0, 0, 1, 1], projection='3d')

 # changing off to on below adds axises.  slows it down but you
 # can fix that with interval value in the animation call

 ax.axis('on')

 # choose a different color for each trajectory
 colors = plt.cm.jet(np.linspace(0, 1, N_trajectories))

 # set up lines and points -- this is a correction from
 # the orig jake code.  the next four lines...

 lines = [ax.plot([], [], [], '-', c=c)[0]
 for c in colors]
 pts = [ax.plot([], [], [], 'o', c=c)[0]
 for c in colors]

 # prepare the axes limits
 ax.set_xlim((-25, 25))
 ax.set_ylim((-35, 35))
 ax.set_zlim((5, 55))

 # set point-of-view: specified by (altitude degrees, azimuth degrees)
 ax.view_init(30, 0)

 # initialization function: plot the background of each frame
 def init():
 for line, pt in zip(lines, pts):
 line.set_data([], [])
 line.set_3d_properties([])

 pt.set_data([], [])
 pt.set_3d_properties([])
 return lines + pts

 # animation function.  This will be called sequentially with the frame
 number
 def animate(i):
 # we'll step two time-steps per frame.  This leads to nice results.

 i = (2 * i) % x_t.shape[1]

 for line, pt, xi in zip(lines, pts, x_t):
 x, y, z = xi[:i].T
 line.set_data(x, y)
 line.set_3d_properties(z)

 pt.set_data(x[-1:], y[-1:])
 pt.set_3d_properties(z[-1:])

 # changed 0.3 to 0.05 below -- this slows the rotation of the
 view.
 # changed 30 to 20 below
 # changing 20 to (20 + (.1 * i)) rotates on the Z axis.  trippy.

 ax.view_init(10, 0.1 * i)
 # ax.view_init(10, 100)
 fig.canvas.draw()
 return lines + pts

 # instantiate the animator.  I've deleted the blit switch (for Mac)
 # enlarging frames=500 works now -- it failed before because I didn't
 give it
 # enough data -- by changing the t=np.linspace line above I generate
 more points.
 # interval larger slows it down
 # changed inteval from 30 to 200, frames from 500 to 3000

 anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=3000, interval=200)

 # Save as mp4. This requires mplayer or ffmpeg to be installed.
 COMPLEX!
 # Instead, use a screen record program:  Quicktime on the Mac; MS
 Expression Encoder on PC.
 # anim.save('PDNlorentz_attractor.mp4', fps=15, extra_args=['-vcodec',
 'libx264'])

 plt.show()

 


 

Re: [Matplotlib-users] Lorenz - solution

2015-03-10 Thread Benjamin Root
+1000!!

Great job! Would you mind if I clean it up a bit and add it to the
mplot3d/animation gallery? Full credit, of course.


On Tue, Mar 10, 2015 at 11:30 AM, Prahas David Nafissian 
prahas.mu...@gmail.com wrote:

 Friends,

 I thought you'd like to see the solution.

 Many thanks to Jake Vanderplas for his code and teachings:


 https://jakevdp.github.io/blog/2013/02/16/animating-the-lorentz-system-in-3d/

 If you start a new IP Notebook session, run as your first entry:

 %pylab

 and then copy and paste the text below and run it, you should be good to go
 (on a Mac, at least).

 There are several parameters I've changed from his original, and I've
 commented as I've changed.  The original code is at the link above.

 There is one error in his code -- I've documented it below.

 Again, thanks to the community, Jake, and Ben Root.

 --Prahas

 **

 import numpy as np
 from scipy import integrate

 from matplotlib import pyplot as plt
 from mpl_toolkits.mplot3d import Axes3D
 from matplotlib.colors import cnames
 from matplotlib import animation

 # orig value of N_traj was 20 -- very cool this way.

 N_trajectories = 1

 def lorentz_deriv((x, y, z), t0, sigma=10., beta=8./3, rho=28.0):
 Compute the time-derivative of a Lorentz system.
 return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]

 # Choose random starting points, uniformly distributed from -15 to 15

 np.random.seed(1)

 # changing from -15,30 to 10,5 below starts the drawing in the middle,
 # rather than getting the long line from below
 # if using N_Traj  1, return to orig values.

 # x0 = -15 + 30 * np.random.random((N_trajectories, 3))

 x0 = 10 + 5 * np.random.random((N_trajectories, 3))


 # Solve for the trajectories

 # orig values:  0,4,1000
 # 3rd value -- lower it, it gets choppier.
 # 2nd value -- increase it -- more points, but speedier.

 # change middle num from 4 to 15 -- this adds points

 t = np.linspace(0, 40, 3000)
 x_t = np.asarray([integrate.odeint(lorentz_deriv, x0i, t)
   for x0i in x0])

 # Set up figure  3D axis for animation
 fig = plt.figure()
 ax = fig.add_axes([0, 0, 1, 1], projection='3d')

 # changing off to on below adds axises.  slows it down but you
 # can fix that with interval value in the animation call

 ax.axis('on')

 # choose a different color for each trajectory
 colors = plt.cm.jet(np.linspace(0, 1, N_trajectories))

 # set up lines and points -- this is a correction from
 # the orig jake code.  the next four lines...

 lines = [ax.plot([], [], [], '-', c=c)[0]
 for c in colors]
 pts = [ax.plot([], [], [], 'o', c=c)[0]
 for c in colors]

 # prepare the axes limits
 ax.set_xlim((-25, 25))
 ax.set_ylim((-35, 35))
 ax.set_zlim((5, 55))

 # set point-of-view: specified by (altitude degrees, azimuth degrees)
 ax.view_init(30, 0)

 # initialization function: plot the background of each frame
 def init():
 for line, pt in zip(lines, pts):
 line.set_data([], [])
 line.set_3d_properties([])

 pt.set_data([], [])
 pt.set_3d_properties([])
 return lines + pts

 # animation function.  This will be called sequentially with the frame
 number
 def animate(i):
 # we'll step two time-steps per frame.  This leads to nice results.

 i = (2 * i) % x_t.shape[1]

 for line, pt, xi in zip(lines, pts, x_t):
 x, y, z = xi[:i].T
 line.set_data(x, y)
 line.set_3d_properties(z)

 pt.set_data(x[-1:], y[-1:])
 pt.set_3d_properties(z[-1:])

 # changed 0.3 to 0.05 below -- this slows the rotation of the view.
 # changed 30 to 20 below
 # changing 20 to (20 + (.1 * i)) rotates on the Z axis.  trippy.

 ax.view_init(10, 0.1 * i)
 # ax.view_init(10, 100)
 fig.canvas.draw()
 return lines + pts

 # instantiate the animator.  I've deleted the blit switch (for Mac)
 # enlarging frames=500 works now -- it failed before because I didn't give
 it
 # enough data -- by changing the t=np.linspace line above I generate
 more points.
 # interval larger slows it down
 # changed inteval from 30 to 200, frames from 500 to 3000

 anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=3000, interval=200)

 # Save as mp4. This requires mplayer or ffmpeg to be installed.
 COMPLEX!
 # Instead, use a screen record program:  Quicktime on the Mac; MS
 Expression Encoder on PC.
 # anim.save('PDNlorentz_attractor.mp4', fps=15, extra_args=['-vcodec',
 'libx264'])

 plt.show()

 


 --
 Dive into the World of Parallel Programming The Go Parallel Website,
 sponsored
 by Intel and developed in partnership with Slashdot Media, is your hub for
 all
 things parallel software development, from weekly thought leadership blogs
 to
 news, videos, case studies, tutorials and more. Take a look and join the
 conversation now. 

[Matplotlib-users] Lorenz - solution

2015-03-10 Thread Prahas David Nafissian
Friends,

I thought you'd like to see the solution.

Many thanks to Jake Vanderplas for his code and teachings:

https://jakevdp.github.io/blog/2013/02/16/animating-the-lorentz-system-in-3d/

If you start a new IP Notebook session, run as your first entry:

%pylab

and then copy and paste the text below and run it, you should be good to go
(on a Mac, at least).

There are several parameters I've changed from his original, and I've
commented as I've changed.  The original code is at the link above.

There is one error in his code -- I've documented it below.

Again, thanks to the community, Jake, and Ben Root.

--Prahas

**

import numpy as np
from scipy import integrate

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import cnames
from matplotlib import animation

# orig value of N_traj was 20 -- very cool this way.

N_trajectories = 1

def lorentz_deriv((x, y, z), t0, sigma=10., beta=8./3, rho=28.0):
Compute the time-derivative of a Lorentz system.
return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]

# Choose random starting points, uniformly distributed from -15 to 15

np.random.seed(1)

# changing from -15,30 to 10,5 below starts the drawing in the middle,
# rather than getting the long line from below
# if using N_Traj  1, return to orig values.

# x0 = -15 + 30 * np.random.random((N_trajectories, 3))

x0 = 10 + 5 * np.random.random((N_trajectories, 3))


# Solve for the trajectories

# orig values:  0,4,1000
# 3rd value -- lower it, it gets choppier.
# 2nd value -- increase it -- more points, but speedier.

# change middle num from 4 to 15 -- this adds points

t = np.linspace(0, 40, 3000)
x_t = np.asarray([integrate.odeint(lorentz_deriv, x0i, t)
  for x0i in x0])

# Set up figure  3D axis for animation
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1], projection='3d')

# changing off to on below adds axises.  slows it down but you
# can fix that with interval value in the animation call

ax.axis('on')

# choose a different color for each trajectory
colors = plt.cm.jet(np.linspace(0, 1, N_trajectories))

# set up lines and points -- this is a correction from
# the orig jake code.  the next four lines...

lines = [ax.plot([], [], [], '-', c=c)[0]
for c in colors]
pts = [ax.plot([], [], [], 'o', c=c)[0]
for c in colors]

# prepare the axes limits
ax.set_xlim((-25, 25))
ax.set_ylim((-35, 35))
ax.set_zlim((5, 55))

# set point-of-view: specified by (altitude degrees, azimuth degrees)
ax.view_init(30, 0)

# initialization function: plot the background of each frame
def init():
for line, pt in zip(lines, pts):
line.set_data([], [])
line.set_3d_properties([])

pt.set_data([], [])
pt.set_3d_properties([])
return lines + pts

# animation function.  This will be called sequentially with the frame number
def animate(i):
# we'll step two time-steps per frame.  This leads to nice results.

i = (2 * i) % x_t.shape[1]

for line, pt, xi in zip(lines, pts, x_t):
x, y, z = xi[:i].T
line.set_data(x, y)
line.set_3d_properties(z)

pt.set_data(x[-1:], y[-1:])
pt.set_3d_properties(z[-1:])

# changed 0.3 to 0.05 below -- this slows the rotation of the view.
# changed 30 to 20 below
# changing 20 to (20 + (.1 * i)) rotates on the Z axis.  trippy.

ax.view_init(10, 0.1 * i)
# ax.view_init(10, 100)
fig.canvas.draw()
return lines + pts

# instantiate the animator.  I've deleted the blit switch (for Mac)
# enlarging frames=500 works now -- it failed before because I didn't give it
# enough data -- by changing the t=np.linspace line above I generate
more points.
# interval larger slows it down
# changed inteval from 30 to 200, frames from 500 to 3000

anim = animation.FuncAnimation(fig, animate, init_func=init,
   frames=3000, interval=200)

# Save as mp4. This requires mplayer or ffmpeg to be installed. COMPLEX!
# Instead, use a screen record program:  Quicktime on the Mac; MS
Expression Encoder on PC.
# anim.save('PDNlorentz_attractor.mp4', fps=15, extra_args=['-vcodec',
'libx264'])

plt.show()



--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Lorenz - solution

2015-03-10 Thread Adam Hughes
That's pretty swag!

On Tue, Mar 10, 2015 at 11:49 AM, Benjamin Root ben.r...@ou.edu wrote:

 +1000!!

 Great job! Would you mind if I clean it up a bit and add it to the
 mplot3d/animation gallery? Full credit, of course.


 On Tue, Mar 10, 2015 at 11:30 AM, Prahas David Nafissian 
 prahas.mu...@gmail.com wrote:

 Friends,

 I thought you'd like to see the solution.

 Many thanks to Jake Vanderplas for his code and teachings:


 https://jakevdp.github.io/blog/2013/02/16/animating-the-lorentz-system-in-3d/

 If you start a new IP Notebook session, run as your first entry:

 %pylab

 and then copy and paste the text below and run it, you should be good to
 go
 (on a Mac, at least).

 There are several parameters I've changed from his original, and I've
 commented as I've changed.  The original code is at the link above.

 There is one error in his code -- I've documented it below.

 Again, thanks to the community, Jake, and Ben Root.

 --Prahas

 **

 import numpy as np
 from scipy import integrate

 from matplotlib import pyplot as plt
 from mpl_toolkits.mplot3d import Axes3D
 from matplotlib.colors import cnames
 from matplotlib import animation

 # orig value of N_traj was 20 -- very cool this way.

 N_trajectories = 1

 def lorentz_deriv((x, y, z), t0, sigma=10., beta=8./3, rho=28.0):
 Compute the time-derivative of a Lorentz system.
 return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]

 # Choose random starting points, uniformly distributed from -15 to 15

 np.random.seed(1)

 # changing from -15,30 to 10,5 below starts the drawing in the middle,
 # rather than getting the long line from below
 # if using N_Traj  1, return to orig values.

 # x0 = -15 + 30 * np.random.random((N_trajectories, 3))

 x0 = 10 + 5 * np.random.random((N_trajectories, 3))


 # Solve for the trajectories

 # orig values:  0,4,1000
 # 3rd value -- lower it, it gets choppier.
 # 2nd value -- increase it -- more points, but speedier.

 # change middle num from 4 to 15 -- this adds points

 t = np.linspace(0, 40, 3000)
 x_t = np.asarray([integrate.odeint(lorentz_deriv, x0i, t)
   for x0i in x0])

 # Set up figure  3D axis for animation
 fig = plt.figure()
 ax = fig.add_axes([0, 0, 1, 1], projection='3d')

 # changing off to on below adds axises.  slows it down but you
 # can fix that with interval value in the animation call

 ax.axis('on')

 # choose a different color for each trajectory
 colors = plt.cm.jet(np.linspace(0, 1, N_trajectories))

 # set up lines and points -- this is a correction from
 # the orig jake code.  the next four lines...

 lines = [ax.plot([], [], [], '-', c=c)[0]
 for c in colors]
 pts = [ax.plot([], [], [], 'o', c=c)[0]
 for c in colors]

 # prepare the axes limits
 ax.set_xlim((-25, 25))
 ax.set_ylim((-35, 35))
 ax.set_zlim((5, 55))

 # set point-of-view: specified by (altitude degrees, azimuth degrees)
 ax.view_init(30, 0)

 # initialization function: plot the background of each frame
 def init():
 for line, pt in zip(lines, pts):
 line.set_data([], [])
 line.set_3d_properties([])

 pt.set_data([], [])
 pt.set_3d_properties([])
 return lines + pts

 # animation function.  This will be called sequentially with the frame
 number
 def animate(i):
 # we'll step two time-steps per frame.  This leads to nice results.

 i = (2 * i) % x_t.shape[1]

 for line, pt, xi in zip(lines, pts, x_t):
 x, y, z = xi[:i].T
 line.set_data(x, y)
 line.set_3d_properties(z)

 pt.set_data(x[-1:], y[-1:])
 pt.set_3d_properties(z[-1:])

 # changed 0.3 to 0.05 below -- this slows the rotation of the
 view.
 # changed 30 to 20 below
 # changing 20 to (20 + (.1 * i)) rotates on the Z axis.  trippy.

 ax.view_init(10, 0.1 * i)
 # ax.view_init(10, 100)
 fig.canvas.draw()
 return lines + pts

 # instantiate the animator.  I've deleted the blit switch (for Mac)
 # enlarging frames=500 works now -- it failed before because I didn't
 give it
 # enough data -- by changing the t=np.linspace line above I generate
 more points.
 # interval larger slows it down
 # changed inteval from 30 to 200, frames from 500 to 3000

 anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=3000, interval=200)

 # Save as mp4. This requires mplayer or ffmpeg to be installed.
 COMPLEX!
 # Instead, use a screen record program:  Quicktime on the Mac; MS
 Expression Encoder on PC.
 # anim.save('PDNlorentz_attractor.mp4', fps=15, extra_args=['-vcodec',
 'libx264'])

 plt.show()

 


 --
 Dive into the World of Parallel Programming The Go Parallel Website,
 sponsored
 by Intel and developed in partnership with Slashdot Media, is your hub
 for all
 things parallel software development, from weekly thought leadership
 

Re: [Matplotlib-users] Plotting style

2015-03-10 Thread Eric Firing
On 2015/03/09 8:14 PM, Marin GILLES wrote:
 Hi,
 As suggested in PR 2702
 https://github.com/matplotlib/matplotlib/pull/2702, I have been trying
 to tell |scatter| to |get_current_color_cycle| for the facecolor. I
 guess I can use |axes.get_color()|to get the current color in the color
 cycle.
 However, I was not able to try this, as when I try to import pyplot I
 get an |ImportError: No module named _path|. It seems to be library
 related, but I’m not quite sure how I can solve this…

It sounds like your installation is broken; _path is an extension module 
compiled from C++, and central to matplotlib's functionality.

In what environment are you working?  Did this failure arise after you 
modified code and then executed python setup.py install or something 
of that sort?

Eric

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Plotting style

2015-03-10 Thread Marin GILLES

Le 10/03/2015 07:52, Eric Firing a écrit :

On 2015/03/09 8:14 PM, Marin GILLES wrote:

Hi,
As suggested in PR 2702
https://github.com/matplotlib/matplotlib/pull/2702, I have been trying
to tell |scatter| to |get_current_color_cycle| for the facecolor. I
guess I can use |axes.get_color()|to get the current color in the color
cycle.
However, I was not able to try this, as when I try to import pyplot I
get an |ImportError: No module named _path|. It seems to be library
related, but I’m not quite sure how I can solve this…

It sounds like your installation is broken; _path is an extension module
compiled from C++, and central to matplotlib's functionality.

In what environment are you working?  Did this failure arise after you
modified code and then executed python setup.py install or something
of that sort?

Eric

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Actually, I just brute loaded mpl for source... I am not really used to it.
So I guess I'll have to make a virtual env and install mpl in it?

--
*Marin GILLES*
/PhD student CNRS
/ /Laboratoire Interdisciplinaire Carnot de Bourgogne (ICB)
UMR 6303 CNRS - Université de Bourgogne
9 av Alain Savary, BP 47870
21078, Dijon (France)
/ ☎ (+33)6.79.35.30.11
✉ marin.gil...@u-bourgogne.fr mailto:marin.gil...@u-bourgogne.fr
--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Plotting style

2015-03-10 Thread Eric Firing
On 2015/03/09 8:56 PM, Marin GILLES wrote:
 Actually, I just brute loaded mpl for source... I am not really used to it.
 So I guess I'll have to make a virtual env and install mpl in it?

You have to build and install it somewhere, where it will be found when 
you try to import it; whether you use a virtual env is up to you.  I 
managed for years without using virtual envs. Recently I've found them 
quite helpful, but a bit tricky and confusing at times.

Eric

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users