Diff for /loncom/interface/statistics/lonproblemanalysis.pm between versions 1.140 and 1.142.2.3

version 1.140, 2011/01/17 00:19:41 version 1.142.2.3, 2013/12/30 14:19:58
Line 31  use Apache::lonnet; Line 31  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::loncoursedata();  use Apache::loncoursedata();
 use Apache::lonquickgrades();  
 use Apache::lonstatistics;  use Apache::lonstatistics;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonstathelpers();  use Apache::lonstathelpers();
Line 75  sub BuildProblemAnalysisPage { Line 74  sub BuildProblemAnalysisPage {
     &Apache::lonstatistics::PrepareClasslist();      &Apache::lonstatistics::PrepareClasslist();
     #      #
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Detailed Problem Analysis'));
     &Apache::lonquickgrades::startGradeScreen($r,'statistics');  
   
     $r->print(&CreateInterface());      $r->print(&CreateInterface());
     #      #
Line 146  sub BuildProblemAnalysisPage { Line 144  sub BuildProblemAnalysisPage {
             my $resource = $current_problem->{'resource'};              my $resource = $current_problem->{'resource'};
             $r->print('<h1>'.$resource->compTitle.'</h1>');              $r->print('<h1>'.$resource->compTitle.'</h1>');
             $r->print('<h3>'.$resource->src.'</h3>');              $r->print('<h3>'.$resource->src.'</h3>');
             $r->print('<h4>'.&Apache::lonstatistics::section_and_enrollment_description().'</h4>');              $r->print('<p>'.&Apache::lonstatistics::section_and_enrollment_description().'</p>');
             if ($env{'form.show_prob'} eq 'true') {              if ($env{'form.show_prob'} eq 'true') {
                 $r->print('<hr />'                  $r->print('<hr />'
                          .&Apache::lonstathelpers::render_resource($resource)                           .&Apache::lonstathelpers::render_resource($resource)
Line 400  sub numerical_plot_percent { Line 398  sub numerical_plot_percent {
         if ($max <$_) { $max = $_; last; }          if ($max <$_) { $max = $_; last; }
     }      }
     #      #
     my $title = &mt('Percent Difference');      my %lt = &Apache::lonlocal::texthash(
                    'title'  => 'Percent Difference',
                    'xlabel' => 'Percent Difference from Correct',
                    'ylabel' => 'Percent of Answers');
     my @labels = (1..scalar(@bins)-1);      my @labels = (1..scalar(@bins)-1);
     my $graph = &Apache::loncommon::DrawBarGraph      my $graph = &Apache::loncommon::DrawBarGraph
         ($title,'Percent Difference from Correct','Percent of Answers',          ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
          $max,['#33FF00','#FF3300'],\@labels,\@plot_correct,\@plot_incorrect,           $max,['#33FF00','#FF3300'],\@labels,\@plot_correct,\@plot_incorrect,
          {xskip=>1});           {xskip=>1});
     #      #
Line 473  sub numerical_plot_differences { Line 474  sub numerical_plot_differences {
         if ($max <$_) { $max = $_; last; }          if ($max <$_) { $max = $_; last; }
     }      }
     #      #
     my $title = &mt('Difference between submission and correct');      my %lt = &Apache::lonlocal::texthash(
                    'title'  => 'Difference between submission and correct',
                    'xlabel' => 'Difference from Correct',
                    'ylabel' => 'Percent of Answers');
     my @labels = (1..scalar(@bins)-1);      my @labels = (1..scalar(@bins)-1);
     my $graph = &Apache::loncommon::DrawBarGraph      my $graph = &Apache::loncommon::DrawBarGraph
         ($title,'Difference from Correct','Percent of Answers',          ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
          $max,['#33FF00','#FF3300'],\@labels,\@plot_correct,\@plot_incorrect,           $max,['#33FF00','#FF3300'],\@labels,\@plot_correct,\@plot_incorrect,
          {xskip=>1});           {xskip=>1});
     #      #
Line 630  sub numerical_determine_answers { Line 634  sub numerical_determine_answers {
     my ($r,$resource,$partid,$respid,$students)=@_;      my ($r,$resource,$partid,$respid,$students)=@_;
     my $c = $r->connection();      my $c = $r->connection();
     #      #
     my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin      my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,scalar(@$students));
         ($r,'Student Answer Compilation Status',  
          'Student Answer Compilation Progress', scalar(@$students),  
          'inline',undef,'Statistics','stats_status');  
     #      #
     # Read in the cache (if it exists) before we start timing things.      # Read in the cache (if it exists) before we start timing things.
     &Apache::lonstathelpers::ensure_proper_cache($resource->{'symb'});      &Apache::lonstathelpers::ensure_proper_cache($resource->{'symb'});
Line 861  sub radio_response_analysis { Line 862  sub radio_response_analysis {
             $no_data_text,@extra_data);              $no_data_text,@extra_data);
         if ($env{'form.AnalyzeOver'} eq 'tries') {          if ($env{'form.AnalyzeOver'} eq 'tries') {
             $restriction_function = sub {($_[0]->{'tries'} == $plot_num?1:0)};              $restriction_function = sub {($_[0]->{'tries'} == $plot_num?1:0)};
             $correct_foil_title = 'Attempt '.$plot_num;              $correct_foil_title = &mt('Attempt [_1]',$plot_num);
             $incorrect_foil_title = 'Attempt '.$plot_num;              $incorrect_foil_title = &mt('Attempt [_1]',$plot_num);
             $pre_graph_text =               $pre_graph_text = 
                 'Attempt [_1], [_2] submissions, [_3] correct, [_4] incorrect';                  'Attempt [_1], [_2] submissions, [_3] correct, [_4] incorrect';
             $post_graph_text = '';              $post_graph_text = '';
Line 920  sub radio_response_analysis { Line 921  sub radio_response_analysis {
         # Concept Plot          # Concept Plot
         my $concept_plot = '';          my $concept_plot = '';
         if (scalar(@$concepts) > 1) {          if (scalar(@$concepts) > 1) {
               my $title = &mt('Correct Concepts');
             $concept_plot = &RR_concept_plot($concepts,$foil_choice_data,              $concept_plot = &RR_concept_plot($concepts,$foil_choice_data,
                                              'Correct Concepts');                                               $title);
         }          }
         # % Choosing plot          # % Choosing plot
         my $choice_plot = &RR_create_percent_selected_plot          my $choice_plot = &RR_create_percent_selected_plot
Line 1036  sub RR_concept_plot { Line 1038  sub RR_concept_plot {
     for (my $i=0;$i<=$#correct;$i++) {       for (my $i=0;$i<=$#correct;$i++) { 
         $correct[$i] = sprintf('%0f',$correct[$i]/$total*100);          $correct[$i] = sprintf('%0f',$correct[$i]/$total*100);
     }      }
     my $xlabel = 'concept';      my $xlabel = &mt('concept');
       my $ylabel = &mt('Percent Choosing');
     my $plot=  &Apache::loncommon::DrawBarGraph($title,      my $plot=  &Apache::loncommon::DrawBarGraph($title,
                                                 $xlabel,                                                  $xlabel,
                                                 'Percent Choosing',                                                  $ylabel,
                                                 100,                                                  100,
                                                 ['#33ff00','#ff3300'],                                                  ['#33ff00','#ff3300'],
                                                 undef,                                                  undef,
Line 1105  sub RR_create_percent_selected_plot { Line 1108  sub RR_create_percent_selected_plot {
         @labels = (1 .. scalar(@correct));          @labels = (1 .. scalar(@correct));
     }      }
     #      #
     my $xlabel = 'foil chosen';      my $xlabel = &mt('foil chosen');
       my $ylabel = &mt('Percent Choosing');
     my $plot=  &Apache::loncommon::DrawBarGraph($title,      my $plot=  &Apache::loncommon::DrawBarGraph($title,
                                                 $xlabel,                                                  $xlabel,
                                                 'Percent Choosing',                                                  $ylabel,
                                                 100,                                                  100,
                                                 ['#33ff00','#ff3300'],                                                  ['#33ff00','#ff3300'],
                                                 \@labels,                                                  \@labels,
Line 1169  sub RR_create_stacked_selection_plot { Line 1173  sub RR_create_stacked_selection_plot {
         push(@empty_row,0);          push(@empty_row,0);
     }      }
     #      #
       my $xlabel = &mt('Correct Foil');
       my $ylabel = &mt('foils chosen Incorrectly');
     my $graph = &Apache::loncommon::DrawBarGraph      my $graph = &Apache::loncommon::DrawBarGraph
         ($title,'Correct Foil','foils chosen Incorrectly',          ($title,$xlabel,$ylabel,
          100,$plotcolors,\@labels,\@empty_row,@dataset);           100,$plotcolors,\@labels,\@empty_row,@dataset);
     return ($graph,\%count_per_foil);      return ($graph,\%count_per_foil);
 }  }
Line 1366  sub OR_tries_analysis { Line 1372  sub OR_tries_analysis {
                 }                  }
             }              }
             #              #
               my %lt = &Apache::lonlocal::texthash(
                            'title'  => 'Correct Concepts',
                            'xlabel' => 'Concept Number',
                            'ylabel' => 'Percent Correct');
             $concept_graph = &Apache::loncommon::DrawBarGraph              $concept_graph = &Apache::loncommon::DrawBarGraph
                 ('Correct Concepts','Concept Number','Percent Correct',                  ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
                  100,$plotcolors,undef,\@concept_plot_data,{xskip=>1});                   100,$plotcolors,undef,\@concept_plot_data,{xskip=>1});
         }          }
         #          #
Line 1405  sub OR_tries_analysis { Line 1415  sub OR_tries_analysis {
             push(@Labels,'');              push(@Labels,'');
         }          }
         #          #
          my %lt = &Apache::lonlocal::texthash(
                       'title'  => 'Correct Statements',
                       'xlabel' => 'Statement',
                       'ylabel' => '% Answered Correct');
         my $correct_graph = &Apache::loncommon::DrawBarGraph          my $correct_graph = &Apache::loncommon::DrawBarGraph
             ('Correct Statements','Statement','% Answered Correct',              ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
              100,$plotcolors,\@Labels,$Datasets[0],{xskip=>1});               100,$plotcolors,\@Labels,$Datasets[0],{xskip=>1});
                   
         #          #
Line 1417  sub OR_tries_analysis { Line 1431  sub OR_tries_analysis {
         }          }
         my $count = $response_data{'_total'}->[$try] -           my $count = $response_data{'_total'}->[$try] - 
                                            $response_data{'_correct'}->[$try];                                             $response_data{'_correct'}->[$try];
           %lt = &Apache::lonlocal::texthash(
                     'title'  => 'Incorrect Statements',
                     'xlabel' => 'Statement',
                     'ylabel' => '% Chosen Incorrectly');
         my $incorrect_graph = &Apache::loncommon::DrawBarGraph          my $incorrect_graph = &Apache::loncommon::DrawBarGraph
             ('Incorrect Statements','Statement','% Chosen Incorrectly',              ($lt{'title'},$lt{'xlabel'},$lt{'ylabel'},
              100,$plotcolors,\@Labels,@Datasets,{xskip=>1});               100,$plotcolors,\@Labels,@Datasets,{xskip=>1});
         $analysis_html.=           $analysis_html.= 
             '<tr><td colspan="4" align="center">'.              '<tr><td colspan="4" align="center">'.
Line 1480  sub OR_time_analysis { Line 1498  sub OR_time_analysis {
     if (defined($Concepts)) { $num_concepts = scalar(@$Concepts); }      if (defined($Concepts)) { $num_concepts = scalar(@$Concepts); }
     #      #
     if ($num_concepts < 2) {      if ($num_concepts < 2) {
         $table = '<h3>'.          $table = '<p class="LC_info">'.
             &mt('Not enough data for concept analysis.  '.                   &mt('Not enough data for concept analysis.'.
                 'Performing Foil Analysis').                       ' Performing Foil Analysis instead.').
                 '</h3>'.$table;                   '</p>'.
                    $table;
     }      }
     #      #
     my $num_plots = $env{'form.NumPlots'};      my $num_plots = $env{'form.NumPlots'};
Line 1540  sub OR_time_analysis { Line 1559  sub OR_time_analysis {
         $correct |= 0;          $correct |= 0;
         ##          ##
         $table .= '<tr><td colspan="4" align="center"><font size="+1">'.          $table .= '<tr><td colspan="4" align="center"><font size="+1">'.
             &mt('[_1] submissions from [_2] students, [_3] correct, [_4] incorrect',              &mt('[quant,_1,submission,submissions,No submissions] from [quant,_2,student], [_3] correct, [_4] incorrect',
                 $data_count,$student_count,$correct,$data_count-$correct).                  $data_count,$student_count,$correct,$data_count-$correct).
                 '</font></td></tr>'.$/;                  '</font></td></tr>'.$/;
         my $concept_correct_plot = '';          my $concept_correct_plot = '';
Line 1612  sub OR_Foil_Time_Analysis { Line 1631  sub OR_Foil_Time_Analysis {
     }      }
     #      #
     # Create the plot      # Create the plot
     my $correct_plot = &Apache::loncommon::DrawBarGraph('Correct Statements',      my %lt = &Apache::lonlocal::texthash(
                                                         'Statement Number',                   'title'  => 'Correct Statements',
                                                         'Percent Correct',                   'xlabel' => 'Statement Number',
                    'ylabel' => 'Percent Correct');
       my $correct_plot = &Apache::loncommon::DrawBarGraph($lt{'title'},
                                                           $lt{'xlabel'},
                                                           $lt{'ylabel'},
                                                         100,                                                          100,
                                                         $plotcolors,                                                          $plotcolors,
                                                         undef,                                                          undef,
Line 1623  sub OR_Foil_Time_Analysis { Line 1646  sub OR_Foil_Time_Analysis {
     for (my $j=0; $j< scalar(@{$plotdata[0]});$j++) {      for (my $j=0; $j< scalar(@{$plotdata[0]});$j++) {
         $plotdata[0]->[$j]=0;          $plotdata[0]->[$j]=0;
     }      }
       %lt = &Apache::lonlocal::texthash(
                 'title'  => 'Incorrect Statements',
                 'xlabel' => 'Statement Number',
                 'ylabel' => 'Incorrect Option Choice');
     my $incorrect_plot =       my $incorrect_plot = 
         &Apache::loncommon::DrawBarGraph('Incorrect Statements',          &Apache::loncommon::DrawBarGraph($lt{'title'},
                                          'Statement Number',                                           $lt{'xlabel'},
                                          'Incorrect Option Choice',                                           $lt{'ylabel'},
                                          100,                                           100,
                                          $plotcolors,                                           $plotcolors,
                                          undef,                                           undef,
Line 1655  sub OR_Concept_Time_Analysis { Line 1682  sub OR_Concept_Time_Analysis {
     }      }
     #      #
     # Create the plot      # Create the plot
     return &Apache::loncommon::DrawBarGraph('Correct Concepts',      my %lt = &Apache::lonlocal::texthash(
                                             'Concept Number',                   'title'  => 'Correct Concepts',
                                             'Percent Correct',                   'xlabel' => 'Concept Number',
                    'ylabel' => 'Percent Correct');
       return &Apache::loncommon::DrawBarGraph($lt{'title'},
                                               $lt{'xlabel'},
                                               $lt{'ylabel'},
                                             100,                                              100,
                                             $plotcolors,                                              $plotcolors,
                                             undef,                                              undef,

Removed from v.1.140  
changed lines
  Added in v.1.142.2.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>