johnnywang has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I started to implement a module for drawing eucliean geometry graphs, as discussed in (perl for graphing Euclidean geometry), made quite some progress over the weekend. So far I've been doing all drawing in GD, but I noticed the antialiasing problem, i.e., the edges are not smooth even after I turned on antialiasing. Many others recommended using gnuplot for drawing. Did any of you do some comparison betwee GD and gnuplot? I liked GD since it seems to have a better interface via perl (most gnuplot examples I saw use the backtick to call gnuplot.) Does gnuplot provide better quality graphs? or have other advantages?

While I'm at it, I'll throw in SVG, which is more than enough for my type of drawing. Any comments here?

Thanks.

Replies are listed 'Best First'.
Re: GD vs. gnuplot
by ctilmes (Vicar) on Aug 10, 2004 at 09:56 UTC
    I've used gnuplot to produce very nice PS/PDF vector based plots suitable for inclusion in printed papers.

    GD png/gif bitmap plots just don't look as nice printed. (I suppose you could scale them really, really big...)

    SVG is also vector based, so should make nicer printed plots.

Re: GD vs. gnuplot
by superfrink (Curate) on Aug 10, 2004 at 00:38 UTC
    I've used GD (in PHP) for plotting graphs. It's not too bad . There are put-pixel and draw-line type functions.

    I've only used GnuPlot once and that involved feeding it a text file of values to plot if I recall correctly. Read the docs though because I don't know how else you can use it.

    Also maybe check out imagemagick.

    Update: OH right the whole reason I posted.
    1) check the quality settings in GD's JPEG functions (also maybe use PNG instead).
    2) I did a contract that involved generating thumbnails. The client wasn't impressed with GD's or ImageMagick's results even with sharpen and unsharp filters. In the end he generated them via a script in Photoshop. If you're on Linux maybe check out the GIMP which can be scripted in Scheme (maybe perl, I'm not sure).

      May I ask why you did not use Tk?

      Recently for amusement I was looking for a simple way to plot geometrical shapes (polygons, regular solids, pyramids) in the form of a bzflag world map using perl. The thought experiment took me far and wide through various incantations of mesa, openGL/Perl, Glut, Perl SDL, and more. In the end I kept trying options and finding errors and horrible bugs eventually coming full circle (pun intended) back to Perl/Tk.

      You may find some examples of interest using Tk:

      1. TkGnuPlot
      2. Data visualization using Perl/Tk
      3. Some great examples at The Ultimate (well, not quite) Perl/Tk Page!!!
      4. Graphing examples from The Perl Journal: Perl and the Tk Extension

      Some code (corrected from non-working code found in Advanced Perl Programming) always makes a nice point:

      #!/usr/bin/perl -w use Tk; $top = MainWindow->new(); $canvas = $top->Canvas(width => 600, height => 490)->pack(); # Draw a set of circles along an archimedean spiral # The centers of these circles move along the spiral # (radius of spiral = constant * theta)

      SciDude
      The first dog barks... all other dogs bark at the first dog.
        Thanks, SciDude. I'm not looking for an interactive program for which Tk would be a choice. I'd prefer no user interaction at all. All I want is to generate images (jpg,png) from some simple intuitive descriptions.