By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
428,853 Members | 2,144 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 428,853 IT Pros & Developers. It's quick & easy.

Best way to use Python to make 2d XY scatter graphs? Will TKinter do it?

P: n/a
I need to create image files (eg bmp or jpeg) of xy scatter graphs
(i.e., graphs in which markers denote individual points; the markers
need to be small polygons of various sizes, shapes, colors, shadings,
etc. and there are thousands on them on each graph). Have been using
MS Excel, but its limitations are unbelievable (only whole number
sizes, no way around a 56 color palette, only low quality jpeg files
so that when I publish the graphs I have to print and scan them all to
get a decent image, no more than 32K markers in a single series).
From a programming point of view, Python is perfect to set up
something like this, but MY QUESTION IS: Will TKinter do this? Or
will it be necessary to learn OpenGL? Or is another Python compatible
package best? Thanks for your help.
Jul 18 '05 #1
Share this Question
Share on Google+
9 Replies


P: n/a
rh*******@juno.com (rhmd) wrote in message news:<61**************************@posting.google. com>...
I need to create image files (eg bmp or jpeg) of xy scatter graphs
(i.e., graphs in which markers denote individual points; the markers
need to be small polygons of various sizes, shapes, colors, shadings,
etc. and there are thousands on them on each graph). Have been using
MS Excel, but its limitations are unbelievable (only whole number
sizes, no way around a 56 color palette, only low quality jpeg files
so that when I publish the graphs I have to print and scan them all to
get a decent image, no more than 32K markers in a single series).
From a programming point of view, Python is perfect to set up
something like this, but MY QUESTION IS: Will TKinter do this? Or
will it be necessary to learn OpenGL? Or is another Python compatible
package best? Thanks for your help.

Sounds like a job for PIL. http://www.pythonware.com/products/pil/
Jul 18 '05 #2

P: n/a
rh*******@juno.com (rhmd) wrote in message news:<61**************************@posting.google. com>...
I need to create image files (eg bmp or jpeg) of xy scatter graphs
(i.e., graphs in which markers denote individual points; the markers
need to be small polygons of various sizes, shapes, colors, shadings,
etc. and there are thousands on them on each graph). Have been using
MS Excel, but its limitations are unbelievable (only whole number
sizes, no way around a 56 color palette, only low quality jpeg files
so that when I publish the graphs I have to print and scan them all to
get a decent image, no more than 32K markers in a single series).
From a programming point of view, Python is perfect to set up
something like this, but MY QUESTION IS: Will TKinter do this? Or
will it be necessary to learn OpenGL? Or is another Python compatible
package best? Thanks for your help.


What you want is the magic of Blt graph available through the Pmw
package (or write your on Tkinter like wrapper). If you can imagine
it this graphing package can to it (with a little bit of work and know
how). The only snag is that image output as far as I know is limited
to gif out of the box. I beleive with a little bit of work you will
be able to get jpeg output.

http://pmw.sourceforge.net/doc/index.html
http://heim.ifi.uio.no/~hpl/Pmw.Blt/doc/

The second link is the most useful.

Cheers
Jul 18 '05 #3

P: n/a

"rhmd" <rh*******@juno.com> wrote in message
news:61**************************@posting.google.c om...
I need to create image files (eg bmp or jpeg) of xy scatter graphs
(i.e., graphs in which markers denote individual points; the markers
need to be small polygons of various sizes, shapes, colors, shadings,
etc. and there are thousands on them on each graph). Have been using
MS Excel, but its limitations are unbelievable (only whole number
sizes, no way around a 56 color palette, only low quality jpeg files
so that when I publish the graphs I have to print and scan them all to
get a decent image, no more than 32K markers in a single series).
From a programming point of view, Python is perfect to set up
something like this, but MY QUESTION IS: Will TKinter do this? Or
will it be necessary to learn OpenGL? Or is another Python compatible
package best? Thanks for your help.


I use Dislin for this sort of thing http://www.linmpi.mpg.de/dislin/

Duncan
Jul 18 '05 #4

P: n/a
Hello,
Will TKinter do this? Or
will it be necessary to learn OpenGL? Or is another Python compatible
package best? Thanks for your help.

Have a look at http://www.python.org/topics/scicomp/plotting.html

I also highly recommend PIL (http://www.pythonware.com/products/pil/)

HTH.
Miki
Jul 18 '05 #5

P: n/a
rh*******@juno.com (rhmd) wrote in message news:<61**************************@posting.google. com>...
I need to create image files (eg bmp or jpeg) of xy scatter graphs
(i.e., graphs in which markers denote individual points; the markers
need to be small polygons of various sizes, shapes, colors, shadings,
etc. and there are thousands on them on each graph). Have been using
MS Excel, but its limitations are unbelievable (only whole number
sizes, no way around a 56 color palette, only low quality jpeg files
so that when I publish the graphs I have to print and scan them all to
get a decent image, no more than 32K markers in a single series).
From a programming point of view, Python is perfect to set up
something like this, but MY QUESTION IS: Will TKinter do this? Or
will it be necessary to learn OpenGL? Or is another Python compatible
package best? Thanks for your help.


Since this hasn't been mentioned, there's a gnuplot binding for
python. I have used it successfully and without any speed problems for
scatter plots with > 20000 points, and it gives you the added benefit
to play around with the graphs in gnuplot itself.
Jul 18 '05 #6

P: n/a
>>>>> "rhmd" == rhmd <rh*******@juno.com> writes:

rhmd> I need to create image files (eg bmp or jpeg) of xy scatter
rhmd> graphs (i.e., graphs in which markers denote individual
rhmd> points; the markers need to be small polygons of various
rhmd> sizes, shapes, colors, shadings, etc. and there are
rhmd> thousands on them on each graph).

matplotlib makes x-y scatter plots with circles of arbitrary size and
color

from matplotlib.matlab import *

... x, y, size, and color are Numeric arrays ...
scatter(x, y, size, color)
show()

It doesn't (yet) support polygons, but this would be easy to add (I'm
putting it on my TODO list) -- http://matplotlib.sourceforge.net. It
has the added benefit of interactive rescaling of axes with GUI
widgets, a postscript output, and more!

