For Programmers: Free Programming Magazines  


Home > Archive > PERL Miscellaneous > July 2006 > Re: Sending data from perl to gnuplot and getting an "ASCII-art"









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Re: Sending data from perl to gnuplot and getting an "ASCII-art"
John W. Krahn

2006-07-29, 6:58 pm

Adam Funk wrote:
> I'm generating some data points in a Perl program and trying to send
> them to gnuplot and get back an "ASCII-art" graph (the kind that
> gnuplot generates with the "set term dumb" setting). I'd like to
> improve on the following steps:
>
> (1)
> foreach $x (sort {$a <=> $b} keys(%table) ) {
> $y = $table{$x};
> $line = sprintf("%5d %5d\n", $x, $y);
> $max_y = $y if ($y > $max_y);
> print($line) if ($option{v}); # verbose option
> push(@output,$line);
> }
>
> This produces lines like this:
> -5 2
> -2 5
>
> (2) Then I use recipe 7.5 from the Perl Cookbook to generate two temp
> files, $data_file and $cmd_file, and I write @output from step (1)
> into $data_file.
>
> (3) Then I write a bunch of gnuplot commands as lines to $cmd_file:
> set term dumb
> set ylabel \"Frequency\"
> set xlabel \"Time\"
> unset key
> set yrange [0:$max_y]
> plot \"$temp_filename\" with impulses
>
> (4) and call gnuplot thus:
> system('gnuplot', $cmd_file);
>
> The Perl program runs and prints the plot to the screen. I'm about to
> modify it to use backticks
> $gnuplot_output = `gnuplot $cmd_file`
> but I can't believe there isn't a better way than what I've done to
> send a list of commands to gnuplot and get the plot back.
>
> Is there?


You can probably do what you want with IPC::Open2 or Expect.

perldoc IPC::Open2
perldoc Expect



John
--
use Perl;
program
fulfillment
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com