[LON-CAPA-cvs] cvs: loncom /interface/statistics lonproblemanalysis.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Fri, 29 Oct 2004 16:10:30 -0000
matthew Fri Oct 29 12:10:30 2004 EDT
Modified files:
/loncom/interface/statistics lonproblemanalysis.pm
Log:
RR_create_percent_selected_plot: Fixed bug where if a foil could be true for
some students but not all students the bar for the foil would appear
green (indicating true) for everyone. Now keep track of those for whom
the foil is true seperately than those for whom the foil is false and
produce a stacked bar graph (green & red = true & false).
Index: loncom/interface/statistics/lonproblemanalysis.pm
diff -u loncom/interface/statistics/lonproblemanalysis.pm:1.98 loncom/interface/statistics/lonproblemanalysis.pm:1.99
--- loncom/interface/statistics/lonproblemanalysis.pm:1.98 Fri Oct 29 11:52:32 2004
+++ loncom/interface/statistics/lonproblemanalysis.pm Fri Oct 29 12:10:30 2004
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: lonproblemanalysis.pm,v 1.98 2004/10/29 15:52:32 matthew Exp $
+# $Id: lonproblemanalysis.pm,v 1.99 2004/10/29 16:10:30 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -631,14 +631,18 @@
sub RR_create_percent_selected_plot {
my ($concepts,$foils,$foil_data,$title) = @_;
#
- my %foil_selections;
- my %true;
+ if ($foil_data->{'_count'} == 0) { return ''; };
+ my %correct_selections;
+ my %incorrect_selections;
foreach my $foil (@$foils) {
# foil_data has format $foil_data->{true_foil}->{selected foil}
next if (! exists($foil_data->{$foil}));
- $true{$foil}++;
while (my ($f,$count)= each(%{$foil_data->{$foil}})) {
- $foil_selections{$f}+=$count;
+ if ($f eq $foil) {
+ $correct_selections{$foil} += $count;
+ } else {
+ $incorrect_selections{$foil} += $count;
+ }
}
}
#
@@ -647,24 +651,18 @@
my @correct;
my @incorrect;
#
- my $total =0;
+ my $total = $foil_data->{'_count'};
for (my $i=0;$i<scalar(@$foils);$i++) {
my $foil = $foils->[$i];
- if ($true{$foil}) {
- $correct[$i] = $foil_selections{$foil};
- $incorrect[$i] = 0;
- } else {
- $correct[$i] = 0;
- $incorrect[$i] = $foil_selections{$foil};
- }
- $total+=$foil_selections{$foil};
+ $correct[$i] = $correct_selections{$foil};
+ $incorrect[$i] = $incorrect_selections{$foil};
}
- if ($total == 0) { return ''; };
for (my $i=0;$i<=$#correct;$i++) {
- $correct[$i] = sprintf('%0f',$correct[$i]/$total*100);
+ &Apache::lonnet::logthis('correct['.$i.']='.$correct[$i]);
+ $correct[$i] = sprintf('%2f',$correct[$i]/$total*100);
}
for (my $i=0;$i<=$#incorrect;$i++) {
- $incorrect[$i] = sprintf('%0f',$incorrect[$i]/$total*100);
+ $incorrect[$i] = sprintf('%2f',$incorrect[$i]/$total*100);
}
#
# Put a blank in the data sets between concepts, if there are concepts