} $line->y_order = array('allusers'); if ($groups) { foreach (array_keys($groups) as $group) { $useridingroup = get_users_by_capability($modcontext, array('mod/quiz:reviewmyattempts', 'mod/quiz:attempt'), '', '', '', '', $group, '', false); if ($useridingroup) { $useridingrouplist = join(',', array_keys($useridingroup)); $groupdata = quiz_report_grade_bands($bandwidth, $bands, $quizid, $useridingrouplist); if ($groupdata) { $line->parameter['bar_size'] = 1.2; $line->y_data['groupusers' . $group] = $groupdata; //only turn on legends if there is more than one set of bars $line->parameter['legend'] = 'outside-top'; $line->parameter['legend_border'] = 'black'; $line->parameter['legend_offset'] = 4; $line->y_format['groupusers' . $group] = array('colour' => graph_get_new_colour(), 'bar' => 'fill', 'shadow_offset' => 1, 'legend' => groups_get_group_name($group)); $line->y_order[] = 'groupusers' . $group; } } } } $line->parameter['y_min_left'] = 0; // start at 0 $line->parameter['y_max_left'] = max($line->y_data['allusers']); $line->parameter['y_decimal_left'] = 0; // 2 decimal places for y axis. //pick a sensible number of gridlines depending on max value on graph. $gridlines = max($line->y_data['allusers']); while ($gridlines >= 10) { if ($gridlines >= 50) { $gridlines = $gridlines / 5;
$line->parameter['y_label_left'] = '%'; $line->parameter['x_label'] = get_string('position', 'quiz_statistics'); $line->parameter['y_label_angle'] = 90; $line->parameter['x_label_angle'] = 0; $line->parameter['x_axis_angle'] = 60; $line->parameter['legend'] = 'outside-right'; $line->parameter['legend_border'] = 'black'; $line->parameter['legend_offset'] = 4; $line->parameter['bar_size'] = 1; $line->parameter['zero_axis'] = 'grayEE'; $fieldstoplot = array('facility' => get_string('facility', 'quiz_statistics'), 'discriminativeefficiency' => get_string('discriminative_efficiency', 'quiz_statistics')); $fieldstoplotfactor = array('facility' => 100, 'discriminativeefficiency' => 1); $line->x_data = array(); foreach (array_keys($fieldstoplot) as $fieldtoplot) { $line->y_data[$fieldtoplot] = array(); $line->y_format[$fieldtoplot] = array('colour' => graph_get_new_colour(), 'bar' => 'fill', 'shadow_offset' => 1, 'legend' => $fieldstoplot[$fieldtoplot]); } foreach ($questionstatistics as $questionstatistic) { $line->x_data[$questions[$questionstatistic->questionid]->number] = $questions[$questionstatistic->questionid]->number; foreach (array_keys($fieldstoplot) as $fieldtoplot) { $value = !is_null($questionstatistic->{$fieldtoplot}) ? $questionstatistic->{$fieldtoplot} : 0; $value = $value * $fieldstoplotfactor[$fieldtoplot]; $line->y_data[$fieldtoplot][$questions[$questionstatistic->questionid]->number] = $value; } } foreach (array_keys($line->y_data) as $fieldtoplot) { ksort($line->y_data[$fieldtoplot]); $line->y_data[$fieldtoplot] = array_values($line->y_data[$fieldtoplot]); } ksort($line->x_data); $line->x_data = array_values($line->x_data);
$graph->parameter['zero_axis'] = 'grayEE'; // Configure what to display. $fieldstoplot = array( 'facility' => get_string('facility', 'quiz_statistics'), 'discriminativeefficiency' => get_string('discriminative_efficiency', 'quiz_statistics') ); $fieldstoplotfactor = array('facility' => 100, 'discriminativeefficiency' => 1); // Prepare the arrays to hold the data. $xdata = array(); foreach (array_keys($fieldstoplot) as $fieldtoplot) { $ydata[$fieldtoplot] = array(); $graph->y_format[$fieldtoplot] = array( 'colour' => graph_get_new_colour(), 'bar' => 'fill', 'shadow_offset' => 1, 'legend' => $fieldstoplot[$fieldtoplot] ); } // Fill in the data for each question. foreach ($questionstatistics as $questionstatistic) { $number = $questions[$questionstatistic->slot]->number; $xdata[$number] = $number; foreach ($fieldstoplot as $fieldtoplot => $notused) { $value = $questionstatistic->$fieldtoplot; if (is_null($value)) { $value = 0;