- 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', '5cb95665-0bed-4bc6-bc1b-ebe4fb5c61d1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', '5cb95665-0bed-4bc6-bc1b-ebe4fb5c61d1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '5cb95665-0bed-4bc6-bc1b-ebe4fb5c61d1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', '5cb95665-0bed-4bc6-bc1b-ebe4fb5c61d1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', '5cb95665-0bed-4bc6-bc1b-ebe4fb5c61d1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'de197b93-d71a-46dd-b7b4-d4734343b5a4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'de197b93-d71a-46dd-b7b4-d4734343b5a4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'de197b93-d71a-46dd-b7b4-d4734343b5a4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'de197b93-d71a-46dd-b7b4-d4734343b5a4') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'de197b93-d71a-46dd-b7b4-d4734343b5a4') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'd3c3b340-6f32-4f49-8c3e-7c417a0dde25') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'd3c3b340-6f32-4f49-8c3e-7c417a0dde25') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'd3c3b340-6f32-4f49-8c3e-7c417a0dde25') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'd3c3b340-6f32-4f49-8c3e-7c417a0dde25') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'd3c3b340-6f32-4f49-8c3e-7c417a0dde25') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'ffed3d01-1540-4685-bd11-f4c05b36b31a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'ffed3d01-1540-4685-bd11-f4c05b36b31a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ffed3d01-1540-4685-bd11-f4c05b36b31a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'ffed3d01-1540-4685-bd11-f4c05b36b31a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'ffed3d01-1540-4685-bd11-f4c05b36b31a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'fa186d0e-6625-454e-b1ec-fe4a6dd02bcb') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'fa186d0e-6625-454e-b1ec-fe4a6dd02bcb') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'fa186d0e-6625-454e-b1ec-fe4a6dd02bcb') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'fa186d0e-6625-454e-b1ec-fe4a6dd02bcb') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'fa186d0e-6625-454e-b1ec-fe4a6dd02bcb') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'b827a48b-1771-462a-9efa-368315f196ad') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'b827a48b-1771-462a-9efa-368315f196ad') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'b827a48b-1771-462a-9efa-368315f196ad') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'b827a48b-1771-462a-9efa-368315f196ad') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'b827a48b-1771-462a-9efa-368315f196ad') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', '4616f8ed-d40a-4ca3-86d9-6c869075531c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', '4616f8ed-d40a-4ca3-86d9-6c869075531c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '4616f8ed-d40a-4ca3-86d9-6c869075531c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', '4616f8ed-d40a-4ca3-86d9-6c869075531c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', '4616f8ed-d40a-4ca3-86d9-6c869075531c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'edbffb38-1bd8-4ee5-a632-211a33355f44') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'edbffb38-1bd8-4ee5-a632-211a33355f44') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'edbffb38-1bd8-4ee5-a632-211a33355f44') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'edbffb38-1bd8-4ee5-a632-211a33355f44') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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', 'edbffb38-1bd8-4ee5-a632-211a33355f44') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La función <a href="https://seaborn.pydata.org/generated/seaborn.relplot.html" target="_blank">seaborn.relplot</a> muestra, por defecto, un diagrama de dispersión de las dos variables pasadas como argumentos:
iris = sns.load_dataset("iris")
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
Estas variables suelen ser cuantitativas pues, en el caso de que alguna de ellas sea cualitativa, seaborn ofrece gráficas más adecuadas para visualizar la relación entre ellas, como veremos más adelante.
El comportamiento por defecto de la función <em>sns.relplot</em> es el correspondiente al argumento <em>kind = "scatter"</em>. Es decir, las dos siguientes instrucciones son equivalentes:
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris);
sns.relplot(x = "sepal_length", y = "sepal_width", data = iris, kind = "scatter");
Es posible añadir una dimensión adicional utilizando el parámetro "<strong>hue</strong>" ("<em>tonalidad</em>" en español). Éste controla el color de los puntos:
tips = sns.load_dataset("tips")
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips);
En el caso anterior se ha utilizado una variable cualitativa para establecer el color de los puntos, lo que resulta muy sencillo de interpretar (si su cardinalidad no es muy elevada: si tuviésemos 28 valores distintos en la variable "<em>sex</em>" probablemente no sería tan fácilmente interpretable). También podemos utilizar una variable cuantitativa, aunque esto eleva ligeramente la complejidad de la gráfica. Por ejemplo, si mostramos por colores el número de comensales (característica "<em>size</em>"), el resultado es el siguiente:
sns.relplot(x = "total_bill", y = "tip", hue = "size", data = tips);
Obsérvese como, en este caso, seaborn ha cambiado la paleta de colores a una secuencial.
El parámetro <strong>style</strong> permite añadir una dimensión adicional al aplicar un marcador diferente a cada uno de los puntos en función de los valores de la variable que se indique. Si se está añadiendo este criterio de segmentación a una gráfica en la que ya estuviésemos haciendo uso del color (parámetro <em>hue</em>) para segmentar los datos, el resultado puede resultar claramente difícil de interpretar. Por ejemplo, en la siguiente gráfica se modifica la anterior para añadir símbolos distintos en función de que la comida haya sido almuerzo o cena:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "time");
El resultado, efectivamente, no transmite el mensaje con la facilidad que desearíamos (y en este caso solo tenemos dos valores en la variable <em>sex </em>y otros dos en la variable time. Si su cardinalidad fuese mayor, el resultado sería todavía más confuso). Lo que sí podemos hacer es utilizar este herramienta para cambiar los puntos no solo por color según el valor de la variable <em>sex</em>, sino también por símbolo, para reforzar el mensaje:
sns.relplot(x = "total_bill", y = "tip", hue = "sex", data = tips, style = "sex");
La tercera alternativa para añadir una nueva dimensión a los datos es mediante el tamaño de los puntos, lo que podemos conseguir con el parámetro <strong>size</strong>:
sns.relplot(x = "total_bill", y = "tip", size = "size", data = tips);
En la imagen anterior estamos modificando el tamaño del punto en función del número de comensales (campo <em>size</em> del conjunto de datos).
Como se ha comentado, la función <em>seaborn.relplot</em> ejecuta, por defecto, la función <a href="https://seaborn.pydata.org/generated/seaborn.scatterplot.html" target="_blank">seaborn.scatterplot</a> (siendo ésta última una función a nivel de ejes). De esta forma, la anterior gráfica puede ser también creada con la siguiente instrucción:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips);
El único cambio apreciable es el tamaño de la gráfica, pero no olvidemos que las funciones a nivel de figura crean y controlan la figura y el conjunto de ejes según sus propios criterios.
Deshabilitando la leyenda
En ocasiones puede ser conveniente ocultar la leyenda de la gráfica. Para ello, basta con añadir el argumento <em>legend = False</em>. De esta forma, si repetimos el gráfico anterior con esta modificación:
sns.scatterplot(x = "total_bill", y = "tip", size = "size", data = tips, legend = False);
...vemos que no se ha mostrado.
', '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, 4) (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, 4) (Line: 792)
Drupal\book\BookManager->bookTreeGetFlat(Array) (Line: 109)
Drupal\book\BookOutline->childrenLinks(Array) (Line: 403)
template_preprocess_book_navigation(Array, 'book_navigation', Array)
call_user_func_array('template_preprocess_book_navigation', Array) (Line: 287)
Drupal\Core\Theme\ThemeManager->render('book_navigation', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 446)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array) (Line: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_94047fbdba6937b76a4479dfa1763452->doDisplay(Array, Array) (Line: 405)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 378)
Twig\Template->display(Array) (Line: 390)
Twig\Template->render(Array) (Line: 55)
twig_render_template('themes/custom/yg_aesthetic/templates/node.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('node', Array) (Line: 433)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('node_access') (Line: 51)
Drupal\book\BookOutlineStorage->loadMultiple(Array, 1) (Line: 831)
Drupal\book\BookManager->loadBookLinks(Array, 1) (Line: 823)
Drupal\book\BookManager->loadBookLink('683') (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('683') (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)