Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Visualizing HUGE integers.

by DJ Purrperl (Novice)
on Sep 24, 2007 at 19:20 UTC ( [id://640784]=perlquestion: print w/replies, xml ) Need Help??

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

I want to plot Math::BigInt objects easily. Any recommendations on plotting modules? Here are some things I've considered.
  • GD::SVG ( No good SVG viewers available )
  • GD::PNG ( can't handle huge integers )
  • ImageMagick ( can it handle huge integers? )
  • Graph::VTK ( doesn't install. author says it's an abandoned effort )
  • Math::PARI ( doesn't install )
  • PGPLOT ( any ideas? )
  • OpenGL ( hairy/overkill, but I'll use it as a last resort )
Thanks in advance!
DJ Purrperl

Replies are listed 'Best First'.
Re: Visualizing HUGE integers.
by CountZero (Bishop) on Sep 24, 2007 at 19:28 UTC
    How huge are your huge integers? Probably you will have to scale them down anyhow given a (screen) resolution of a few thousand pixels at best. The problem would thus be avoided and your choices of a plotting module would multiply.

    CountZero

    A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

      Let's say 40-50 decimal digits. You're correct in that the screen resolution is only a few thousand pixels at most.
      Applying a scaling transformation matrix is a good solution.
      The behavior I'm trying to get will let me plot datapoints that I can scroll to.
        If you want to scroll to datapoints, a Scrolled Tk::Canvas or a Gnome2::Canvas will let you scroll to a huge number with very little slowdown. The bigger the number, the more sensitive the scroll, but you can probably find a way to work around it. Like auto-scrolling to the next datapoint. I havn't tested the upper limit on this. :-)
        #!/usr/bin/perl use warnings; use strict; use Tk; my $mw = new MainWindow; my $c = $mw->Scrolled( 'Canvas', -width => 600, -height => 400, -scrollregion => [ 0, 0, 8000000, 500 ], -scrollbars => 'osoe' )->pack( -fill => 'both', -expand => 1 ); $c->createLine( 40, 40, 7500000, 40 , -width => 5, -fill => 'red', ); my $fixed = $c->createText( 0, 0, -anchor => 'nw', -text => 'Top of vi +ew' ); MainLoop;

        I'm not really a human, but I play one on earth. Cogito ergo sum a bum
Re: Visualizing HUGE integers.
by jgamble (Pilgrim) on Sep 25, 2007 at 15:48 UTC

    Actually, I think you might want to reconsider SVG.

    Firefox supports the features that I think you will want (you're a little vague), and even IE with the Adobe plug-in works very well.

    But even better, the drawing program Inkscape reads and writes SVG and can export images in PNG format (not to mention a long list of other formats).

    Inkscape home page: http://www.inkscape.org/.

    Inkscape Wiki: http://wiki.inkscape.org/wiki/index.php/Inkscape.

      Here's the Firefox bug I reported.
      They said there's a Cairo internal limitation that won't allow it to render any dimensions > 32768
      Inkscape worked out great for viewing the SVG's I generated from Perl. Thanks!
      I guess Mathematica is the right tool for huge scientific visualizations, but it costs a bit much. It would be cheaper to take a Math University course, just to get access to a lab with Mathematica.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://640784]
Approved by Corion
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2024-11-09 06:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    chatterbot is...






    Results (35 votes). Check out past polls.