- Deprecated function: Use of "static" in callables is deprecated in Drupal\user\Entity\Role::postLoad() (line 172 of core/modules/user/src/Entity/Role.php).
Drupal\user\Entity\Role::postLoad(Object, Array) (Line: 423)
Drupal\Core\Entity\EntityStorageBase->postLoad(Array) (Line: 353)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 16)
Drupal\user\RoleStorage->isPermissionInRoles('access site in maintenance mode', Array) (Line: 112)
Drupal\Core\Session\UserSession->hasPermission('access site in maintenance mode') (Line: 105)
Drupal\Core\Session\AccountProxy->hasPermission('access site in maintenance mode') (Line: 83)
Drupal\redirect\RedirectChecker->canRedirect(Object) (Line: 120)
Drupal\redirect\EventSubscriber\RedirectRequestSubscriber->onKernelRequestCheckRedirect(Object, 'kernel.request', Object)
call_user_func(Array, Object, 'kernel.request', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.request') (Line: 145)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '23906015-1191-48bc-9ddb-a9677dd7166a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '23906015-1191-48bc-9ddb-a9677dd7166a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '23906015-1191-48bc-9ddb-a9677dd7166a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '23906015-1191-48bc-9ddb-a9677dd7166a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'aa0219dc-5835-42c0-a441-acea9eb8638b') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'aa0219dc-5835-42c0-a441-acea9eb8638b') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'aa0219dc-5835-42c0-a441-acea9eb8638b') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'aa0219dc-5835-42c0-a441-acea9eb8638b') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '46bced97-8f8c-4554-96e1-6c806dc68d5e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '46bced97-8f8c-4554-96e1-6c806dc68d5e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '46bced97-8f8c-4554-96e1-6c806dc68d5e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '46bced97-8f8c-4554-96e1-6c806dc68d5e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '4ee02e14-ccfb-4be4-8003-0840ffebd126') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '4ee02e14-ccfb-4be4-8003-0840ffebd126') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '4ee02e14-ccfb-4be4-8003-0840ffebd126') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '4ee02e14-ccfb-4be4-8003-0840ffebd126') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '3a101cff-a7e9-4811-b25a-248bcb6ec182') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '3a101cff-a7e9-4811-b25a-248bcb6ec182') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '3a101cff-a7e9-4811-b25a-248bcb6ec182') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '3a101cff-a7e9-4811-b25a-248bcb6ec182') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '2f720307-a17a-424b-b720-162b17473b39') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '2f720307-a17a-424b-b720-162b17473b39') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '2f720307-a17a-424b-b720-162b17473b39') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '2f720307-a17a-424b-b720-162b17473b39') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ae8602df-8a78-44bc-a469-9ef8536925d4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ae8602df-8a78-44bc-a469-9ef8536925d4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ae8602df-8a78-44bc-a469-9ef8536925d4') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ae8602df-8a78-44bc-a469-9ef8536925d4') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>diagrama de caja</strong>, también conocido como <strong>diagrama de caja y bigote</strong> o <strong>box plot</strong>, resume la distribución de los datos mostrándonos la posición de sus cuartiles y de los valores atípicos (outliers). Se muestra en seaborn con la función <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> y el argumento <em>kind = "box"</em> o con la función <a href="https://seaborn.pydata.org/generated/seaborn.boxplot.html" target="_blank">seaborn.boxplot</a>. Por defecto, tras calcular la mediana y los cuartiles Q1 y Q3, se calcula el conocido como <em>rango intercuantil</em> (Q3 - Q1). Los "bigotes" o "whiskers" (la línea que sale de la caja) se extienden hasta cubrir 1.5 veces el rango intercuantil por debajo y por encima de Q1 y de Q3, respectivamente. Todos los puntos fuera de este rango son considerados valores atípicos y son mostrados como puntos individuales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box");
En el anterior gráfico distinguimos los cuartiles Q1 y Q3 (límites superior e inferior de las "cajas", distancia a la que nos hemos referido como <em>rango intercuantil</em>), la mediana (línea horizontal dentro de la caja) y los valores considerados "normales" entre los topes superior e inferior de las líneas verticales (los topes representan 1.5 veces el rango intercuantil). Fuera de estos límites vemos los outliers o valores anómalos.
La distancia más allá de la cual un valor se considera anómalo se puede personalizar con el parámetro <strong>whis</strong>. Éste toma, por defecto, el mencionado valor de 1.5. Obsérvese cómo cambia la gráfica si aumentamos este valor a, por ejemplo, 3:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", whis = 3);
Ahora, los valores que eran outliers en la primera gráfica para el jueves ya son todos considerados normales. Y los outliers del sábado también han disminuido en número de forma considerable.
En este tipo de gráfica seguimos teniendo acceso al parámetro <em>hue</em>:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "sex");
Vemos que, si en la categoría de "diagramas de dispersión categóricos" se mostraba cada punto de un color distinto, ahora que se está agregando la información, la alternativa es dividir cada caja según los valores que tome la categoría que se indique ("<em>sex</em>", en este caso).
De todas formas, este enfoque está limitado por el número de valores posibles que tome dicha categoría. En el ejemplo anterior eran dos valores: <em>Male</em> y <em>Female</em>, pero veamos el resultado si utilizamos como variable de segmentación "<em>size</em>", representando el número de comensales:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size");
Aun cuando seaborn hace un bastante buen trabajo mostrando las cajas para cada valor de la variable de segmentación, la interpretación de la gráfica comienza a resultar más compleja. Una opción, por supuesto, es aumentar el tamaño de la figura:
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", hue = "size", aspect = 2);
...o recurrir a los "facets" (mostrar en diferentes gráficas los datos correspondientes a cada valor de la variable categórica):
sns.catplot(x = "day", y = "tip", data = tips, kind = "box", col = "size", col_wrap = 3);
En la visualización anterior se ha recurrido a mostrar las gráficas con un máximo de tres por fila usando el parámetro <strong>col_wrap</strong> ya visto.
Y nada nos impide utilizar esta función con una única variable, mostrándose su distribución:
sns.catplot(x = "tip", data = tips, kind = "box", aspect = 1.5);
', 'es') (Line: 118)
Drupal\filter\Element\ProcessedText::preRenderText(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 88)
__TwigTemplate_a7d6005c89ae729617b9a0c2bccb1776->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 46)
__TwigTemplate_804f7948456cfe20e11a34c43439c7c2->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array, Array) (Line: 43)
__TwigTemplate_bd990293b89f3b78c69fe0ee2f7828b5->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/contrib/classy/templates/field/field--text-with-summary.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('field', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('node_access') (Line: 51)
Drupal\book\BookOutlineStorage->loadMultiple(Array) (Line: 1021)
Drupal\book\BookManager->bookTreeCheckAccess(Array, Array) (Line: 701)
Drupal\book\BookManager->bookTreeBuild('663', Array) (Line: 567)
Drupal\book\BookManager->bookTreeAllData('663', Array, 5) (Line: 792)
Drupal\book\BookManager->bookTreeGetFlat(Array) (Line: 109)
Drupal\book\BookOutline->childrenLinks(Array) (Line: 403)
template_preprocess_book_navigation(Array, 'book_navigation', Array)
call_user_func_array('template_preprocess_book_navigation', Array) (Line: 287)
Drupal\Core\Theme\ThemeManager->render('book_navigation', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('base_table', 'book') (Line: 52)
Drupal\book\BookOutlineStorage->loadMultiple(Array) (Line: 1021)
Drupal\book\BookManager->bookTreeCheckAccess(Array, Array) (Line: 701)
Drupal\book\BookManager->bookTreeBuild('663', Array) (Line: 567)
Drupal\book\BookManager->bookTreeAllData('663', Array, 5) (Line: 792)
Drupal\book\BookManager->bookTreeGetFlat(Array) (Line: 109)
Drupal\book\BookOutline->childrenLinks(Array) (Line: 403)
template_preprocess_book_navigation(Array, 'book_navigation', Array)
call_user_func_array('template_preprocess_book_navigation', Array) (Line: 287)
Drupal\Core\Theme\ThemeManager->render('book_navigation', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('node_access') (Line: 51)
Drupal\book\BookOutlineStorage->loadMultiple(Array, 1) (Line: 831)
Drupal\book\BookManager->loadBookLinks(Array, 1) (Line: 823)
Drupal\book\BookManager->loadBookLink('694') (Line: 419)
template_preprocess_book_navigation(Array, 'book_navigation', Array)
call_user_func_array('template_preprocess_book_navigation', Array) (Line: 287)
Drupal\Core\Theme\ThemeManager->render('book_navigation', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('base_table', 'book') (Line: 52)
Drupal\book\BookOutlineStorage->loadMultiple(Array, 1) (Line: 831)
Drupal\book\BookManager->loadBookLinks(Array, 1) (Line: 823)
Drupal\book\BookManager->loadBookLink('694') (Line: 419)
template_preprocess_book_navigation(Array, 'book_navigation', Array)
call_user_func_array('template_preprocess_book_navigation', Array) (Line: 287)
Drupal\Core\Theme\ThemeManager->render('book_navigation', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Return type of Drupal\google_analytics\Component\Render\GoogleAnalyticsJavaScriptSnippet::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 10 of modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php).
include('/var/www/vhosts/interactivechaos.ovh/httpdocs/modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php') (Line: 578)
Composer\Autoload\ClassLoader::Composer\Autoload\{closure}('/var/www/vhosts/interactivechaos.ovh/httpdocs/modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php') (Line: 432)
Composer\Autoload\ClassLoader->loadClass('Drupal\google_analytics\Component\Render\GoogleAnalyticsJavaScriptSnippet') (Line: 372)
google_analytics_page_attachments(Array) (Line: 313)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}(Object, 'google_analytics') (Line: 405)
Drupal\Core\Extension\ModuleHandler->invokeAllWith('page_attachments', Object) (Line: 310)
Drupal\Core\Render\MainContent\HtmlRenderer->invokePageAttachmentHooks(Array) (Line: 288)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Use of "static" in callables is deprecated in Drupal\user\Entity\Role::postLoad() (line 172 of core/modules/user/src/Entity/Role.php).
Drupal\user\Entity\Role::postLoad(Object, Array) (Line: 423)
Drupal\Core\Entity\EntityStorageBase->postLoad(Array) (Line: 353)
Drupal\Core\Entity\EntityStorageBase->loadMultiple() (Line: 126)
eu_cookie_compliance_page_attachments(Array) (Line: 313)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}(Object, 'eu_cookie_compliance') (Line: 405)
Drupal\Core\Extension\ModuleHandler->invokeAllWith('page_attachments', Object) (Line: 310)
Drupal\Core\Render\MainContent\HtmlRenderer->invokePageAttachmentHooks(Array) (Line: 288)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'node') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 167)
Drupal\book\Plugin\Block\BookNavigationBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 160)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 159)
Drupal\Core\Render\Renderer->renderPlain(Array) (Line: 175)
Drupal\Core\Render\Renderer->renderPlaceholder('', Array) (Line: 665)
Drupal\Core\Render\Renderer->replacePlaceholders(Array) (Line: 550)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 148)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 147)
Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 279)
Drupal\Core\Render\HtmlResponseAttachmentsProcessor->renderPlaceholders(Object) (Line: 71)
Drupal\big_pipe\Render\BigPipeResponseAttachmentsProcessor->processAttachments(Object) (Line: 45)
Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object)
call_user_func(Array, Object, 'kernel.response', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.response') (Line: 202)
Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 190)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('node_access') (Line: 145)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 167)
Drupal\book\Plugin\Block\BookNavigationBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 160)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 159)
Drupal\Core\Render\Renderer->renderPlain(Array) (Line: 175)
Drupal\Core\Render\Renderer->renderPlaceholder('', Array) (Line: 665)
Drupal\Core\Render\Renderer->replacePlaceholders(Array) (Line: 550)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 148)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 147)
Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 279)
Drupal\Core\Render\HtmlResponseAttachmentsProcessor->renderPlaceholders(Object) (Line: 71)
Drupal\big_pipe\Render\BigPipeResponseAttachmentsProcessor->processAttachments(Object) (Line: 45)
Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object)
call_user_func(Array, Object, 'kernel.response', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.response') (Line: 202)
Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 190)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('node_access') (Line: 51)
Drupal\book\BookOutlineStorage->loadMultiple(Array) (Line: 1021)
Drupal\book\BookManager->bookTreeCheckAccess(Array, Array) (Line: 701)
Drupal\book\BookManager->bookTreeBuild('663', Array) (Line: 567)
Drupal\book\BookManager->bookTreeAllData('663', Array) (Line: 171)
Drupal\book\Plugin\Block\BookNavigationBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 160)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 159)
Drupal\Core\Render\Renderer->renderPlain(Array) (Line: 175)
Drupal\Core\Render\Renderer->renderPlaceholder('', Array) (Line: 665)
Drupal\Core\Render\Renderer->replacePlaceholders(Array) (Line: 550)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 148)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 147)
Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 279)
Drupal\Core\Render\HtmlResponseAttachmentsProcessor->renderPlaceholders(Object) (Line: 71)
Drupal\big_pipe\Render\BigPipeResponseAttachmentsProcessor->processAttachments(Object) (Line: 45)
Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object)
call_user_func(Array, Object, 'kernel.response', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.response') (Line: 202)
Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 190)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('base_table', 'book') (Line: 52)
Drupal\book\BookOutlineStorage->loadMultiple(Array) (Line: 1021)
Drupal\book\BookManager->bookTreeCheckAccess(Array, Array) (Line: 701)
Drupal\book\BookManager->bookTreeBuild('663', Array) (Line: 567)
Drupal\book\BookManager->bookTreeAllData('663', Array) (Line: 171)
Drupal\book\Plugin\Block\BookNavigationBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 101)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 160)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 159)
Drupal\Core\Render\Renderer->renderPlain(Array) (Line: 175)
Drupal\Core\Render\Renderer->renderPlaceholder('', Array) (Line: 665)
Drupal\Core\Render\Renderer->replacePlaceholders(Array) (Line: 550)
Drupal\Core\Render\Renderer->doRender(Array, 1) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, 1) (Line: 148)
Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 147)
Drupal\Core\Render\Renderer->renderRoot(Array) (Line: 279)
Drupal\Core\Render\HtmlResponseAttachmentsProcessor->renderPlaceholders(Object) (Line: 71)
Drupal\big_pipe\Render\BigPipeResponseAttachmentsProcessor->processAttachments(Object) (Line: 45)
Drupal\Core\EventSubscriber\HtmlResponseSubscriber->onRespond(Object, 'kernel.response', Object)
call_user_func(Array, Object, 'kernel.response', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.response') (Line: 202)
Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object, Object, 1) (Line: 190)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)