- 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', 'insert-max_800_px-bdde7c1f-fe2a-4ff0-84b5-3cf6a84f5641') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-bdde7c1f-fe2a-4ff0-84b5-3cf6a84f5641') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-bdde7c1f-fe2a-4ff0-84b5-3cf6a84f5641') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-bdde7c1f-fe2a-4ff0-84b5-3cf6a84f5641') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-926feec9-b0dc-43db-bbbd-217fbed44a81') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-926feec9-b0dc-43db-bbbd-217fbed44a81') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-926feec9-b0dc-43db-bbbd-217fbed44a81') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-926feec9-b0dc-43db-bbbd-217fbed44a81') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-2f8a6e83-8365-42e8-9124-155c2bd42684') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-2f8a6e83-8365-42e8-9124-155c2bd42684') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-2f8a6e83-8365-42e8-9124-155c2bd42684') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-2f8a6e83-8365-42e8-9124-155c2bd42684') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-debc6675-5c97-473a-a04c-b59050566fc1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-debc6675-5c97-473a-a04c-b59050566fc1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-debc6675-5c97-473a-a04c-b59050566fc1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-debc6675-5c97-473a-a04c-b59050566fc1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-98524af3-a176-4440-9106-e2bfc7bdb516') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-98524af3-a176-4440-9106-e2bfc7bdb516') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-98524af3-a176-4440-9106-e2bfc7bdb516') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-98524af3-a176-4440-9106-e2bfc7bdb516') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-22a6e3b1-3740-41f1-8e27-5733bbe947aa') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-22a6e3b1-3740-41f1-8e27-5733bbe947aa') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-22a6e3b1-3740-41f1-8e27-5733bbe947aa') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-22a6e3b1-3740-41f1-8e27-5733bbe947aa') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-ab7a5072-ae87-4eab-8d74-706101e5181e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-ab7a5072-ae87-4eab-8d74-706101e5181e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-ab7a5072-ae87-4eab-8d74-706101e5181e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-ab7a5072-ae87-4eab-8d74-706101e5181e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-1cbc3599-9688-4c1d-816d-e11ce29698b2') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-1cbc3599-9688-4c1d-816d-e11ce29698b2') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-1cbc3599-9688-4c1d-816d-e11ce29698b2') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-1cbc3599-9688-4c1d-816d-e11ce29698b2') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-52c6aa55-cf51-43bb-8a29-71a7d22f1dac') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-52c6aa55-cf51-43bb-8a29-71a7d22f1dac') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-52c6aa55-cf51-43bb-8a29-71a7d22f1dac') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-52c6aa55-cf51-43bb-8a29-71a7d22f1dac') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-7abbfd50-dd3c-477b-88fa-45f88d1d7edc') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-7abbfd50-dd3c-477b-88fa-45f88d1d7edc') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-7abbfd50-dd3c-477b-88fa-45f88d1d7edc') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-7abbfd50-dd3c-477b-88fa-45f88d1d7edc') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-1358892b-d527-4e7f-8102-9eb92b051487') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-1358892b-d527-4e7f-8102-9eb92b051487') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-1358892b-d527-4e7f-8102-9eb92b051487') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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', 'insert-max_800_px-1358892b-d527-4e7f-8102-9eb92b051487') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('El <strong>mapa de formas</strong> o <strong>shape map</strong> es otra alternativa que Power BI ofrece para mostrar información en un mapa. En este caso tendremos que seleccionar el país al que representa el mapa (<em>Formato > Forma</em>, opción que no se muestra hasta que no llevamos algún campo al panel de configuración de la visualización), mostrándose en él los estados, provincias, condados... que lo forman con un color que dependerá del campo de nuestro modelo de datos que hayamos llevado al campo “<em>Saturación de color</em>” de la visualización.
El panel de configuración de esta visualización es el siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_01.jpg"></a>
Partimos de un valor base (“Ventas”, por ejemplo), potencialmente dividido según un criterio de segmentación ("Categoría de producto"), que tenga asociada información de carácter geográfico. Ésta deberá estar formada por los códigos correspondientes a las divisiones geográficas existentes en el país seleccionado -no se permiten los conjuntos de valores latitud-longitud-. Cada localización se mostrará en el mapa ocupando un área de dos dimensiones cuya intensidad de color será gestionable mediante otro campo:
<ul><li>Campo “<em>Ubicación</em>”: recibirá el campo geolocalizable (códigos de los estados, condados…)</li>
<li>Campo “<em>Leyenda</em>”: recibirá el criterio de segmentación (solo admite uno). Al añadirlo, las etiquetas correspondientes a los valores de este campo se muestran con formato de leyenda permitiendo hacer clic en ellas para filtrar los valores mostrados en el mapa.</li>
<li>Campo “<em>Saturación de color</em>”: recibirá el campo (solo admite uno) que será responsable de la intensidad del color mostrado en cada ubicación geográfica.</li>
<li>Campo “<em>Información sobre herramientas</em>”: recibirá campos cuyo contenido queremos que se muestre en la ventana emergente que se abre al mover el ratón por encima de un sector.</li>
</ul>Para probar este tipo de visualización creamos una instancia de la misma, y arrastramos el campo <em>Units</em> de la tabla <em>Ireland</em> al campo <em>Saturación de color</em> de la visualización. Por defecto se muestra el mapa de los Estados Unidos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_02.jpg"></a>
A continuación, en <em>Formato > Forma > Mapa</em> deberemos escoger el mapa adecuado. En nuestro caso es el de Irlanda:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_03.jpg"></a>
La visualización se actualiza para mostrar el mapa de este país:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_04.jpg"></a>
Ahora deberemos llevar la información geográfica que acompaña a la métrica que estamos analizando al campo <em>Ubicación</em> de la visualización. En nuestro ejemplo es el campo <em>County</em> de la tabla <em>Ireland</em>:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_05.jpg"></a>
Cada uno de los condados de Irlanda se rellena con un color que representa el número de unidades correspondiente.
La columna que llevamos al campo <em>Ubicación</em> deberá contener los códigos geográficos adecuados para el mapa que escojamos. Podemos ver cuáles son estos códigos en <em>Formato > Forma > Ver claves del mapa</em> (tras haber escogido un país). Por ejemplo, los correspondientes a Irlanda son los siguientes:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_06.jpg"></a>
Tenemos también el listado de los códigos para los países incluidos en esta visualización <a href="https://docs.microsoft.com/es-es/power-bi/visuals/desktop-shape-map#region-keys">en esta página web de Microsoft</a>.
Por ejemplo, la tabla usada en nuestro ejemplo ("<em>Irland</em>") es la siguiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_07.jpg"></a>
El listado de países para los que hay disponibles mapas es relativamente pequeño (12 países), pero es posible encontrar mapas personalizados en Internet (véase el enlace a GitHub que acompaña a este artículo).
Volviendo a la visualización, es posible controlar los colores en <em>Formato > Colores de Datos</em>, pudiendo aplicar una paleta de colores divergente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_08.jpg"></a>
No es posible mostrar en la visualización las etiquetas siendo representadas, aunque al mover el cursor por encima de uno de los condados se muestra su nombre y la métrica correspondiente:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_09.jpg"></a>
Por último, para probar el campo "<em>Leyenda</em>" vamos a crear una columna adicional en nuestra tabla <em>Ireland</em> conteniendo un código (al que vamos a llamar <em>Category</em>) que represente el nivel de unidades en cada condado: "A" si el número de unidades es mayor que 40, "B" si es mayor que 20 o "C" si no cumple ninguna de las dos condiciones anteriores. El código DAX es el siguiente:
Category = SWITCH(TRUE(); [Units] >40; "A"; [Units] > 20; "B"; "C")
Si llevamos este campo al campo <em>Leyenda</em> de la visualización, ésta mostrará el siguiente aspecto:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_10.jpg"></a>
La leyenda se muestra en la parte superior de la visualización, aunque es posible personalizar esta posición (y la fuente a usar, su color, etc.). Un clic en alguno de los valores de la leyenda difumina los condados no seleccionados. Así, en la siguiente imagen se ha hecho clic en la etiqueta "B":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/shape_map_11.jpg"></a>
También los colores usados en la leyenda son personalizables (<em>Formato > Colores de datos</em>).
En “<em>Formato > Forma</em>” podemos seleccionar también el tipo de proyección a usar: equirectangular, mercator u ortográfico.
', '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: 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\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 117)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->defineOptions() (Line: 141)
Drupal\views\Plugin\views\PluginBase->init(Object, Object, Array) (Line: 104)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 98)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 117)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 144)
Drupal\views\Plugin\views\PluginBase->init(Object, Object, Array) (Line: 104)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 98)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 117)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 110)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 98)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 38)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 98)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 117)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->defineOptions() (Line: 141)
Drupal\views\Plugin\views\PluginBase->init(Object, Object, Array) (Line: 104)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 98)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 117)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 144)
Drupal\views\Plugin\views\PluginBase->init(Object, Object, Array) (Line: 104)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 98)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 51)
Drupal\views\Plugin\views\filter\ManyToOne->defineOptions() (Line: 117)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 110)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 95)
Drupal\views\Plugin\views\filter\FilterPluginBase->init(Object, Object, Array) (Line: 44)
Drupal\views\Plugin\views\filter\InOperator->init(Object, Object, Array) (Line: 36)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 98)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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\views\ManyToOneHelper::$handler is deprecated in Drupal\views\ManyToOneHelper->__construct() (line 24 of core/modules/views/src/ManyToOneHelper.php).
Drupal\views\ManyToOneHelper->__construct(Object) (Line: 38)
Drupal\views\Plugin\views\filter\ManyToOne->init(Object, Object, Array) (Line: 98)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('filter') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('filter', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2633)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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('entity_type', 'taxonomy_term') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 228)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->valueForm(Array, Object) (Line: 941)
Drupal\views\Plugin\views\filter\FilterPluginBase->buildExposedForm(Array, Object) (Line: 111)
Drupal\views\Form\ViewsExposedForm->buildForm(Array, Object)
call_user_func_array(Array, Array) (Line: 534)
Drupal\Core\Form\FormBuilder->retrieveForm('views_exposed_form', Object) (Line: 281)
Drupal\Core\Form\FormBuilder->buildForm('\Drupal\views\Form\ViewsExposedForm', Object) (Line: 134)
Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase->renderExposedForm(1) (Line: 2638)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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('taxonomy_term_access') (Line: 145)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 228)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->valueForm(Array, Object) (Line: 941)
Drupal\views\Plugin\views\filter\FilterPluginBase->buildExposedForm(Array, Object) (Line: 111)
Drupal\views\Form\ViewsExposedForm->buildForm(Array, Object)
call_user_func_array(Array, Array) (Line: 534)
Drupal\Core\Form\FormBuilder->retrieveForm('views_exposed_form', Object) (Line: 281)
Drupal\Core\Form\FormBuilder->buildForm('\Drupal\views\Form\ViewsExposedForm', Object) (Line: 134)
Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase->renderExposedForm(1) (Line: 2638)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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('entity_type', 'taxonomy_term') (Line: 115)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 228)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->valueForm(Array, Object) (Line: 941)
Drupal\views\Plugin\views\filter\FilterPluginBase->buildExposedForm(Array, Object) (Line: 111)
Drupal\views\Form\ViewsExposedForm->buildForm(Array, Object)
call_user_func_array(Array, Array) (Line: 534)
Drupal\Core\Form\FormBuilder->retrieveForm('views_exposed_form', Object) (Line: 281)
Drupal\Core\Form\FormBuilder->buildForm('\Drupal\views\Form\ViewsExposedForm', Object) (Line: 134)
Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase->renderExposedForm(1) (Line: 2638)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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('taxonomy_term_access') (Line: 145)
Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80)
Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 228)
Drupal\taxonomy\Plugin\views\filter\TaxonomyIndexTid->valueForm(Array, Object) (Line: 941)
Drupal\views\Plugin\views\filter\FilterPluginBase->buildExposedForm(Array, Object) (Line: 111)
Drupal\views\Form\ViewsExposedForm->buildForm(Array, Object)
call_user_func_array(Array, Array) (Line: 534)
Drupal\Core\Form\FormBuilder->retrieveForm('views_exposed_form', Object) (Line: 281)
Drupal\Core\Form\FormBuilder->buildForm('\Drupal\views\Form\ViewsExposedForm', Object) (Line: 134)
Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase->renderExposedForm(1) (Line: 2638)
Drupal\views\Plugin\views\display\DisplayPluginBase->viewExposedFormBlocks() (Line: 35)
Drupal\views\Plugin\Block\ViewsExposedFilterBlock->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)