--- loncom/xml/lonplot.pm 2012/12/05 01:04:03 1.169 +++ loncom/xml/lonplot.pm 2014/05/27 12:31:03 1.174 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.169 2012/12/05 01:04:03 raeburn Exp $ +# $Id: lonplot.pm,v 1.174 2014/05/27 12:31:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -105,7 +105,7 @@ my %linetypes = # For png use these li ); my %ps_linetypes = # For ps the line types are different! ( - solid => 0, + solid => 1, dashed => 7 ); @@ -1714,7 +1714,7 @@ sub generate_tics { my $result = ''; - if (defined %$spec) { + if ((ref($spec) eq 'HASH') && (keys(%{$spec}) > 0)) { @@ -1752,7 +1752,7 @@ sub generate_tics { if ($spec->{'minorfreq'} != 0) { $result .= "set m$type $spec->{'minorfreq'}\n"; } - } else { + } elsif ($target eq 'tex' ) { $result .= "set $type font " . '"Helvetica,22"' ."\n"; } @@ -1984,24 +1984,26 @@ sub write_gnuplot_file { # my $linestyle_index = 50; my $line_width = ''; + my $plots = ''; # If arrows are needed there will be an arrow style for each as well: # my $arrow_style_index = 50; - my $plot_command; - my $plot_type; - for (my $i = 0;$i<=$#curves;$i++) { $curve = $curves[$i]; - $plot_command.= ', ' if ($i > 0); + my $plot_command = ''; + my $plot_type = ''; + if ($i > 0) { + $plot_type = ', '; + } if ($target eq 'tex') { $curve->{'linewidth'} *= 2; } $line_width = $curve->{'linewidth'}; if (exists($curve->{'function'})) { - $plot_type = + $plot_type .= $curve->{'function'}.' title "'. $curve->{'name'}.'" with '. $curve->{'linestyle'}; @@ -2025,7 +2027,7 @@ sub write_gnuplot_file { print $fh $datatext; close($fh); # generate gnuplot text - $plot_type = '"'.$datafilename.'" title "'. + $plot_type .= '"'.$datafilename.'" title "'. $curve->{'name'}.'" with '. $curve->{'linestyle'}; } @@ -2047,10 +2049,6 @@ sub write_gnuplot_file { my $color = $curve->{'color'}; $color =~ s/^x/#/; # Convert xhex color -> #hex color. - my $style_command = "set style line $linestyle_index $pointtype $pointsize linetype $lt linewidth $line_width lc rgb '$color'\n"; - $gnuplot_input .= $style_command; - - if (($curve->{'linestyle'} eq 'points') || ($curve->{'linestyle'} eq 'linespoints') || @@ -2081,8 +2079,8 @@ sub write_gnuplot_file { $arrow_style_index++; } - - + my $style_command = "set style line $linestyle_index $pointtype $pointsize linetype $lt linewidth $line_width lc rgb '$color'\n"; + $gnuplot_input .= $style_command; # The condition below is because gnuplot lumps the linestyle in with the # arrowstyle _sigh_. @@ -2091,9 +2089,10 @@ sub write_gnuplot_file { $plot_command.= " ls $linestyle_index"; } - $gnuplot_input .= 'plot ' . $plot_type . ' ' . $plot_command . "\n"; + $plots .= $plot_type . ' ' . $plot_command; $linestyle_index++; # Each curve get a unique linestyle. } + $gnuplot_input .= 'plot '.$plots; # Write the output to a file. # &Apache::lonnet::logthis($gnuplot_input); # uncomment to log the gnuplot input.