/**
  * Función que genera la gráfica con el promedio de los
  * errores cometidos por los alumnos. Va a mostrarse
  * en el panel del profesor.
  * 
  */
 public function generarGraficaMediaErrores()
 {
     $chart = new \VerticalBarChart(800, 350);
     $serie_errores_unitarios = new \XYDataSet();
     $serie_errores_excepcion = new \XYDataSet();
     $num_alumnos_por_intento = array();
     $alumnos_tabla = TableRegistry::get("Alumnos");
     $alumnos = $alumnos_tabla->find('all');
     $intento_realizado = false;
     foreach ($alumnos as $alumno) {
         $intentos_tabla = TableRegistry::get("Intentos");
         $intentos = $intentos_tabla->find('all')->where(['tarea_id' => $_SESSION["lti_idTarea"], 'alumno_id' => $alumno->id]);
         foreach ($intentos as $intento) {
             $intento_realizado = true;
             $clave = "Intento " . $intento->numero_intento;
             if (array_key_exists($clave, $num_alumnos_por_intento)) {
                 $num_alumnos_por_intento[$clave] += 1;
             } else {
                 $num_alumnos_por_intento[$clave] = 1;
             }
             // Errores
             $num_errores_unitarios = 0;
             $num_errores_excepcion = 0;
             $errores_tabla = TableRegistry::get("Errores");
             $errores = $errores_tabla->find('all')->where(['intento_id' => $intento->id])->toArray();
             foreach ($errores as $error) {
                 if ($error->tipo_error == "failure") {
                     $num_errores_unitarios++;
                 } else {
                     $num_errores_excepcion++;
                 }
             }
             $point_error_unitario = $serie_errores_unitarios->getPointWithX($clave);
             if ($point_error_unitario != null) {
                 $point_error_unitario->setY(round(($point_error_unitario->getY() + $num_errores_unitarios) / $num_alumnos_por_intento[$clave]), 2);
             } else {
                 $serie_errores_unitarios->addPoint(new \Point($clave, $num_errores_unitarios));
             }
             $point_error_excepcion = $serie_errores_excepcion->getPointWithX($clave);
             if ($point_error_excepcion != null) {
                 $point_error_excepcion->setY(round(($point_error_excepcion->getY() + $num_errores_excepcion) / $num_alumnos_por_intento[$clave]), 2);
             } else {
                 $serie_errores_excepcion->addPoint(new \Point($clave, $num_errores_excepcion));
             }
         }
     }
     if ($intento_realizado) {
         $dataSet = new \XYSeriesDataSet();
         $dataSet->addSerie("Unitarios", $serie_errores_unitarios);
         $dataSet->addSerie("Excepciones", $serie_errores_excepcion);
         $chart->setDataSet($dataSet);
         $chart->getPlot()->setGraphCaptionRatio(0.75);
         $chart->setTitle("Promedio de errores cometidos por intento");
         $chart->render("img/" . $_SESSION["lti_idTarea"] . "-prof-promedioErroresUnitariosExcepciones.png");
     }
 }