Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

DZone's Guide to

# Plotting Graph On Pys60

· ·
Free Resource

Comment (0)

Save
{{ articles[0].views | formatCount}} Views
```Here's the first step towards porting matplotlib to pys60.
I try to replicate some easy examples in
matplotlib tutorial.

First, we need a float range function.
```
from __future__ import generators

def arange(start, stop=None, step=None):
if stop is None:
stop = float(start)
start = 0.0
if step is None:
step = 1.0
cur = float(start)
while cur < stop:
yield cur
cur += step
```
Then, a function to draw the axes and ticks.
In the future, this should be called automatically from plot().
```
from appuifw import *
app.body = canvas = Canvas()
width, height = canvas.size

def axes(xyrange, position=[18, height-11, width-10, 10], formatter=lambda x:x):
global left, bottom, right, top, min_x, min_y, scale_x, scale_y
left, bottom, right, top = position
min_x, max_x, step_x, min_y, max_y, step_y = xyrange
scale_x = float(right-left)/(max_x-min_x)
scale_y = float(bottom-top)/(max_y-min_y)
canvas.clear()
canvas.rectangle([(left,top), (right+1, bottom+1)], 0)
for x in arange(min_x, max_x, step_x):
canvas.text((14+scale_x*(x-min_x), height-1), unicode(formatter(x)))
canvas.point((left+scale_x*(x-min_x), bottom-1), 0)
canvas.point((left+scale_x*(x-min_x), top+1), 0)
for y in arange(min_y, max_y, step_y):
canvas.text((2, bottom+2-scale_y*(y-min_y)), unicode(formatter(y)))
canvas.point((left+1, bottom-scale_y*(y-min_y)), 0)
canvas.point((right-1, bottom-scale_y*(y-min_y)), 0)
```
And lastly, the plot function. Now it has only a few features.
More will be added depending on what is needed.
```
def plot(xs, ys=None):
if ys==None:
ys = xs
xs = range(len(ys))
last = left+(xs[0]-min_x)*scale_x, bottom-(ys[0]-min_y)*scale_y
for i in range(1, len(ys)):
p = left+(xs[i]-min_x)*scale_x, bottom-(ys[i]-min_y)*scale_y
canvas.line([last, p], 0x00000ff)
last = p
canvas.point(last, 0x0000ff)
```
When we want to plot a graph, we called both axes() and plot()
```
# a straight line
>>> axes([0,3.1,.5, 1,4.1,.5])
>>> plot([1,2,3,4])

# a parabola y = x^2
>>> axes([1,4.1,1, 0,16.1,2], formatter=int)
>>> plot([1,2,3,4], [1,4,9,16])
```
See the sreenshot of the first.

```
Topics:

Comment (0)

Save
{{ articles[0].views | formatCount}} Views

Opinions expressed by DZone contributors are their own.