JDH

Jul 18 '05 #7

P: n/a
en***@gmx.net (enoch) wrote in message news:<ad**************************@posting.google. com>...
Since this hasn't been mentioned, there's a gnuplot binding for
python. I have used it successfully and without any speed problems for
scatter plots with > 20000 points, and it gives you the added benefit
to play around with the graphs in gnuplot itself.


I'll second that. Gnuplot is THE plotter to have on hand, if you can
only have one plotter on hand...

There is a handy tool to tie python to gnuplot...

http://gnuplot-py.sourceforge.net/

--Stan Graves
st**@SoundInMotionDJ.com
http://www.SoundInMotionDJ.com
Jul 18 '05 #8

P: n/a
(sorry, I respond to this message because I can not
find the original message)

You might also have a look at reportlab's graphics library.
http://www.reportlab.org/rl_toolkit.html
You can have output of your graphics as PNG, JPEG,...,
pdf or postscript (SVG was buggy as I looked at it, I don't
know the present state).
There is also some beginning of charting
library, but you can draw whatewer you like, it is IMO relatively
easy to use. The downside for you may be that it is not
very fast if you have a lot of objects to draw, but you may look
if it is fast enough for you.
Marijan

"enoch" <en***@gmx.net> wrote in message
news:ad**************************@posting.google.c om...
rh*******@juno.com (rhmd) wrote in message

news:<61**************************@posting.google. com>...
I need to create image files (eg bmp or jpeg) of xy scatter graphs
(i.e., graphs in which markers denote individual points; the markers
need to be small polygons of various sizes, shapes, colors, shadings, etc. and there are thousands on them on each graph). Have been using MS Excel, but its limitations are unbelievable (only whole number
sizes, no way around a 56 color palette, only low quality jpeg files
so that when I publish the graphs I have to print and scan them all to get a decent image, no more than 32K markers in a single series).
From a programming point of view, Python is perfect to set up
something like this, but MY QUESTION IS: Will TKinter do this? Or
will it be necessary to learn OpenGL? Or is another Python compatible package best? Thanks for your help.


Since this hasn't been mentioned, there's a gnuplot binding for
python. I have used it successfully and without any speed problems for
scatter plots with > 20000 points, and it gives you the added benefit
to play around with the graphs in gnuplot itself.


Jul 18 '05 #9

P: n/a
rh*******@juno.com (rhmd) wrote in news:616fccba.0310200250.22d55351
@posting.google.com:
I need to create image files (eg bmp or jpeg) of xy scatter graphs
(i.e., graphs in which markers denote individual points; the markers
need to be small polygons of various sizes, shapes, colors, shadings,
etc. and there are thousands on them on each graph). Have been using
MS Excel, but its limitations are unbelievable (only whole number
sizes, no way around a 56 color palette, only low quality jpeg files
so that when I publish the graphs I have to print and scan them all to
get a decent image, no more than 32K markers in a single series).
From a programming point of view, Python is perfect to set up
something like this, but MY QUESTION IS: Will TKinter do this? Or
will it be necessary to learn OpenGL? Or is another Python compatible
package best? Thanks for your help.


I would like to add a possible solution to those suggested. This may be
off-topic and I don't know the context of the question. I, too,
abandoned Excel as my graphing platform.

If you are automating research processes and not writing software for
distribution then I think the R environment (http://r-project.org) is
worth a look. I've used it for several research projects and created
graphs for publication. There are Python packages to call R from python,
although complete programs can be written in R, which to my newbie eyes
is very Python-like. The graphs can written to several formats (see
below) and can paste into your favorite word/presentation processor.

The added bonus is you get a wealth of statistical processes along with
plotting (although you didn't mention this requirement in your post).

There are several downsides: your program would require R to be installed
on the system; batching R on windows does not work (for me); there is a
learning curve; and parameters are a bit quirky (work like globals).

http://r-project.org
http://www.omegahat.org/RSPython/index.html
http://rpy.sourceforge.net/
description from the R site:
R is a language and environment for statistical computing and graphics.
It is a GNU project which is similar to the S language and environment...
One of R's strengths is the ease with which well-designed publication-
quality plots can be produced, including mathematical symbols and
formulae where needed.

from the R help:
The following graphics devices are currently available:

* `postscript' Writes PostScript graphics commands to a file

* `pdf' Write PDF graphics commands to a file

* `pictex' Writes LaTeX/PicTeX graphics commands to a file

* `windows' The graphics driver for Windows (on screen, to
printer and to Windows metafile).

* `png' PNG bitmap device

* `jpeg' JPEG bitmap device

* `bmp' BMP bitmap device

* `xfig' Device for XFIG graphics file format

* `bitmap' bitmap pseudo-device via `GhostScript' (if
Jul 18 '05 #10

This discussion thread is closed

Replies have been disabled for this discussion.