version 1.98, 2004/06/28 15:42:49
|
version 1.104, 2004/12/02 15:38:11
|
Line 43 BEGIN {
|
Line 43 BEGIN {
|
# |
# |
# Determine the version of GNUPLOT |
# Determine the version of GNUPLOT |
$weboutputformat = 'gif'; |
$weboutputformat = 'gif'; |
$versionstring = `gnuplot --version`; |
$versionstring = `gnuplot --version 2>/dev/null`; |
if ($versionstring =~ /^gnuplot 4/) { |
if ($versionstring =~ /^gnuplot 4/) { |
$weboutputformat = 'png'; |
$weboutputformat = 'png'; |
} |
} |
Line 119 my $words_test = sub {$_[0]=~s/\s+/
|
Line 119 my $words_test = sub {$_[0]=~s/\s+/
|
################################################################### |
################################################################### |
my @gnuplot_edit_order = |
my @gnuplot_edit_order = |
qw/alttag bgcolor fgcolor height width font transparent grid samples |
qw/alttag bgcolor fgcolor height width font transparent grid samples |
border align texwidth texfont plottype/; |
border align texwidth texfont plottype lmargin rmargin tmargin bmargin |
|
major_ticscale minor_ticscale/; |
|
|
|
my $margin_choices = ['default', |
|
qw{0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20}]; |
|
|
my %gnuplot_defaults = |
my %gnuplot_defaults = |
( |
( |
Line 218 my %gnuplot_defaults =
|
Line 222 my %gnuplot_defaults =
|
edit_type => 'choice', |
edit_type => 'choice', |
choices => ['Cartesian','Polar'] |
choices => ['Cartesian','Polar'] |
}, |
}, |
|
lmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Left margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
rmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Right margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
tmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Top margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
bmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Bottom margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
major_ticscale => { |
|
default => '1', |
|
test => $real_test, |
|
description => 'Size of major tic marks (plot coordinates)', |
|
edit_type => 'entry', |
|
size => '5' |
|
}, |
|
minor_ticscale => { |
|
default => '0.5', |
|
test => $real_test, |
|
description => 'Size of minor tic mark (plot coordinates)', |
|
edit_type => 'entry', |
|
size => '5' |
|
}, |
); |
); |
|
|
my %key_defaults = |
my %key_defaults = |
Line 954 sub write_gnuplot_file {
|
Line 1000 sub write_gnuplot_file {
|
my $gnuplot_input = ''; |
my $gnuplot_input = ''; |
my $curve; |
my $curve; |
my $pt = $plot{'texfont'}; |
my $pt = $plot{'texfont'}; |
|
# |
|
# Check to be sure we do not have any empty curves |
|
my @curvescopy; |
|
foreach my $curve (@curves) { |
|
if (exists($curve->{'function'})) { |
|
if ($curve->{'function'} !~ /^\s*$/) { |
|
push(@curvescopy,$curve); |
|
} |
|
} elsif (exists($curve->{'data'})) { |
|
foreach my $data (@{$curve->{'data'}}) { |
|
if (scalar(@$data) > 0) { |
|
push(@curvescopy,$curve); |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
@curves = @curvescopy; |
# Collect all the colors |
# Collect all the colors |
my @Colors; |
my @Colors; |
push @Colors, $plot{'bgcolor'}; |
push @Colors, $plot{'bgcolor'}; |
Line 966 sub write_gnuplot_file {
|
Line 1030 sub write_gnuplot_file {
|
} |
} |
# set term |
# set term |
if ($target eq 'web') { |
if ($target eq 'web') { |
$gnuplot_input .= 'set term gif '; |
$gnuplot_input .= 'set term '.$weboutputformat .' '; |
$gnuplot_input .= 'transparent ' if ($plot{'transparent'} eq 'on'); |
$gnuplot_input .= 'transparent ' if ($plot{'transparent'} eq 'on'); |
$gnuplot_input .= $plot{'font'} . ' '; |
$gnuplot_input .= $plot{'font'} . ' '; |
$gnuplot_input .= 'size '.$plot{'width'}.','.$plot{'height'}.' '; |
$gnuplot_input .= 'size '.$plot{'width'}.','.$plot{'height'}.' '; |
Line 984 sub write_gnuplot_file {
|
Line 1048 sub write_gnuplot_file {
|
} else { |
} else { |
# Assume Cartesian |
# Assume Cartesian |
} |
} |
|
# margin |
|
if (lc($plot{'lmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set lmargin '.$plot{'lmargin'}.$/; |
|
} |
|
if (lc($plot{'rmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set rmargin '.$plot{'rmargin'}.$/; |
|
} |
|
if (lc($plot{'tmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set tmargin '.$plot{'tmargin'}.$/; |
|
} |
|
if (lc($plot{'bmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set bmargin '.$plot{'bmargin'}.$/; |
|
} |
|
# tic scales |
|
$gnuplot_input .= 'set ticscale '. |
|
$plot{'major_ticscale'}.' '.$plot{'minor_ticscale'}.$/; |
# grid |
# grid |
$gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on'); |
$gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on'); |
# border |
# border |
Line 1043 sub write_gnuplot_file {
|
Line 1123 sub write_gnuplot_file {
|
my $label; |
my $label; |
foreach $label (@labels) { |
foreach $label (@labels) { |
$gnuplot_input .= 'set label "'.$label->{'text'}.'" at '. |
$gnuplot_input .= 'set label "'.$label->{'text'}.'" at '. |
$label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'}.' font "Helvetica,'.$pt.'pt"'.$/ ; |
$label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'}; |
|
if ($target eq 'tex') { |
|
$gnuplot_input .=' font "Helvetica,'.$pt.'pt"' ; |
|
} |
|
$gnuplot_input .= $/; |
} |
} |
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$gnuplot_input .="set size 1,".$plot{'height'}/$plot{'width'}*1.38; |
$gnuplot_input .="set size 1,".$plot{'height'}/$plot{'width'}*1.38; |
Line 1154 sub edit_attributes {
|
Line 1238 sub edit_attributes {
|
($description,$attr,$token, |
($description,$attr,$token, |
$defaults->{$attr}->{'size'}); |
$defaults->{$attr}->{'size'}); |
} elsif ($defaults->{$attr}->{'edit_type'} eq 'choice') { |
} elsif ($defaults->{$attr}->{'edit_type'} eq 'choice') { |
$result .= &Apache::edit::select_arg |
$result .= &Apache::edit::select_or_text_arg |
($description,$attr,$defaults->{$attr}->{'choices'},$token); |
($description,$attr,$defaults->{$attr}->{'choices'},$token); |
} elsif ($defaults->{$attr}->{'edit_type'} eq 'onoff') { |
} elsif ($defaults->{$attr}->{'edit_type'} eq 'onoff') { |
$result .= &Apache::edit::select_arg |
$result .= &Apache::edit::select_or_text_arg |
($description,$attr,['on','off'],$token); |
($description,$attr,['on','off'],$token); |
} |
} |
$result .= '<br />'; |
$result .= '<br />'; |