--- loncom/xml/lonplot.pm 2008/01/20 02:47:06 1.134 +++ loncom/xml/lonplot.pm 2008/03/19 21:09:09 1.135 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.134 2008/01/20 02:47:06 raeburn Exp $ +# $Id: lonplot.pm,v 1.135 2008/03/19 21:09:09 faziophi Exp $ # # Copyright Michigan State University Board of Trustees # @@ -91,6 +91,12 @@ BEGIN { my $max_str_len = 50; # if a label, title, xlabel, or ylabel text # is longer than this, it will be truncated. +my %linetypes = + ( + solid => 1, + dashed => 0 + ); + my %linestyles = ( lines => 2, # Maybe this will be used in the future @@ -497,7 +503,7 @@ my %axis_defaults = ); -my @curve_edit_order = ('color','name','linestyle','linewidth','pointtype','pointsize','limit'); +my @curve_edit_order = ('color','name','linestyle','linewidth','linetype','pointtype','pointsize','limit'); my %curve_defaults = ( @@ -518,37 +524,44 @@ my %curve_defaults = linestyle => { default => 'lines', test => $linestyle_test, - description => 'Line style', + description => 'Plot with:', edit_type => 'choice', choices => [keys(%linestyles)] }, linewidth => { default => 1, test => $int_test, - description => 'Line width (may not apply to all line styles)', + description => 'Line width (may not apply to all plot styles)', edit_type => 'choice', choices => [1,2,3,4,5,6,7,8,9,10] }, + linetype => { + default => 'solid', + test => sub {$_[0]=~/^(solid|dashed)$/}, + description => 'Line type (may not apply to all plot styles)', + edit_type => 'choice', + choices => ['solid', 'dashed'] + }, pointsize => { default => 1, test => $pos_real_test, - description => 'Point size (may not apply to all line styles)', + description => 'Point size (may not apply to all plot styles)', edit_type => 'entry', size => '5' }, pointtype => { default => 1, test => $int_test, - description => 'Point type (may not apply to all line styles)', + description => 'Point type (may not apply to all plot styles)', edit_type => 'choice', choices => [0,1,2,3,4,5,6] }, limit => { default => 'closed', - test => sub {$_[0]=~/^(closed|x1|x2|y1|y2)$/}, + test => sub {$_[0]=~/^(above|below|closed|x1|x2|y1|y2)$/}, description => 'Point to fill -- for filledcurves', edit_type => 'choice', - choices => ['closed','x1','x2','y1','y2'] + choices => ['above', 'below', 'closed','x1','x2','y1','y2'] }, ); @@ -1464,6 +1477,14 @@ sub write_gnuplot_file { $gnuplot_input.=' pointsize '.$curve->{'pointsize'}; } elsif ($curve->{'linestyle'} eq 'filledcurves') { $gnuplot_input.= ' '.$curve->{'limit'}; + } elsif ($curve->{'linetype'} ne '' && + $curve->{'linestyle'} eq 'lines') { + $gnuplot_input.= ' linetype '; + $gnuplot_input.= $linetypes{$curve->{'linetype'}}; + $gnuplot_input.= ' linecolor rgb "'; + # convert color from xaaaaaa to #aaaaaa + $curve->{'color'} =~ s/x/#/; + $gnuplot_input.= $curve->{'color'}.'"'; } $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; @@ -1500,8 +1521,16 @@ sub write_gnuplot_file { $gnuplot_input.=' pointsize '.$curve->{'pointsize'}; } elsif ($curve->{'linestyle'} eq 'filledcurves') { $gnuplot_input.= ' '.$curve->{'limit'}; + } elsif ($curve->{'linetype'} ne '' && + $curve->{'linestyle'} eq 'lines') { + $gnuplot_input.= ' linetype '; + $gnuplot_input.= $linetypes{$curve->{'linetype'}}; + $gnuplot_input.= ' linecolor rgb "'; + # convert color from xaaaaaa to #aaaaaa + $curve->{'color'} =~ s/x/#/; + $gnuplot_input.= $curve->{'color'}.'"'; } - $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; + $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; } } # Write the output to a file.