[Tutor] help with splot & 3d data
kevin parks
kp8 at mac.com
Sat Nov 6 02:32:45 CET 2004
hi Python heads!
i have some data that would like to plot with Gnuplot-py and need to
get a little fancier than i am used to.
I have data that looks like:
0 5.5 0 1
2 5.5 2 4
4 5.5 4 2
6 5.5 5 3
8 5.5 7 1
10 5.5 9 4
12 5.5 11 3
14 5.5 0 2
16 5.5 2 1
18 5.5 4 4
20 5.5 5 3
The first number is the start time of the event. The second is the
duration. The third is the event identifier and the last is what stream
it belongs to. I would like to use splot and points of different colors
to convey as much info as i can. The X axis would be the time axis
(that would take care of the first two parameters) and the Y axis could
be the third column. Then for the fouth item, there are only four
possibilities (1, 2, 3, or 4), so i thought that i could use points of
red, blue, green, black to indicate that.
So that is where i am headed... But i have a long way to go and am a
gnuplot novice and not a great Python hacker to boot.. Could anyone
help me along?
I would be grateful for any help.
Cheers,
kevin
Here is some (*gasp*) code.
------------ [snip] ----------------
#! /usr/bin/env python
from Numeric import *
import Gnuplot, Gnuplot.funcutils
def main():
all = [ [ 0, 5.5, 0, 1 ], [ 2, 5.5, 2, 4 ], [ 4, 5.5, 4, 2 ], [ 6,
5.5, 5, 3 ], [ 8, 5.5, 7, 1 ], [ 10, 5.5, 9, 4 ], [ 12, 5.5, 11, 3 ], [
14, 5.5, 0, 2 ], [ 16, 5.5, 2, 1 ], [ 18, 5.5, 4, 4 ], [ 20, 5.5, 5, 3
], [ 22, 5.5, 7, 2 ], [ 24, 5.5, 9, 1 ], [ 26, 5.5, 11, 4 ], [ 28, 5.5,
0, 3 ], [ 30, 5.5, 2, 2 ], [ 32, 5.5, 4, 1 ], [ 34, 5.5, 5, 3 ], [ 36,
5.5, 7, 4 ], [ 38, 5.5, 9, 2 ], [ 40, 5.5, 11, 3 ], [ 42, 5.5, 0, 4 ],
[ 44, 5.5, 2, 1 ], [ 46, 5.5, 4, 2 ], [ 48, 5.5, 5, 4 ], [ 50, 5.5, 7,
3 ], [ 52, 5.5, 9, 1 ], [ 54, 5.5, 11, 2 ], [ 56, 5.5, 0, 4 ], [ 58,
5.5, 2, 1 ], [ 60, 5.5, 4, 3 ], [ 62, 5.5, 5, 2 ], [ 64, 5.5, 7, 4 ], [
66, 5.5, 9, 3 ], [ 68, 5.5, 9, 1 ], [ 70, 5.5, 0, 2 ], [ 72, 5.5, 2, 4
], [ 74, 5.5, 4, 1 ], [ 76, 5.5, 5, 2 ], [ 78, 5.5, 7, 3 ], [ 80, 5.5,
9, 4 ], [ 82, 11.5, 11, 2 ], [ 84, 5.5, 0, 1 ], [ 86, 5.5, 2, 3 ], [
88, 7.5, 4, 4 ], [ 90, 11.5, 5, 1 ], [ 92, 5.5, 7, 3 ], [ 94, 3.5, 9, 2
], [ 96, 7.5, 11, 4 ], [ 98, 7.5, 0, 2 ], [ 100, 11.5, 2, 3 ], [ 102,
5.5, 4, 1 ], [ 104, 7.5, 5, 4 ], [ 106, 11.5, 7, 2 ], [ 108, 5.5, 9, 1
], [ 110, 5.5, 11, 3 ], [ 112, 8.5, 0, 4 ], [ 114, 5.5, 2, 1 ], [ 116,
5.5, 4, 3 ], [ 118, 5.5, 5, 2 ], [ 120, 9.5, 7, 1 ], [ 122, 3.5, 9, 4
], [ 124, 3.5, 11, 2 ], [ 126, 5.5, 0, 3 ], [ 128, 5.5, 2, 2 ], [ 130,
5.5, 4, 1 ], [ 132, 5.5, 5, 3 ], [ 134, 10, 7, 2 ], [ 136, 8, 9, 4 ], [
138, 6, 11, 1 ], [ 140, 4, 0, 3 ] ]
g = Gnuplot.Gnuplot(debug=1)
g.title('REALLY COOL GRAPH') # (optional)
g.xlabel('Start Time')
g.ylabel('Duration')
g('set data style linespoints') # give gnuplot an arbitrary command
# Plot a list of (x, y) pairs (tuples or a Numeric array would
# also be OK):
#g.plot([[0,1.1], [1,5.8], [2,3.3], [3,4.2]])
g.plot(all)
raw_input('Please press return to continue...\n')
g.reset()
# -- ---------------
print '############### test splot
##################################'
#g.splot(Gnuplot.Data(all, with='linesp', inline=1,))
g.splot(Gnuplot.Data(all, using=(1,), with='points', inline=1,))
#g.plot(Gnuplot.Data(d, with='lp 4 4'))
#g.plot(Gnuplot.Data(d, cols=(0,1), inline=0),
#Gnuplot.Data(d, cols=(0,2), inline=0))
#g.plot(Gnuplot.Data(d, cols=(0,1), inline=1),
#Gnuplot.Data(d, cols=(0,2), inline=1))
#g.splot(Gnuplot.Data(all, with='linesp', inline=1))
# when executed, just run main
if __name__ == '__main__':
main()
------------ [snip] ----------------
More information about the Tutor
mailing list