- 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', '7aaedc91-571b-428a-9efe-db6d53af5d3b') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '7aaedc91-571b-428a-9efe-db6d53af5d3b') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '7aaedc91-571b-428a-9efe-db6d53af5d3b') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '7aaedc91-571b-428a-9efe-db6d53af5d3b') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '90b11ca1-ada6-4d05-b4a5-17b30619fd08') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '90b11ca1-ada6-4d05-b4a5-17b30619fd08') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '90b11ca1-ada6-4d05-b4a5-17b30619fd08') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '90b11ca1-ada6-4d05-b4a5-17b30619fd08') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '8c018e7d-f918-4ef9-be0b-0e5a345186fd') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '8c018e7d-f918-4ef9-be0b-0e5a345186fd') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '8c018e7d-f918-4ef9-be0b-0e5a345186fd') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '8c018e7d-f918-4ef9-be0b-0e5a345186fd') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '13213cd3-09a4-4606-b07a-38e6dfa1862a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '13213cd3-09a4-4606-b07a-38e6dfa1862a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '13213cd3-09a4-4606-b07a-38e6dfa1862a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '13213cd3-09a4-4606-b07a-38e6dfa1862a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '73d3265a-a2ea-4480-83d6-9ebe7f130402') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '73d3265a-a2ea-4480-83d6-9ebe7f130402') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '73d3265a-a2ea-4480-83d6-9ebe7f130402') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '73d3265a-a2ea-4480-83d6-9ebe7f130402') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '2692e492-2b5d-4bda-9478-0d0278662be3') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '2692e492-2b5d-4bda-9478-0d0278662be3') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '2692e492-2b5d-4bda-9478-0d0278662be3') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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', '2692e492-2b5d-4bda-9478-0d0278662be3') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El violin plot combina la funcionalidad del box plot -mostrando los cuartiles de la distribución- y la de la estimación de densidad kernel. Para crearla podemos recurrir a la función a nivel de figura <a href="https://seaborn.pydata.org/generated/seaborn.catplot.html" target="_blank">seaborn.catplot</a> con el argumento <em>kind = "violin"</em> o a la función a nivel de ejes <a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" target="_blank">seaborn.violinplot</a>. Ésta es una forma muy atractiva de mostrar la distribución de un conjunto de datos con respecto a una variable categórica, pero ten en cuenta que, para conjuntos de datos pequeños, la estimación de densidad kernel puede no transmitir con detalle el perfil real de los datos, mostrándolo mucho más suave de lo que realmente es:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin");
Seguimos viendo la caja -ahora reducida a una linea negra de cierto grosos en el centro de cada "violín". En el interior de la línea vemos un pequeño punto blanco que representa la mediana y, lógicamente, los límites de la línea más gruesa representan los cuartiles Q1 y Q3.
En el ejemplo visto, la gráfica se ha mostrado vertical pues hemos dado como primer argumento la variable categórica. Basta intercambiar los dos primeros argumentos para cambiar la forma de la gráfica:
sns.catplot(x = "total_bill", y = "day", data = tips, kind = "violin");
Los parámetros disponibles en este tipo de gráficas proceden del enfoque "<em>box plot</em>" y del enfoque "<em>kde</em>". Así, podemos determinar el "<em>bandwidth</em>" que vimos en la gráfica kdeplot usando el parámetro <strong>bw</strong>. Este parámetro controlaba el grado de ajuste de la KDE a los datos:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", bw = 0.25);
El parámetro <em>hue</em> nos permite, aquí también, crear nuevos violines para cada uno de los valores de la variable categórica que se indique:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex");
Al utilizar el parámetro <em>hue</em> para establecer un criterio de segmentación, cuando éste toma solo dos valores -como en el ejemplo anterior-, es posible agregar el parámetro <strong>split </strong>con el valor <em>True</em> para, en lugar de duplicar los violines, separar cada uno en dos mitades mostrando la distribución de los datos para cada valor de la variable categórica. Es decir, la gráfica anterior es semejante a la siguiente:
sns.catplot(x = "day", y = "total_bill", data = tips, kind = "violin", hue = "sex", split = True);
Si la variable categórica usada tomase más de dos valores, la función devolvería un error.
Por último, es necesario comentar que el interior del violín puede ser personalizado utilizando el parámetro <strong>inner</strong>, parámetro que puede tomar los valores “<em>box</em>”, “<em>quartile</em>”, “<em>point</em>”, “<em>stick</em>” o <em>None</em>. El valor por defecto es "box", pero cambiándolo a "<em>quartile</em>", por ejemplo, se muestran líneas horizontales señalando la posición de los cuartiles. Se muestra a continuación el resultado de utilizar las cuatro opciones comentadas usando la función equivalente <em>seaborn.violinplot</em>:
fig, ax = plt.subplots(2, 2)
fig.set_size_inches(10, 7)
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "box", ax = ax[0, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "quartile", ax = ax[0, 1]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "point", ax = ax[1, 0]);
sns.violinplot(x = "day", y = "total_bill", data = tips, kind = "violin", inner = "stick", ax = ax[1, 1]);
La opción <em>inner = None</em> simplemente oculta la caja en el interior de cada violín.
', '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) (Line: 1021)
Drupal\book\BookManager->bookTreeCheckAccess(Array, Array) (Line: 1179)
Drupal\book\BookManager->bookSubtreeData(Array) (Line: 56)
Drupal\book\BookOutline->prevLink(Array) (Line: 407)
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: 1179)
Drupal\book\BookManager->bookSubtreeData(Array) (Line: 56)
Drupal\book\BookOutline->prevLink(Array) (Line: 407)
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)