[Graph-dev] bugfix/change request for Chart-Graph-3.2's Chart/Graph/Gnuplot.pm
Emile Aben
emile at caida.org
Fri Jan 19 09:45:15 PST 2007
Hi Ketan,
The functionality you want added is the ability to output to screen instead
of to a file. Chart-Graph-3.2 has the ability to output to standard output
instead of to file; you'll have to set the 'output file' option to undef.
I'll discuss with others on the team if we'd want to extend the scope of
Chart::Graph::Gnuplot to support persistant gnuplot processes and how we'd want
to do that.
best regards,
Emile Aben
Data Administrator
CAIDA/SDSC/UCSD
On Fri, Jan 19, 2007 at 10:03:30AM -0500, Ketan Desai wrote:
>
> Hi, We recently upgraded our installation of Chart-Graph-3.2 and I ran into some problems.
> I generally invoke this perl module inside a Perl/Tk application where the user expects to see
> a plot on the screen (I use the gnuplot x11 device).
>
> I tracked my problems down and have two changes to request.
>
> 1) gnuplot used to be invoked with a '-persist' flag. The latest module seems to have just removed that flag.
I didn't find any reference to the -persist flag in our current CVS repository, so I don't think this has ever
been a part of Chart-Graph.
> I would like to add a switch to allow the user to request that form of invocation.
>
> 2) The "output type" option previously could be set to 'undefined' . This is necessary if one does not want to
> write to a file. (I chose not to hack an output type of 'x11' because presumably there are other graphical
> devices besides x11 that one might choose to use.)
>
> I would like to add this functionality back in.
>
> Below I show the diff of my version of Chart/Graph/Gnuplot.pm and our installed version (which came from Chart-Graph-3.2).
>
> Thanks for all your efforts, this module is very useful.
>
> -K
>
>
> *** <loc>/Chart/Graph/Gnuplot.pm 2007-01-10 12:09:40.723747000 -0500
> --- /usr/local/products/perl/5.8.8/lib/site_perl/5.8.8/Chart/Graph/Gnuplot.pm 2006-06-07 17:09:33.000000000 -0400
> ***************
> *** 63,69 ****
> # these variables hold default options for gnuplot
> my %def_gnu_global_opts = (
> "title" => "untitled",
> - "persist" => 0,
> "output type" => "png",
> "output file" => "untitled-gnuplot.png",
> "x-axis label" => "x-axis",
> --- 63,68 ----
> ***************
> *** 116,122 ****
> sub gnuplot {
> my ($user_global_opts_ref, @data_sets) = @_;
> my (%data_opts, %global_opts,);
> ! my ($plottype, $output_file, $plot_file, $output_type, $data_set_ref, $qPersist);
> # create a new filehandle to be used throughout package
> my $handle = new FileHandle;
>
> --- 115,121 ----
> sub gnuplot {
> my ($user_global_opts_ref, @data_sets) = @_;
> my (%data_opts, %global_opts,);
> ! my ($plottype, $output_file, $plot_file, $output_type, $data_set_ref);
> # create a new filehandle to be used throughout package
> my $handle = new FileHandle;
>
> ***************
> *** 358,364 ****
> $output_file = $value;
> }
>
> ! if ($key eq "output type" and defined $value) {
> if (!($value =~ /^(pbm|gif|tgif|png|svg|eps(:? .*)?)$/)) {
> carp "invalid output type: $value";
> $handle->close();
> --- 357,363 ----
> $output_file = $value;
> }
>
> ! if ($key eq "output type") {
> if (!($value =~ /^(pbm|gif|tgif|png|svg|eps(:? .*)?)$/)) {
> carp "invalid output type: $value";
> $handle->close();
> ***************
> *** 367,376 ****
> }
> $output_type = $value;
> }
> -
> - if ($key eq 'persist') {
> - $qPersist = 1;
> - }
> }
>
> # create the data file
> --- 366,371 ----
> ***************
> *** 441,447 ****
> $handle->close();
>
> # gnuplot and convert pbm file to gif
> ! if (not _exec_gnuplot($command_file, $qPersist)) {
> _cleanup_tmpdir();
> return 0;
> }
> --- 436,442 ----
> $handle->close();
>
> # gnuplot and convert pbm file to gif
> ! if (not _exec_gnuplot($command_file)) {
> _cleanup_tmpdir();
> return 0;
> }
> ***************
> *** 765,772 ****
> #
>
> sub _exec_gnuplot {
> ! my ($command_file, $qPersist) = @_;
> ! my $status = system("$gnuplot", ($qPersist ? '-persist' : ()), "$command_file");
>
> if (not _chk_status($status)) {
> return 0;
> --- 760,767 ----
> #
>
> sub _exec_gnuplot {
> ! my ($command_file) = @_;
> ! my $status = system("$gnuplot", "$command_file");
>
> if (not _chk_status($status)) {
> return 0;
> ***************
> *** 1047,1053 ****
> | | 'svg' or "eps $epsoptions"| |
> |'output file' | set your own output file, | 'untitled-gnuplot.png' |
> | | undef to output to STDOUT | |
> - |'persist' | 0 or 1 | 0 |
> |'x-axis label' | set your own label | 'x-axis' |
> |'y-axis label' | set your own label | 'y-axis' |
> |'x2-axis label' | set your own label | none |
> --- 1042,1047 ----
> ***************
> *** 1126,1135 ****
>
> Finally, data can be stored in a file.
>
> - If the plot is to be displayed on a terminal, the "persist" option
> - should be used so that I<Gnuplot> will be invoked with "-persist".
> - The resultant plot window will persist until the user exits it.
> -
> =head2 USING GNUPLOT TO READ AND PLOT DATE/TIME DATA DIRECTLY
>
> I<Gnuplot> now has the capability to read date/time data and to create
> --- 1120,1125 ----
>
>
> _______________________________________________
> Graph-dev mailing list
> Graph-dev at caida.org
> https://rommie.caida.org/mailman/listinfo/graph-dev
More information about the Graph-dev
mailing list