[LON-CAPA-cvs] cvs: loncom /interface/statistics lonproblemanalysis.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Fri, 29 Oct 2004 15:52:32 -0000
matthew Fri Oct 29 11:52:32 2004 EDT
Modified files:
/loncom/interface/statistics lonproblemanalysis.pm
Log:
radiobutton response analysis: Added %true_foils to keep track of which
foils are true. Modified RR_create_stacked_selection_plot to use
this hash to ensure all correct foils show in the stacked plot.
Index: loncom/interface/statistics/lonproblemanalysis.pm
diff -u loncom/interface/statistics/lonproblemanalysis.pm:1.97 loncom/interface/statistics/lonproblemanalysis.pm:1.98
--- loncom/interface/statistics/lonproblemanalysis.pm:1.97 Fri Oct 29 11:27:39 2004
+++ loncom/interface/statistics/lonproblemanalysis.pm Fri Oct 29 11:52:32 2004
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemanalysis.pm,v 1.97 2004/10/29 15:27:39 matthew Exp $
+# $Id: lonproblemanalysis.pm,v 1.98 2004/10/29 15:52:32 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -390,11 +390,15 @@
my $foildata = $problem_analysis->{'_Foils'};
my ($table,$foils,$concepts) = &build_foil_index($problem_analysis);
#
+ my %true_foils;
my $num_true = 0;
- foreach my $foil (@$foils) {
- if ($foildata->{$foil}->{'value'} eq 'true') {
- $num_true++;
+ if (! $problem_analysis->{'answercomputed'}) {
+ foreach my $foil (@$foils) {
+ if ($foildata->{$foil}->{'value'} eq 'true') {
+ $true_foils{$foil}++;
+ }
}
+ $num_true = scalar(keys(%true_foils));
}
#
$analysis_html .= $table;
@@ -433,7 +437,6 @@
#
$analysis_html.='<table>';
for (my $plot_num = 1;$plot_num<=$ENV{'form.NumPlots'};$plot_num++) {
- &Apache::lonnet::logthis('plot num = '.$plot_num);
# classify data ->correct foil -> selected foil
my ($restriction_function,
$correct_foil_title,$incorrect_foil_title,
@@ -509,7 +512,8 @@
if ($problem_analysis->{'answercomputed'} || $num_true > 1) {
($stacked_plot,$count_by_foil) =
&RR_create_stacked_selection_plot($foils,$foil_choice_data,
- $incorrect_foil_title);
+ $incorrect_foil_title,
+ \%true_foils);
}
#
if ($concept_plot ne '' ||
@@ -698,23 +702,29 @@
}
sub RR_create_stacked_selection_plot {
- my ($foils,$foil_data,$title)=@_;
+ my ($foils,$foil_data,$title,$true_foils)=@_;
#
my @dataset; # array of array refs - multicolor rows $datasets[row]->[col]
my @labels;
my $count;
my %column; # maps foil name to column in @datasets
for (my $i=0;$i<scalar(@$foils);$i++) {
+ my $foil = $foils->[$i];
+ if (defined($true_foils) && scalar(keys(%$true_foils)) > 0 ) {
+ next if (! $true_foils->{$foil} );
+ push(@labels,$i+1);
+ } else {
+ next if (! exists($foil_data->{$foil}));
+ push(@labels,$i+1);
+ }
next if (! exists($foil_data->{$foils->[$i]}));
- my $correct_foil = $foils->[$i];
- push(@labels,$i+1);
- $column{$correct_foil}= $count++;
+ $column{$foil}= $count++;
for (my $j=0;$j<scalar(@$foils);$j++) {
my $value = 0;
if ($i != $j ) {
- $value += $foil_data->{$correct_foil}->{$foils->[$j]};
+ $value += $foil_data->{$foil}->{$foils->[$j]};
}
- $dataset[$j]->[$column{$correct_foil}]=$value;
+ $dataset[$j]->[$column{$foil}]=$value;
}
}
#