Philip,

A few questions before I give one possible solution,

Does this plot need to be updated in real time ? or is this plot to be done in post processing?

if you can do the plots with post processing you should be able to use pcolor function to do your tasks

http://matplotlib.sourceforge.net/examples/pylab_examples/pcolor_demo.html

i won’t go into details but just assign:

X as 1d vector with your m/z values

Y as 1d vector your time values

And Z as a 2d array that will map counts/sec to both a “m/z” and “time” index

You will have to find the location for your other marks and then plot them on top of pcolor graph but that shouldn’t be too hard just express your values (i am assuming 3dB cutoff points and peak power of some sort) in terms of X Y. I am almost certain there is probably a nice DSP way to solve for those X Y values once the data is in a 2d array but i am no expert on that mater.

Good luck and hopefully this helps,

Mike

**From:** Philipp A. [mailto:flying-sheep@web.de] **Sent:** January-27-11 5:15 PM**To:** matplotlib-users@lists.sourceforge.net**Subject:** [Matplotlib-users] 3D Data to 2d Plots

Hi list,

I want to visualize Plots over time.

This describes the data:

a) and b) are single scans, the cutting at the red bars is no problem.

c) illustrates how they are done over time.

d) is what I want. I think this plot could be a starting point, but I don’t really understand what’s done there.

e) would be easier to do, like this plot, but information is lost this way (hidden behind higher values)

it would be best to do the following:

1. plot one horizontal line vertically above each other (gapless), one for each scan (so the vertical axis is the time axis)

2. each line is displayed as a series of gradients directly next to to each other (gapless)

3. the starting and ending point of each gradient are determined by the horizontal position of two adjacent data points in the current scan

4. the colors of each gradient are determined by the vertical position of the two adjacent data points in the current scan, relative to the total maximum

has anyone an idea how to do this? i am really a matplotlib noob.

Philipp