--- loncom/xml/lonplot.pm 2018/10/24 13:37:43 1.181 +++ loncom/xml/lonplot.pm 2020/01/30 15:59:15 1.183 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.181 2018/10/24 13:37:43 raeburn Exp $ +# $Id: lonplot.pm,v 1.183 2020/01/30 15:59:15 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -529,14 +529,14 @@ my %axis_defaults = }, xformat => { default => 'on', - test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E|P(|\s*\Q\0317\0200\E)))$/}, + test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E|P(|\s*[Pp][Ii])))$/}, 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|P(|\s*\Q\0317\0200\E)))$/}, + test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E|P(|\s*[Pp][Ii])))$/}, description => 'Y-axis number formatting', edit_type => 'choice', choices => ['on', 'off', '2e', '2f'], @@ -1827,7 +1827,13 @@ sub write_gnuplot_file { '/'.$font_properties->{'file'}.'.ttf" '; $gnuplot_input .= $fontsize; $gnuplot_input .= ' size '.$Apache::lonplot::plot{'width'}.','.$Apache::lonplot::plot{'height'}.' '; - $gnuplot_input .= "@Colors\n"; + if ($version > 4.6) { + if ($Apache::lonplot::plot{'bgcolor'}) { + $gnuplot_input .= "background '$Apache::lonplot::plot{'bgcolor'}'\n"; + } + } else { + $gnuplot_input .= "@Colors\n"; + } # set output $gnuplot_input .= "set output\n"; } elsif ($target eq 'tex') { @@ -1903,11 +1909,25 @@ sub write_gnuplot_file { if ($Apache::lonplot::plot{'gridlayer'} eq 'on'); # grid - $gnuplot_input .= 'set grid'.$/ if ($Apache::lonplot::plot{'grid'} eq 'on'); + if (($version > 4.6) && ($Apache::lonplot::plot{'fgcolor'} ne '')) { + $gnuplot_input .= 'set grid linecolor "'.$Apache::lonplot::plot{'fgcolor'}.'"'.$/ + if ($Apache::lonplot::plot{'grid'} eq 'on'); + } else { + $gnuplot_input .= 'set grid'.$/ if ($Apache::lonplot::plot{'grid'} eq 'on'); + } # border - $gnuplot_input .= ($Apache::lonplot::plot{'border'} eq 'on'? - 'set border'.$/ : - 'set noborder'.$/ ); + if ($Apache::lonplot::plot{'border'} eq 'on') { + if (($version > 4.6) && (($axis{'color'} ne '') || ($Apache::lonplot::plot{'fgcolor'} ne ''))) { + $gnuplot_input .= 'set border linecolor "'. + (($axis{'color'} ne '')?$axis{'color'}: + $Apache::lonplot::plot{'fgcolor'}). + '" '.$/; + } else { + $gnuplot_input .= 'set border '.$/; + } + } else { + $gnuplot_input .= 'set noborder '.$/; + } # sampling rate for non-data curves $gnuplot_input .= "set samples $Apache::lonplot::plot{'samples'}\n"; # title, xlabel, ylabel @@ -1936,6 +1956,14 @@ sub write_gnuplot_file { if ($axis{'xformat'} eq 'off') { $gnuplot_input .= "\"\"\n"; } else { + if ($axis{'xformat'} =~ /^(\d+P\s*)[Pp][Ii]/) { + my $xprefix = $1; + if (($target eq 'web') || ($target eq 'tex')) { + $axis{'xformat'} = $xprefix.$lookup{'(pi|#960)'}{$target}; + } else { + $axis{'xformat'} = $xprefix; + } + } $gnuplot_input .= "\"\%.".$axis{'xformat'}."\"\n"; } } @@ -1944,6 +1972,14 @@ sub write_gnuplot_file { if ($axis{'yformat'} eq 'off') { $gnuplot_input .= "\"\"\n"; } else { + if ($axis{'yformat'} =~ /^(\d+P\s*)[Pp][Ii]/) { + my $yprefix = $1; + if (($target eq 'web') || ($target eq 'tex')) { + $axis{'yformat'} = $yprefix.$lookup{'(pi|#960)'}{$target}; + } else { + $axis{'yformat'} = $yprefix; + } + } $gnuplot_input .= "\"\%.".$axis{'yformat'}."\"\n"; } }