--- loncom/interface/statistics/lonproblemanalysis.pm 2004/10/29 15:27:39 1.97 +++ loncom/interface/statistics/lonproblemanalysis.pm 2004/10/29 15:52:32 1.98 @@ -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 @@ sub radio_response_analysis { 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 @@ sub radio_response_analysis { # $analysis_html.=''; 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 @@ sub radio_response_analysis { 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_percent_selected_plot { } 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[$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{$correct_foil}->{$foils->[$j]}; + $value += $foil_data->{$foil}->{$foils->[$j]}; } - $dataset[$j]->[$column{$correct_foil}]=$value; + $dataset[$j]->[$column{$foil}]=$value; } } #