Hi everyone,
I've been looking into making an animation of a mechanical system. In its first incarnation, my plan was as follows:
1) Make a fading line plot of two variables (say, x and y)
2) Run a series of such plots through ffmpeg/avencode to generate an animation
First, I'm wondering whether there's a built-in way of making a fading line plot, i.e. a plot where one end of the line is plotted with high alpha, the other end with low alpha, and intermediate line segments with linearly scaled alpha. For now, I've done this by manually "chunking" the x and y arrays and plotting each chunk with different alpha. Is there a better way? Is there interest in creating such a plotting function and adding it to matplotlib?
Second, is there a way of integrating the "chunked" generation of fading lines with the animation generating features of matplotlib? It seems possible, although a bit clunky, at present, but maybe someone has a better idea at what overall approach to take than I do.
Cheers
Paul
I remember this Animation for mechanical vibrations from a few days back, HTH.
···
On 24/02/2013 18:28, Paul Anton Letnes wrote:
Hi everyone,
I've been looking into making an animation of a mechanical system. In its first incarnation, my plan was as follows:
1) Make a fading line plot of two variables (say, x and y)
2) Run a series of such plots through ffmpeg/avencode to generate an animation
First, I'm wondering whether there's a built-in way of making a fading line plot, i.e. a plot where one end of the line is plotted with high alpha, the other end with low alpha, and intermediate line segments with linearly scaled alpha. For now, I've done this by manually "chunking" the x and y arrays and plotting each chunk with different alpha. Is there a better way? Is there interest in creating such a plotting function and adding it to matplotlib?
Second, is there a way of integrating the "chunked" generation of fading lines with the animation generating features of matplotlib? It seems possible, although a bit clunky, at present, but maybe someone has a better idea at what overall approach to take than I do.
Cheers
Paul
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
--
Cheers.
Mark Lawrence
Paul,
I've had to do something similar to what you need, and I found the following example from the Gallery quite helpful:
http://matplotlib.org/examples/pylab_examples/multicolored_line.html
I think the second plot in particular is pretty close to what you want; however, you'll need to set the alpha values manually. This is what I've done for line collections, scatter plots, etc.
···
On 2/24/2013 1:28 PM, Paul Anton Letnes wrote:
Hi everyone,
I've been looking into making an animation of a mechanical system. In its first incarnation, my plan was as follows:
1) Make a fading line plot of two variables (say, x and y)
2) Run a series of such plots through ffmpeg/avencode to generate an animation
First, I'm wondering whether there's a built-in way of making a fading line plot, i.e. a plot where one end of the line is plotted with high alpha, the other end with low alpha, and intermediate line segments with linearly scaled alpha. For now, I've done this by manually "chunking" the x and y arrays and plotting each chunk with different alpha. Is there a better way? Is there interest in creating such a plotting function and adding it to matplotlib?
Second, is there a way of integrating the "chunked" generation of fading lines with the animation generating features of matplotlib? It seems possible, although a bit clunky, at present, but maybe someone has a better idea at what overall approach to take than I do.
Cheers
Paul
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options
_________________________________
import numpy as np
import matplotlib.pyplot as plt
norm_data = np.random.rand(20)
xs = np.random.rand(20)
# Pick a colormap and generate the color array for your data
cmap = plt.cm.spectral
colors = cmap(norm_data)
# Reset the alpha data using your desired values
colors[:,3] = norm_data
# Adding a colorbar is a bit of a pain here, need to use a mappable
fig = plt.figure()
plt.scatter(xs, norm_data, c=colors, s=55)
mappable = plt.cm.ScalarMappable(cmap=cmap)
mappable.set_array(norm_data)
fig.colorbar(mappable)
plt.show()
_________________________________
Hope that helps a little.
Ryan