--- loncom/xml/lonplot.pm 2003/02/07 22:03:21 1.81 +++ loncom/xml/lonplot.pm 2003/09/19 20:05:29 1.90 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.81 2003/02/07 22:03:21 albertel Exp $ +# $Id: lonplot.pm,v 1.90 2003/09/19 20:05:29 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -34,6 +34,8 @@ package Apache::lonplot; use strict; +use warnings FATAL=>'all'; +no warnings 'uninitialized'; use Apache::File; use Apache::response; use Apache::lonxml; @@ -112,7 +114,8 @@ my $words_test = sub {$_[0]=~s/\s+/ ## ## ################################################################### my @gnuplot_edit_order = - qw/alttag bgcolor fgcolor height width font transparent grid samples border align/; + qw/alttag bgcolor fgcolor height width font transparent grid samples + border align texwidth plottype/; my $gnuplot_help_text = <<"ENDPLOTHELP";
@@ -221,7 +224,21 @@ my %gnuplot_defaults =
description => 'alignment for image in html',
edit_type => 'choice',
choices => ['left','right','center']
- }
+ },
+ texwidth => {
+ default => '93',
+ test => $int_test,
+ description => 'Width of plot when printed (mm)',
+ edit_type => 'entry',
+ size => '5'
+ },
+ plottype => {
+ default => 'Cartesian',
+ test => sub {$_[0]=~/^(Polar|Cartesian)$/},
+ description => 'Plot type:',
+ edit_type => 'choice',
+ choices => ['Polar','Cartesian']
+ },
);
my %key_defaults =
@@ -274,43 +291,51 @@ my %label_defaults =
}
);
-my @tic_edit_order = ('location','mirror','start','increment','end');
+my @tic_edit_order = ('location','mirror','start','increment','end',
+ 'minorfreq');
my %tic_defaults =
(
location => {
default => 'border',
test => sub {$_[0]=~/^(border|axis)$/},
- description => 'Location of tick marks',
+ description => 'Location of major tic marks',
edit_type => 'choice',
choices => ['border','axis']
},
mirror => {
default => 'on',
test => $onoff_test,
- description => 'mirror ticks on opposite axis?',
+ description => 'mirror tics on opposite axis?',
edit_type => 'onoff'
},
start => {
default => '-10.0',
test => $real_test,
- description => 'Start ticks at',
+ description => 'Start major tics at',
edit_type => 'entry',
size => '10'
},
increment => {
default => '1.0',
test => $real_test,
- description => 'Place a tick every',
+ description => 'Place a major tic every',
edit_type => 'entry',
size => '10'
},
end => {
default => ' 10.0',
test => $real_test,
- description => 'Stop ticks at ',
+ description => 'Stop major tics at ',
edit_type => 'entry',
size => '10'
},
+ minorfreq => {
+ default => '0',
+ test => $int_test,
+ description => 'Number of minor tics between major tic marks',
+ edit_type => 'entry',
+ size => '10'
+ },
);
my @axis_edit_order = ('color','xmin','xmax','ymin','ymax');
@@ -441,10 +466,10 @@ my %curve_defaults =
my (%plot,%key,%axis,$title,$xlabel,$ylabel,@labels,@curves,%xtics,%ytics);
sub start_gnuplot {
- %plot = (); %key = (); %axis = ();
- $title = undef; $xlabel = undef; $ylabel = undef;
- $#labels = -1; $#curves = -1;
- %xtics = (); %ytics = ();
+ undef(%plot); undef(%key); undef(%axis);
+ undef($title); undef($xlabel); undef($ylabel);
+ undef(@labels); undef(@curves);
+ undef(%xtics); undef(%ytics);
#
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result='';
@@ -506,7 +531,8 @@ sub end_gnuplot {
ENDIMAGE
} elsif ($target eq 'tex') {
&Apache::lonnet::ssi("/cgi-bin/plot.gif?file=$filename.data&output=eps");
- $result = '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics{'.&Apache::lonnet::unescape($filename).'.eps}';
+
+ $result = '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width='.$plot{'texwidth'}.' mm]{'.&Apache::lonnet::unescape($filename).'.eps}';
}
} elsif ($target eq 'edit') {
$result.=&Apache::edit::tag_end($target,$token);
@@ -798,7 +824,11 @@ sub start_function {
my $result='';
if ($target eq 'web' || $target eq 'tex') {
if (exists($curves[-1]->{'data'})) {
- &Apache::lonxml::warning('Use of