- 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-18b6ee3f-b5f5-45c8-954d-8d0040b919f9') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-18b6ee3f-b5f5-45c8-954d-8d0040b919f9') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-18b6ee3f-b5f5-45c8-954d-8d0040b919f9') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-18b6ee3f-b5f5-45c8-954d-8d0040b919f9') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-1e429f98-20b7-4247-972f-652cdbb6f4d3') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-1e429f98-20b7-4247-972f-652cdbb6f4d3') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-1e429f98-20b7-4247-972f-652cdbb6f4d3') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-1e429f98-20b7-4247-972f-652cdbb6f4d3') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-615b813b-038f-415e-a15a-83196caa21e0') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-615b813b-038f-415e-a15a-83196caa21e0') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-615b813b-038f-415e-a15a-83196caa21e0') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-615b813b-038f-415e-a15a-83196caa21e0') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-c8cc7730-e758-4967-a650-2918f8ab3861') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-c8cc7730-e758-4967-a650-2918f8ab3861') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-c8cc7730-e758-4967-a650-2918f8ab3861') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-c8cc7730-e758-4967-a650-2918f8ab3861') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-9ed062c9-d48f-4bbb-a21d-5708364c7c68') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-9ed062c9-d48f-4bbb-a21d-5708364c7c68') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-9ed062c9-d48f-4bbb-a21d-5708364c7c68') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-9ed062c9-d48f-4bbb-a21d-5708364c7c68') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-4bdb19aa-a3d0-42f5-b511-1b7208e5d062') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-4bdb19aa-a3d0-42f5-b511-1b7208e5d062') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-4bdb19aa-a3d0-42f5-b511-1b7208e5d062') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-4bdb19aa-a3d0-42f5-b511-1b7208e5d062') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-72b1d386-d8a7-49ca-bcea-56241dcc7c84') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-72b1d386-d8a7-49ca-bcea-56241dcc7c84') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-72b1d386-d8a7-49ca-bcea-56241dcc7c84') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-72b1d386-d8a7-49ca-bcea-56241dcc7c84') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-32128dc2-825c-4b72-8c12-37c27b586fc0') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-32128dc2-825c-4b72-8c12-37c27b586fc0') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-32128dc2-825c-4b72-8c12-37c27b586fc0') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-32128dc2-825c-4b72-8c12-37c27b586fc0') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-e6e45cc9-be1b-4a28-9e2f-b2bab0c37393') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-e6e45cc9-be1b-4a28-9e2f-b2bab0c37393') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-e6e45cc9-be1b-4a28-9e2f-b2bab0c37393') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-e6e45cc9-be1b-4a28-9e2f-b2bab0c37393') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-f596cdfb-10e1-4d58-91d6-8a47527b7441') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-f596cdfb-10e1-4d58-91d6-8a47527b7441') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-f596cdfb-10e1-4d58-91d6-8a47527b7441') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-f596cdfb-10e1-4d58-91d6-8a47527b7441') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-c44abb15-caac-45eb-b7e9-703dd0f4d271') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-c44abb15-caac-45eb-b7e9-703dd0f4d271') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-c44abb15-caac-45eb-b7e9-703dd0f4d271') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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-c44abb15-caac-45eb-b7e9-703dd0f4d271') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Los <strong>mapas</strong> o <strong>mapas de burbujas</strong> nos permiten mostrar nuestros datos geolocalizados en un mapa lo que, a su vez, permite poner de manifiesto de una forma más clara y rápida la relación entre los valores medidos y su posición geográfica.
Si pinchamos y arrastramos un campo con información geográfica (países, ciudades, etc.) a una zona vacía del área de informes, Power BI interpretará la información y escogerá, por defecto, un mapa para la visualización que se creará.
El panel de campos 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/map_01.jpg"></a>
En este tipo de visualización trabajamos con un valor base ("Ventas", por ejemplo), potencialmente dividido según un criterio de segmentación (a llevar al campo <em>Leyenda</em>), que tenga asociada información de carácter geográfico. Ésta puede estar formada por valores geolocalizables (ciudades, estados, países…) o por conjuntos de valores latitud-longitud. Cada posición se mostrará en el mapa mediante una burbuja cuyo tamaño dependerá de la métrica que llevemos al campo <em>Tamaño:</em>
<ul><li>Campo "<em>Ubicación</em>": recibirá el campo geolocalizable (ciudad, estado, país…). Si se lleva a este campo una jerarquía o más de un campo, la visualización mostrará los típicos controles que nos permitirán movernos por la jerarquía.</li>
<li>Campo "<em>Leyenda</em>": recibirá el criterio de segmentación. Solo admite uno.</li>
<li>Campo "<em>Latitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Longitud</em>": recibirá los valores de latitud de los puntos a geolocalizar.</li>
<li>Campo "<em>Tamaño</em>": recibirá el valor que determinará el tamaño de la burbuja. Solo admite uno.</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>Si llevamos, por ejemplo, el campo <em>Country</em> de nuestro modelo de datos al campo <em>Ubicación</em> de la visualización, ésta muestra 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/map_02.jpg"></a>
Por defecto, se muestra una burbuja del mismo tamaño y color en el centro de cada una de las zonas geográficas en cuestión (obsérvese que, aun estando representando países, la burbuja se muestra en lo que parece ser el centro geográfico del país, no en su capital).
Si llevamos una métrica al campo <em>Tamaño</em>, por ejemplo la medida <em>Sales</em> conteniendo la suma de los importes de venta, las burbujas se muestran con un tamaño proporcional a dicha métrica:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_03.jpg"></a>
Es posible aumentar o disminuir el tamaño global de estas burbujas en <em>Formato > Burbujas > Tamaño</em>. También es posible especificar el color de cada una en <em>Formato > Colores de datos</em> (véase siguiente imagen). Si movemos el cursor encima de una de las burbujas, se muestra la clásica ventana emergente con la información asociada:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_04.jpg"></a>
El igual que ocurre con la visualización "<em>Mapa coroplético</em>", Microsoft admite la posibilidad de que una etiqueta (Boston, por ejemplo) no siempre se interprete correctamente (como la ciudad inglesa o la norteamericana). Para solucionar esto, sugieren la creación de una nueva columna en la tabla en la que se concatene la etiqueta en cuestión con el nombre del país al que pertenece ("Boston UK" o "Boston USA").
Otro problema que puede surgir es con aquellos nombres de, por ejemplo, ciudades, para los que también exista un estado o un país (Georgia, por ejemplo). En este caso podemos decirle a Power BI qué representa exactamente cada campo de nuestra tabla. De esta forma, si "CityName" representa ciudades, podemos seleccionarlo en el área de campos de Power BI y, en <em>Modelado > Propiedades > Categoría de datos</em> seleccionar "Ciudad".
En cualquier caso, Power BI es muy flexible en lo que respecta al tipo de valor de ubicación que acepta, desde detalles muy generales como el nombre de una ciudad hasta el código de un aeropuerto.
Si arrastramos un campo categórico como <em>Number of Children</em> (conteniendo el número de hijos de nuestros clientes) al campo <em>Leyenda</em> de la visualización, cada burbuja se desglosa en sectores que representan los distintos valores de dicho campo. Como se ve en la siguiente imagen, ahora es la información del sector que corresponda la que se muestra en la ventana emergente al mover el cursor por encima:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_05.jpg"></a>
En el ejemplo anterior se ha aumentado el tamaño global de las burbujas para poder apreciar correctamente el desglose de cada una de ellas.
No es posible, en todo caso, mostrar las etiquetas asociadas a cada uno de estos sectores (o las de las burbujas): ni la variable representada ni la métrica asociada.
Como se ha comentado, si llevamos dos o más campos (o una jerarquía) al campo <em>Ubicación</em> de la visualización, podremos desplazarnos por la jerarquía con los controles habituales de Power BI. En la siguiente imagen se muestra la visualización tras llevar el campo <em>City</em> justo debajo de <em>Country</em> y bajar hasta este nivel de la jerarquía:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_06.jpg"></a>
Esta visualización ofrece cinco estilos de mapa. El estilo por defecto es el llamado <em>Carretera</em>, al que se corresponden los ejemplos mostrados hasta ahora. Los otros estilos son:
<ul><li>Aéreo:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_07.jpg"></a>
<ul><li>Oscuro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_08.jpg"></a>
<ul><li>Claro:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_09.jpg"></a>
<ul><li>Y escala de grises:</li>
</ul><a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_10.jpg"></a>
También es posible convertir el mapa de burbujas en un mapa térmico (<em>Formato > Mapa térmico</em>), aunque el resultado no es tan convincente como el de otros mapas explícitamente desarrollados para mostrar ese tipo de información:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-09/map_11.jpg"></a>
Con esta opción activada es posible especificar los colores a mostrar, el radio de cada "mancha" y su transparencia.
', '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)