gilhad
gilhad

Reputation: 609

How to make simple graphs in python 2.7

I would like to make simple graphs for my web page in python/django, but I do not know, which library (and how) to use.

I DO NOT WANT CHARTS, I SEEK A WAY TO CREATE IMAGE FROM PRIMITIVES LIKE RECTANGLES.

Each such graph is probabely generated and used only one time, as next time the values would differ.

I can simply compute the positions of all rectangles, lines or texts in it, so I would like something lightweight to just create pictre from that, which I would return as img/png (or so) mime style like <img src="http://my.web.www/my/page/graph" > where the parameters to show would be decidied by session and database.

I can compute all the sizes beforehand, so I would like something simple like

img=Image(PNG,598,89) # style, x, y
img.add_text('1.3.', 10,10)
img.add_rectagle(20,10, 70,20, CYAN, BLACK)
....
return img.render()

Can you direct me, how to do it?

Thanks beforehand

graph


navit nailed it :)

# from django.utils.httpwrappers import HttpResponse
from PIL import Image, ImageDraw
import os,sys
im = Image.new('RGB',(598,89),'white')

draw = ImageDraw.Draw(im)
draw.rectangle((0,0,im.size[0]-1,im.size[1]-1), outline='blue')
draw.rectangle((25,10,590,20), fill='white', outline='black')
draw.rectangle((25,10,70,20), fill='rgb(255,0,0)', outline='black')
draw.rectangle((70,10,90,20), fill='green', outline='black')
draw.text((1,10),'1.3.',fill='black')
del draw

# write to stdout
im.save(sys.stdout, "PNG")

# draw.flush()
# response = HttpResponse(mimetype="image/png")
# image.save(response, "PNG")
# return response

enter image description here

Upvotes: 2

Views: 974

Answers (3)

navid
navid

Reputation: 566

You should check Pillow out. Here is a sample how it works:

from PIL import Image, ImageDraw

im = Image.open("lena.pgm")

draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128)
draw.line((0, im.size[1], im.size[0], 0), fill=128)
del draw

# write to stdout
im.save(sys.stdout, "PNG")

Serving a file from Pillow to your client should be straightforward. Let me know if you have a question.

edit: found these examples to get you started.

Upvotes: 2

eguaio
eguaio

Reputation: 3954

What about plotly? Never used in a project, but by reading the examples it seems very powerful and easy to use. It has a static image export (as most graphic libraries probably have).

Upvotes: 0

Julien
Julien

Reputation: 1910

http://matplotlib.org/ permits to generate plenty of great graphs. You should be able to save it as an image and integrate it to your webpage

Upvotes: 0

Related Questions