version 1.163, 2012/07/24 10:50:54
|
version 1.172, 2013/01/31 17:10:38
|
Line 132 my $real_test =
|
Line 132 my $real_test =
|
sub {$_[0]=~s/\s+//g;$_[0]=~/^[+-]?\d*\.?\d*([eE][+-]\d+)?$/}; |
sub {$_[0]=~s/\s+//g;$_[0]=~/^[+-]?\d*\.?\d*([eE][+-]\d+)?$/}; |
my $pos_real_test = |
my $pos_real_test = |
sub {$_[0]=~s/\s+//g;$_[0]=~/^[+]?\d*\.?\d*([eE][+-]\d+)?$/}; |
sub {$_[0]=~s/\s+//g;$_[0]=~/^[+]?\d*\.?\d*([eE][+-]\d+)?$/}; |
my $color_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^x[\da-fA-F]{6}$/}; |
my $color_test; |
|
if ($version < 4.6) { |
|
$color_test = sub {$_[0]=~s/\s+//g;$_[0]=~s/^\#/x/;$_[0]=~/^x[\da-fA-F]{6}$/}; |
|
} else { |
|
$color_test = sub {$_[0]=~s/\s+//g;$_[0]=~s/^x/#/;$_[0]=~/^\#[\da-fA-F]{6}$/}; |
|
} |
my $onoff_test = sub {$_[0]=~/^(on|off)$/}; |
my $onoff_test = sub {$_[0]=~/^(on|off)$/}; |
my $key_pos_test = sub {$_[0]=~/^(top|bottom|right|left|outside|below| )+$/}; |
my $key_pos_test = sub {$_[0]=~/^(top|bottom|right|left|outside|below| )+$/}; |
my $sml_test = sub {$_[0]=~/^(\d+|small|medium|large)$/}; |
my $sml_test = sub {$_[0]=~/^(\d+|small|medium|large)$/}; |
Line 463 my %tic_defaults =
|
Line 468 my %tic_defaults =
|
description => 'Number of minor tics per major tic mark', |
description => 'Number of minor tics per major tic mark', |
edit_type => 'entry', |
edit_type => 'entry', |
size => '10' |
size => '10' |
}, |
}, |
|
rotate => { |
|
default => 'off', |
|
test => $onoff_test, |
|
description => 'Rotate tic label by 90 degrees if on', |
|
edit_type => 'onoff' |
|
} |
); |
); |
|
|
my @axis_edit_order = ('color','xmin','xmax','ymin','ymax','xformat', 'yformat', 'xzero', 'yzero'); |
my @axis_edit_order = ('color','xmin','xmax','ymin','ymax','xformat', 'yformat', 'xzero', 'yzero'); |
Line 1714 sub generate_tics {
|
Line 1725 sub generate_tics {
|
|
|
$result .= "set $type $spec->{'location'} "; |
$result .= "set $type $spec->{'location'} "; |
$result .= ($spec->{'mirror'} eq 'on') ? 'mirror ' : 'nomirror '; |
$result .= ($spec->{'mirror'} eq 'on') ? 'mirror ' : 'nomirror '; |
|
if ($spec->{'rotate'} eq 'on') { |
|
$result .= ' rotate '; |
|
} |
if (defined $spec->{'ticspecs'}) { |
if (defined $spec->{'ticspecs'}) { |
$result .= '( '; |
$result .= '( '; |
my @ticspecs; |
my @ticspecs; |
Line 1738 sub generate_tics {
|
Line 1752 sub generate_tics {
|
if ($spec->{'minorfreq'} != 0) { |
if ($spec->{'minorfreq'} != 0) { |
$result .= "set m$type $spec->{'minorfreq'}\n"; |
$result .= "set m$type $spec->{'minorfreq'}\n"; |
} |
} |
} else { |
} elsif ($target eq 'tex' ) { |
$result .= "set $type font " . '"Helvetica,22"' ."\n"; |
$result .= "set $type font " . '"Helvetica,22"' ."\n"; |
} |
} |
|
|
Line 1874 sub write_gnuplot_file {
|
Line 1888 sub write_gnuplot_file {
|
$gnuplot_input .= "set samples $Apache::lonplot::plot{'samples'}\n"; |
$gnuplot_input .= "set samples $Apache::lonplot::plot{'samples'}\n"; |
# title, xlabel, ylabel |
# title, xlabel, ylabel |
# titles |
# titles |
my $extra_space_x = ($xtics{'location'} eq 'axis') ? ' 0, -0.5 ' : ''; |
my $extra_space_x = ($xtics{'location'} eq 'axis') ? ' offset 0, -0.5 ' : ''; |
my $extra_space_y = ($ytics{'location'} eq 'axis') ? ' -0.5, 0 ' : ''; |
my $extra_space_y = ($ytics{'location'} eq 'axis') ? ' offset -0.5, 0 ' : ''; |
|
|
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$gnuplot_input .= "set title \"$title\" font \"".$font_properties->{'printname'}.",".$fontsize."pt\"\n" if (defined($title)) ; |
$gnuplot_input .= "set title \"$title\" font \"".$font_properties->{'printname'}.",".$fontsize."pt\"\n" if (defined($title)) ; |
Line 1970 sub write_gnuplot_file {
|
Line 1984 sub write_gnuplot_file {
|
# |
# |
my $linestyle_index = 50; |
my $linestyle_index = 50; |
my $line_width = ''; |
my $line_width = ''; |
|
my $plots = ''; |
|
|
# If arrows are needed there will be an arrow style for each as well: |
# If arrows are needed there will be an arrow style for each as well: |
# |
# |
|
|
my $arrow_style_index = 50; |
my $arrow_style_index = 50; |
|
|
my $plot_command; |
|
my $plot_type; |
|
|
|
for (my $i = 0;$i<=$#curves;$i++) { |
for (my $i = 0;$i<=$#curves;$i++) { |
$curve = $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') { |
if ($target eq 'tex') { |
$curve->{'linewidth'} *= 2; |
$curve->{'linewidth'} *= 2; |
} |
} |
$line_width = $curve->{'linewidth'}; |
$line_width = $curve->{'linewidth'}; |
if (exists($curve->{'function'})) { |
if (exists($curve->{'function'})) { |
$plot_type = |
$plot_type .= |
$curve->{'function'}.' title "'. |
$curve->{'function'}.' title "'. |
$curve->{'name'}.'" with '. |
$curve->{'name'}.'" with '. |
$curve->{'linestyle'}; |
$curve->{'linestyle'}; |
Line 2011 sub write_gnuplot_file {
|
Line 2027 sub write_gnuplot_file {
|
print $fh $datatext; |
print $fh $datatext; |
close($fh); |
close($fh); |
# generate gnuplot text |
# generate gnuplot text |
$plot_type = '"'.$datafilename.'" title "'. |
$plot_type .= '"'.$datafilename.'" title "'. |
$curve->{'name'}.'" with '. |
$curve->{'name'}.'" with '. |
$curve->{'linestyle'}; |
$curve->{'linestyle'}; |
} |
} |
Line 2033 sub write_gnuplot_file {
|
Line 2049 sub write_gnuplot_file {
|
my $color = $curve->{'color'}; |
my $color = $curve->{'color'}; |
$color =~ s/^x/#/; # Convert xhex color -> #hex 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') || |
if (($curve->{'linestyle'} eq 'points') || |
($curve->{'linestyle'} eq 'linespoints') || |
($curve->{'linestyle'} eq 'linespoints') || |
Line 2067 sub write_gnuplot_file {
|
Line 2079 sub write_gnuplot_file {
|
$arrow_style_index++; |
$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 |
# The condition below is because gnuplot lumps the linestyle in with the |
# arrowstyle _sigh_. |
# arrowstyle _sigh_. |
Line 2077 sub write_gnuplot_file {
|
Line 2089 sub write_gnuplot_file {
|
$plot_command.= " ls $linestyle_index"; |
$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. |
$linestyle_index++; # Each curve get a unique linestyle. |
} |
} |
|
$gnuplot_input .= 'plot '.$plots; |
# Write the output to a file. |
# Write the output to a file. |
|
|
# &Apache::lonnet::logthis($gnuplot_input); # uncomment to log the gnuplot input. |
# &Apache::lonnet::logthis($gnuplot_input); # uncomment to log the gnuplot input. |
open (my $fh, "> $tmpdir$filename.data"); |
open (my $fh, "> $tmpdir$filename.data"); |
binmode($fh, ':utf8'); |
binmode($fh, ':utf8'); |