--- loncom/xml/lonplot.pm 2007/08/28 23:48:39 1.129 +++ loncom/xml/lonplot.pm 2007/12/05 23:22:18 1.132 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.129 2007/08/28 23:48:39 albertel Exp $ +# $Id: lonplot.pm,v 1.132 2007/12/05 23:22:18 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -435,7 +435,7 @@ my %tic_defaults = }, ); -my @axis_edit_order = ('color','xmin','xmax','ymin','ymax'); +my @axis_edit_order = ('color','xmin','xmax','ymin','ymax','xformat', 'yformat'); my %axis_defaults = ( color => { @@ -472,7 +472,22 @@ my %axis_defaults = description => 'Maximum y-value shown in plot', edit_type => 'entry', size => '10' - } + }, + xformat => { + default => 'on', + test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E))$/}, + description => 'X-axis number formatting', + edit_type => 'choice', + choices => ['on', 'off', '2e', '2f'], + }, + yformat => { + default => 'on', + test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E))$/}, + description => 'X-axis number formatting', + edit_type => 'choice', + choices => ['on', 'off', '2e', '2f'], + }, + ); my @curve_edit_order = ('color','name','linestyle','linewidth','pointtype','pointsize','limit'); @@ -501,7 +516,7 @@ my %curve_defaults = choices => [keys(%linestyles)] }, linewidth => { - default => 2, + default => 1, test => $int_test, description => 'Line width (may not apply to all line styles)', edit_type => 'choice', @@ -1321,6 +1336,22 @@ sub write_gnuplot_file { } # axis if (%axis) { + if ($axis{'xformat'} ne 'on') { + $gnuplot_input .= "set format x "; + if ($axis{'xformat'} eq 'off') { + $gnuplot_input .= "\"\"\n"; + } else { + $gnuplot_input .= "\"\%.".$axis{'xformat'}."\"\n"; + } + } + if ($axis{'yformat'} ne 'on') { + $gnuplot_input .= "set format y "; + if ($axis{'yformat'} eq 'off') { + $gnuplot_input .= "\"\"\n"; + } else { + $gnuplot_input .= "\"\%.".$axis{'yformat'}."\"\n"; + } + } $gnuplot_input .= "set xrange \[$axis{'xmin'}:$axis{'xmax'}\]\n"; $gnuplot_input .= "set yrange \[$axis{'ymin'}:$axis{'ymax'}\]\n"; } @@ -1361,7 +1392,6 @@ sub write_gnuplot_file { $curve->{'function'}.' title "'. $curve->{'name'}.'" with '. $curve->{'linestyle'}; - $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; if (($curve->{'linestyle'} eq 'points') || ($curve->{'linestyle'} eq 'linespoints') || @@ -1374,6 +1404,8 @@ sub write_gnuplot_file { } elsif ($curve->{'linestyle'} eq 'filledcurves') { $gnuplot_input.= ' '.$curve->{'limit'}; } + $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; + } elsif (exists($curve->{'data'})) { # Store data values in $datatext my $datatext = ''; @@ -1397,7 +1429,6 @@ sub write_gnuplot_file { $gnuplot_input.= '"'.$datafilename.'" title "'. $curve->{'name'}.'" with '. $curve->{'linestyle'}; - $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; if (($curve->{'linestyle'} eq 'points') || ($curve->{'linestyle'} eq 'linespoints') || ($curve->{'linestyle'} eq 'errorbars') || @@ -1409,6 +1440,7 @@ sub write_gnuplot_file { } elsif ($curve->{'linestyle'} eq 'filledcurves') { $gnuplot_input.= ' '.$curve->{'limit'}; } + $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; } } # Write the output to a file.