next up previous contents
Next: Tests of elementwise functions Up: Getting started and examples Previous: Tests of various multiplications   Contents

Tests of gplot module

The file test_gplot.py tests the interface to gnuplot. Results are at 3.10


#!/usr/bin/env python
# (C) 2000 Huaiyu Zhu <hzhu@users.sourceforge.net>.  Licence: GPL
# $Id: test_gplot.py,v 1.6 2000/10/05 01:28:27 hzhu Exp $
"""
Test gplot module 
"""

from MatPy.Matrix import r_range, rand, cumsum
from MatPy.efuncs import sin, cos, exp, sqrt
from MatPy.gplot import Gplot

if __name__ == "__main__":	waittime = None
else:						waittime = 3
g = Gplot()
#from MatPy import nothing
#g = nothing

#------------------------------------------------------------------
title = "Gplot.plot : Plot four curves"
print title

x1 = r_range(100)/4.0
y1 = sin(x1)/2 - 1
x = r_range(300)/5.0
y2 = cos(sqrt(x)*10)/3
y3 = x.__tpow__(4); y3 = 2*y3/max(y3)
y4 = 1-exp(-x/3);			
print y1.shape, y2.shape, y3.shape, y4.shape

g.title(title)
g.xlabel('x')
g.ylabel('y')
g.text((31,-0.8), "first label")
g.text((21,1.2), "second label")
g.plot((y1, y2, y3, y4), 
	   names=("sin x - 1", "cos sqrt x", "x^4", "1-e^-x"),
	   xs=[x1] + [x]*3)

g.hardcopy("plot.ps")
g.wait(waittime)
g = Gplot()  # There seems no way to remove texts
#g = nothing

#------------------------------------------------------------------

title = """Gplot.mesh : mesh z against x and y """
print title
g.title(title)
g.xlabel('x')
g.ylabel('y')

x = r_range(40)/2.0
y = r_range(30)/10.0 - 1.5

for i in range(10):
	 a = (sin(x+i) + 0.1*x).T
	 b = y.__tpow__(2)
	 m = a.__tsub__(b)
	 #print m.shape, a.shape, b.shape
	 g.mesh(m, x, y).wait(0.4)  # On my linux box this is necessary for disk sync?
g.hardcopy("mesh.ps")
g.wait(waittime)

#------------------------------------------------------------------
title = "Gplot.plot : Using matrix columns as y"
print title
ys = rand((30,4))

g.title(title)
g.plot(ys).wait(waittime)

#------------------------------------------------------------------
title = "Gplot.plot : Using matrix as part of x, the rest default to index"
print title
xs = rand((30,2))
ys = cumsum(ys)
xs = cumsum(xs)

g.title(title)
g.plot(ys, xs).wait(waittime)


#------------------------------------------------------------------
title = "Gplot.holdon Gplot.holdoff : Plotting 10 lines in sequence"
print title

from MatPy.Matrix import cumsum, Matrix_c, zeros
from MatPy.Stats.distribs import randn
g.title(title)

g.holdon
for i in range(5):
	 ys = Matrix_c([zeros((1,2)), randn((30,2))])
	 g.plot(cumsum(ys)).wait(0.2)
g.wait(waittime)
g.holdoff

#------------------------------------------------------------------
title =  "Gplot.plotlines : Plot 8 lines, each composed 2d points"
print title
from MatPy.Matrix import max, max2
from MatPy.efuncs import abs

g.title(title)
lines = []
M = 0
for i in range(8):
	line = cumsum(randn((90,2)))
	lines.append(line)
	g.text(line[-1]*1.3, '%s'%i)
	M = max(max2(abs(line)), M)

M = M*1.3
g.axis((-M,M), (0,0), equal=1)
g.plotlines(lines).wait(waittime)


Result obtained with
>>> from MatPy.tests import test_gplot


Gplot.plot : Plot four curves
(1, 100) (1, 300) (1, 300) (1, 300)
Gplot.mesh : mesh z against x and y 
Gplot.plot : Using matrix columns as y
Gplot.plot : Using matrix as part of x, the rest default to index
Gplot.holdon Gplot.holdoff : Plotting 10 lines in sequence
Gplot.plotlines : Plot 8 lines, each composed 2d points



Huaiyu Zhu
2002-03-23