diff --git a/plotpipe/example6.csv b/plotpipe/example6.csv new file mode 100644 index 0000000..eaf1b55 --- /dev/null +++ b/plotpipe/example6.csv @@ -0,0 +1,6 @@ +header1 +3 +5 +7 +1 +2 diff --git a/plotpipe/plotpipe b/plotpipe/plotpipe index 1e826f5..18da3c3 100755 --- a/plotpipe/plotpipe +++ b/plotpipe/plotpipe @@ -14,7 +14,7 @@ I | B [-H] [-0] [-C str] [-h] [-V] =head1 DESCRIPTION -B is a simple wrapper for GNUPlot to simply plot 1D and 2D-data. +B is a simple wrapper for Gnuplot to simply plot data. The input is a CSV-file. Lines starting with '#' will be used as titles on the plot. @@ -67,6 +67,10 @@ Show version =head1 EXAMPLE +Plot the points (1,100) .. (100,1): + + paste <(seq 100 -1 1) | plotpipe + Plot the points (1,101) .. (100,200): paste <(seq 100) <(seq 101 200) | plotpipe @@ -295,6 +299,9 @@ if(@title) { chomp($title[$#title]); } if(not defined $opt::colsep) { $opt::colsep = find_sep(@csv); } +if($opt::colsep eq "") { + $opt::colsep = "\001soMe valUE tHat dOes nOT eXisT\002"; +} # Autoguess header my @header; @@ -319,14 +326,27 @@ use File::Temp qw(tempfile); $ENV{'TMPDIR'} ||= "/tmp"; my($filehandle,$filename) = tempfile(DIR=>$ENV{'TMPDIR'}, TEMPLATE => 'plotXXXXX'); -for(@csv) { - chomp; -# print((join "\t", split /$opt::colsep/, $_),"\n"); - print $filehandle ((join "\001", split /$opt::colsep/, $_),"\n"); +my $ncols = split /$opt::colsep/, $csv[0]; +if($ncols >= 2) { + # Column 1 = x-axis + for(@csv) { + chomp; + print $filehandle ((join "\001", split /$opt::colsep/, $_),"\n"); + } +} else { + # Column 1 = y-axis + my $t = 1; + # Convert 1 column to 2 column + for(@csv) { + chomp; + print $filehandle ((join "\001", $t++, $_),"\n"); + } + # Plot 2 columns +unshift(@header,""); + $ncols = 2; } # Generate the variant part of Gnuplot script -my $ncols = split /$opt::colsep/, $csv[0]; for(my $col = 2; $col <= $ncols; $col++) { my $legend; if($opt::header) { @@ -348,6 +368,6 @@ plot @plotscript _EOS open GNUPLOT,"|-", "gnuplot -p -e ".Q($plotscript) or die; -# print "gnuplot -p -e ".($plotscript); +#print "gnuplot -p -e ".($plotscript); close GNUPLOT; unlink $filename;