- 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\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: 54)
Drupal\views\Plugin\views\argument\ManyToOne->defineOptions() (Line: 141)
Drupal\views\Plugin\views\PluginBase->init(Object, Object, Array) (Line: 104)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2318)
Drupal\views\Plugin\views\display\DisplayPluginBase->preExecute() (Line: 1697)
Drupal\views\ViewExecutable->preExecute(Array) (Line: 1632)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\ManyToOne->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: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2318)
Drupal\views\Plugin\views\display\DisplayPluginBase->preExecute() (Line: 1697)
Drupal\views\ViewExecutable->preExecute(Array) (Line: 1632)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\ManyToOne->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 110)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2318)
Drupal\views\Plugin\views\display\DisplayPluginBase->preExecute() (Line: 1697)
Drupal\views\ViewExecutable->preExecute(Array) (Line: 1632)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 35)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 2318)
Drupal\views\Plugin\views\display\DisplayPluginBase->preExecute() (Line: 1697)
Drupal\views\ViewExecutable->preExecute(Array) (Line: 1632)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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('views') (Line: 1316)
Drupal\views\Plugin\views\query\Sql->query() (Line: 1454)
Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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('views_substitutions', Array) (Line: 1418)
Drupal\views\Plugin\views\query\Sql->query() (Line: 1454)
Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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('views') (Line: 1316)
Drupal\views\Plugin\views\query\Sql->query(1) (Line: 1455)
Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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('views_substitutions', Array) (Line: 1418)
Drupal\views\Plugin\views\query\Sql->query(1) (Line: 1455)
Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\ManyToOne->defineOptions() (Line: 141)
Drupal\views\Plugin\views\PluginBase->init(Object, Object, Array) (Line: 104)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 1876)
Drupal\views\ViewExecutable->buildTitle() (Line: 338)
Drupal\views\Plugin\views\display\Feed->attachTo(Object, 'page_1', Array) (Line: 1733)
Drupal\views\ViewExecutable->attachDisplays() (Line: 1333)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\ManyToOne->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: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 1876)
Drupal\views\ViewExecutable->buildTitle() (Line: 338)
Drupal\views\Plugin\views\display\Feed->attachTo(Object, 'page_1', Array) (Line: 1733)
Drupal\views\ViewExecutable->attachDisplays() (Line: 1333)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 54)
Drupal\views\Plugin\views\argument\ManyToOne->defineOptions() (Line: 228)
Drupal\views\Plugin\views\PluginBase->unpackOptions(Array, Array) (Line: 110)
Drupal\views\Plugin\views\HandlerBase->init(Object, Object, Array) (Line: 82)
Drupal\views\Plugin\views\argument\ArgumentPluginBase->init(Object, Object, Array) (Line: 33)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 1876)
Drupal\views\ViewExecutable->buildTitle() (Line: 338)
Drupal\views\Plugin\views\display\Feed->attachTo(Object, 'page_1', Array) (Line: 1733)
Drupal\views\ViewExecutable->attachDisplays() (Line: 1333)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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\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: 35)
Drupal\views\Plugin\views\argument\ManyToOne->init(Object, Object, Array) (Line: 894)
Drupal\views\Plugin\views\display\DisplayPluginBase->getHandlers('argument') (Line: 1045)
Drupal\views\ViewExecutable->_initHandler('argument', Array) (Line: 903)
Drupal\views\ViewExecutable->initHandlers() (Line: 1876)
Drupal\views\ViewExecutable->buildTitle() (Line: 338)
Drupal\views\Plugin\views\display\Feed->attachTo(Object, 'page_1', Array) (Line: 1733)
Drupal\views\ViewExecutable->attachDisplays() (Line: 1333)
Drupal\views\ViewExecutable->build() (Line: 392)
Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196)
Drupal\views\Plugin\views\display\Page->execute() (Line: 1635)
Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81)
Drupal\views\Element\View::preRenderViewElement(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: 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', '850f744c-a3d0-41f0-8c30-1174e2560b5f') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '850f744c-a3d0-41f0-8c30-1174e2560b5f') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '850f744c-a3d0-41f0-8c30-1174e2560b5f') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '850f744c-a3d0-41f0-8c30-1174e2560b5f') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '850f744c-a3d0-41f0-8c30-1174e2560b5f') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '78f0a4f0-0953-4164-9506-1ce8cc5025a5') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '78f0a4f0-0953-4164-9506-1ce8cc5025a5') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '78f0a4f0-0953-4164-9506-1ce8cc5025a5') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '78f0a4f0-0953-4164-9506-1ce8cc5025a5') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '78f0a4f0-0953-4164-9506-1ce8cc5025a5') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-eef0d76e-dfe0-4819-8f9e-7f26c40dcdf7') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-eef0d76e-dfe0-4819-8f9e-7f26c40dcdf7') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-eef0d76e-dfe0-4819-8f9e-7f26c40dcdf7') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-eef0d76e-dfe0-4819-8f9e-7f26c40dcdf7') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-0b63d795-ba1b-43ba-a8f2-587040183c6e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-0b63d795-ba1b-43ba-a8f2-587040183c6e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-0b63d795-ba1b-43ba-a8f2-587040183c6e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-0b63d795-ba1b-43ba-a8f2-587040183c6e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-929db936-eb9d-412b-8038-5c68308302ff') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-929db936-eb9d-412b-8038-5c68308302ff') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-929db936-eb9d-412b-8038-5c68308302ff') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-929db936-eb9d-412b-8038-5c68308302ff') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-9c278d89-25cb-435b-bdd5-7093e4a89295') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-9c278d89-25cb-435b-bdd5-7093e4a89295') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-9c278d89-25cb-435b-bdd5-7093e4a89295') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-9c278d89-25cb-435b-bdd5-7093e4a89295') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta visualización, <strong>Hourglass Chart by MAQ Software</strong>, está concebida para comparar valores en dos escenarios distintos para un mismo conjunto de categorías. Por ejemplo, si las categorías son países en los que se venden nuestros productos, comparar las ventas del año pasado con las de éste, o comparar los productos fabricados y los vendidos... Estos dos grupos de valores se comparan y la comparación (ya sea como porcentaje o como diferencia) se muestra en la visualización.
La mala noticia es que este desarrollo está muy poco depurado, con algunos serios problemas de usabilidad y algunos bugs. Echemos un vistazo a la visualización. El panel de configuración es el siguiente:
A <em>Category</em> deberemos llevar los elementos a comparar (países, categorías de productos, productos...), a <em>Source</em> los valores en el primer escenario y a <em>Destination</em> los valores en el segundo escenario. Por ejemplo, supongamos que tenemos una tabla en la que, para cada categoría de producto, tenemos el número de unidades producidas y el número de unidades vendidas:
Llevamos nuestro campo <em>Category</em> al campo homónimo de la visualización y los campos <em>Production</em> y <em>Sales</em> a <em>Source</em> y <em>Destination</em>, respectivamente, y configuramos estos dos últimos de forma que la función de agregación aplicada sea la suma:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_03.jpg"></a>
El primer problema que apreciamos es que las etiquetas no se ven completamente. Y eso que se ha dado un tamaño bastante razonable a la visualización. Si vamos al panel de formato vemos que las etiquetas de las categorías (que se muestran a la izquierda) tienen ya el menor tamaño posible (<em>Formato > Category Label</em>). Y lo mismo ocurre con las etiquetas de los valores (que se muestran en la parte superior e inferior del "reloj": <em>Formato > Data labels</em>). Y peor todavía, las cifras que muestran las conversiones (el porcentaje de variación o las diferencias) en el centro del reloj no se ven (ninguna): Se muestran tres puntos suspensivos en su lugar.
Y ni dando a la visualización un tamaño ridículamente grande pueden verse todas las etiquetas (haz clic en la siguiente imagen para verla ampliada):
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_04.jpg"></a>
Como puede apreciarse en la imagen anterior, hay todavía una etiqueta en la parte superior derecha que sigue sin verse completamente.
Si movemos el cursor encima de los diferentes componentes del reloj sí vemos la información en la ventana que se muestra:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_05.jpg"></a>
Pero esto no soluciona el problema, por supuesto.
La visualización puede mostrarse vertical (por defecto) u horizontal (<em>Formato > Rotation</em>), aunque los problemas de visibilidad de las etiquetas persisten en ambos modos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/hourglass_chart_maq_06.jpg"></a>
Además, hay algunos bugs: por ejemplo, la leyenda se muestra (en determinadas circunstancias) aun cuando se desactive.
En resumen, la idea, sin ser excesivamente original pues existen visualizaciones con esta misma orientación, es interesante, pero la ejecución hay que calificarla de decepcionante.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '44e597d0-0d5f-4731-aa42-5d7bf2663007') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '44e597d0-0d5f-4731-aa42-5d7bf2663007') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '44e597d0-0d5f-4731-aa42-5d7bf2663007') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '44e597d0-0d5f-4731-aa42-5d7bf2663007') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '44e597d0-0d5f-4731-aa42-5d7bf2663007') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'addd9a39-81d8-4f2d-80fb-246a9b9a10ea') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'addd9a39-81d8-4f2d-80fb-246a9b9a10ea') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'addd9a39-81d8-4f2d-80fb-246a9b9a10ea') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'addd9a39-81d8-4f2d-80fb-246a9b9a10ea') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'addd9a39-81d8-4f2d-80fb-246a9b9a10ea') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-77d8b56a-f3b4-4e64-a1bf-d16d6e275772') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-77d8b56a-f3b4-4e64-a1bf-d16d6e275772') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-77d8b56a-f3b4-4e64-a1bf-d16d6e275772') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-77d8b56a-f3b4-4e64-a1bf-d16d6e275772') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-3aee758e-4963-454e-8d51-c6665361f62f') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-3aee758e-4963-454e-8d51-c6665361f62f') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-3aee758e-4963-454e-8d51-c6665361f62f') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-3aee758e-4963-454e-8d51-c6665361f62f') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-48908765-79a6-48a9-9b46-8db18ea6a97d') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-48908765-79a6-48a9-9b46-8db18ea6a97d') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-48908765-79a6-48a9-9b46-8db18ea6a97d') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-48908765-79a6-48a9-9b46-8db18ea6a97d') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-dab9f6ec-9349-45cc-88bc-46fad0373f37') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-dab9f6ec-9349-45cc-88bc-46fad0373f37') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-dab9f6ec-9349-45cc-88bc-46fad0373f37') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-dab9f6ec-9349-45cc-88bc-46fad0373f37') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-635daf66-6a73-4fca-9727-68a2b903b59e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-635daf66-6a73-4fca-9727-68a2b903b59e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-635daf66-6a73-4fca-9727-68a2b903b59e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-635daf66-6a73-4fca-9727-68a2b903b59e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-cfbdffaa-0217-4588-a89a-f5ea00d9cb12') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-cfbdffaa-0217-4588-a89a-f5ea00d9cb12') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-cfbdffaa-0217-4588-a89a-f5ea00d9cb12') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-cfbdffaa-0217-4588-a89a-f5ea00d9cb12') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-dec4eeca-4154-41f4-9e35-ecb0039b9bb9') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-dec4eeca-4154-41f4-9e35-ecb0039b9bb9') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-dec4eeca-4154-41f4-9e35-ecb0039b9bb9') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-dec4eeca-4154-41f4-9e35-ecb0039b9bb9') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-a367c5df-3466-4243-afee-99b0d5b18fe0') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-a367c5df-3466-4243-afee-99b0d5b18fe0') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-a367c5df-3466-4243-afee-99b0d5b18fe0') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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-a367c5df-3466-4243-afee-99b0d5b18fe0') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('Esta estupenda visualización de MAQ LLC nos permite llevar eventos (definidos por una fecha de comienzo y otra de finalización) a un calendario. Los campos que nos permiten configurar la visualización son los mostrados en la siguiente imagen:
Los únicos campos requeridos son <em>Start date</em> (fecha de comienzo de cada evento) y <em>Events</em> (eventos a mostrar en el calendario). Este último campo deberá necesariamente contener cadenas de texto (no es posible mostrar números, por ejemplo).
Para ver cómo funciona vamos a partir de los siguientes datos:
Vemos que se trata de una tabla con asignaciones de empleados a diferentes tareas limitadas en el tiempo por una fecha de arranque y otra de finalización, tabla que incluye el rol del empleado en cuestión en el campo <em>Category</em> (un mismo empleado puede ser asignado a diferentes tareas con diferentes roles).
El campo <em>Id</em> enlaza esta tabla con la tabla de empleados en la que incluye, entre otros datos, el nombre completo de cada uno.
Comencemos creando una instancia del calendario en el lienzo de Power BI y arrastrando el campo <em>Start</em> de la tabla anterior al campo <em>Start date</em> de la visualización, y el campo <em>Full name</em> de nuestra tabla de empleados al campo <em>Events</em> de la visualización. Ésta mostrará la siguiente imagen:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_03.jpg"></a>
Es decir, si no se añade el campo <em>End date</em>, la visualización presupone que se trata de eventos de un solo día. Los "eventos" (en nuestro caso definidos por el nombre de un trabajador) se muestran en el bloque correspondiente a cada día. Vemos que solo se muestran un máximo de 2 eventos por día: en la imagen anterior, en el recuadro correspondiente al día 12, por ejemplo, hay una etiqueta "+3 more" que indica que hay otros 3 eventos que no se están mostrando. Un clic encima de dicha etiqueta abre una ventana emergente con la lista completa de eventos:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_04.jpg"></a>
Desafortunadamente no es posible modificar el número de eventos a mostrar por día, ni configurar el tamaño de dicho texto (con la esperanza de que quepan más líneas). Tampoco haciendo la visualización más alta o más estrecha se modificará la altura de los recuadros que representan los días.
Si añadimos al campo <em>End date</em> de la visualización el campo con la fecha de terminación de cada evento (campo <em>End</em> de nuestra tabla), la visualización 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-08/calendar_by_maq_05.jpg"></a>
Es posible modificar los colores que reciben los eventos en <em>Formato > Data colors</em>.
El campo de la visualización <em>Event Group</em> nos permite agrupar los eventos según el criterio impuesto por el campo que llevemos aquí, mostrando en este caso todos los eventos del mismo grupo con el mismo color. Por ejemplo, si llevamos a este campo nuestro campo <em>Category</em> (con el rol de cada empleado), la visualización se muestra ahora con 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-08/calendar_by_maq_10.jpg"></a>
Todos los eventos de la misma categoría se muestran con el mismo color, y la leyenda superior también refleja este hecho adecuadamente.
Es posible mostrar los meses anteriores o posteriores haciendo uso de los controles que se muestran en la esquina superior izquierda del calendario. En dicho caso, un clic en el botón "Today" nos devolverá al mes actual:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_06.jpg"></a>
A la misma altura que estos botones pero en el extremo derecho podemos modificar la vista para mostrar la información a nivel de semanas:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_07.jpg"></a>
...aunque puede comprobarse que los textos con los nombres de los eventos no son sencillos de leer. Afortunadamente, al mover el cursor encima de una de las columnas se muestra en una ventanita emergente el nombre del evento completo. También tenemos la leyenda como ayuda, por supuesto, aunque en el caso de que haya muchos eventos (es decir, más de 4 o 5), se agradecería que la leyenda se filtrase para mostrar solo las etiquetas de la semana seleccionada.
También podemos entrar en modo "día":
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_08.jpg"></a>
También aquí se agradecería que las etiquetas que se muestran en la parte superior de cada columna se moviesen verticalmente cuando hacemos scroll, de forma que estuviesen siempre visibles.
Y, por último, tenemos la vista "lista" en la que vemos los eventos en este formato. En este caso siempre se muestran los eventos de un único mes (que podemos cambiar con los controles comentados de la esquina superior izquierda), no siendo posible modificar este nivel de detalle:
<a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-08/calendar_by_maq_09.jpg"></a>
La visualización ofrece bastantes opciones de configuración: qué vistas queremos que estén a disposición del usuario y cuáles no, las horas y días laborables, mostrar o no el número de cada semana... Activemos esta última opción. Ahora, en todas las vistas se indica -en alguna parte- el número de la semana pero, en la vista mensual, un clic en el número de la semana que se muestra a la izquierda de cada bloque de 7 días nos lleva a la vista semanal (para dicha semana, obviamente). Y, aunque no se ha comentado todavía, haciendo clic en el número de un día en la vista mensual, o haciendo clic en la cabecera de un día en la vista semanal iremos a la vista del día correspondiente.
Muy buena visualización, con margen para mejora, por supuesto, pero muy recomendable.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'ba4db18d-f6d2-4ab6-b668-7349a4e2225c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'ba4db18d-f6d2-4ab6-b668-7349a4e2225c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'ba4db18d-f6d2-4ab6-b668-7349a4e2225c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'ba4db18d-f6d2-4ab6-b668-7349a4e2225c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'c4f8c0e7-7fe7-47bb-89ba-1ad9ce5904aa') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'c4f8c0e7-7fe7-47bb-89ba-1ad9ce5904aa') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'c4f8c0e7-7fe7-47bb-89ba-1ad9ce5904aa') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'c4f8c0e7-7fe7-47bb-89ba-1ad9ce5904aa') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a5db6b76-1069-4a9d-9ab8-c290169f678c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a5db6b76-1069-4a9d-9ab8-c290169f678c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a5db6b76-1069-4a9d-9ab8-c290169f678c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a5db6b76-1069-4a9d-9ab8-c290169f678c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '8feb145a-7083-477e-b624-fdb20e7caa25') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '8feb145a-7083-477e-b624-fdb20e7caa25') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '8feb145a-7083-477e-b624-fdb20e7caa25') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '8feb145a-7083-477e-b624-fdb20e7caa25') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'c61cea56-16c8-4682-8624-66e50c28c026') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'c61cea56-16c8-4682-8624-66e50c28c026') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'c61cea56-16c8-4682-8624-66e50c28c026') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'c61cea56-16c8-4682-8624-66e50c28c026') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '9661e99f-bb16-4683-a230-2c76b2bb4fb4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '9661e99f-bb16-4683-a230-2c76b2bb4fb4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '9661e99f-bb16-4683-a230-2c76b2bb4fb4') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '9661e99f-bb16-4683-a230-2c76b2bb4fb4') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1b21aa98-edd4-4690-8c60-a314e4c2be2c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1b21aa98-edd4-4690-8c60-a314e4c2be2c') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1b21aa98-edd4-4690-8c60-a314e4c2be2c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1b21aa98-edd4-4690-8c60-a314e4c2be2c') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '4111d732-3b08-414f-8c6e-e39fbf1e9eb4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '4111d732-3b08-414f-8c6e-e39fbf1e9eb4') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '4111d732-3b08-414f-8c6e-e39fbf1e9eb4') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '4111d732-3b08-414f-8c6e-e39fbf1e9eb4') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a13f6d0f-36c0-47b3-98bc-0722dd8ecbb6') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a13f6d0f-36c0-47b3-98bc-0722dd8ecbb6') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a13f6d0f-36c0-47b3-98bc-0722dd8ecbb6') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a13f6d0f-36c0-47b3-98bc-0722dd8ecbb6') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Box and Whisker chart by MAQ Software</strong> ofrece innumerables opciones para visualizar la distribución de nuestros datos. Para comenzar, llevemos la visualización a nuestro lienzo y arrastremos a ella un campo categórico (el campo que contiene los nombres de las subcategorías en nuestro caso) y una medida (margen por categoría):
Vemos el típico diagrama de caja mostrando los cuartiles de la distribución. Los colores a usar en la caja pueden configurarse en <em>Formato > Box options</em> (véase siguiente imagen) y al mover el cursor encima de la caja o del eje vertical que la atraviesa se muestra una ventana flotante con información sobre al distribución:
Vemos que se muestra no solo los valores de los cuartiles, sino también información estadística como la media o el rango intercuantil.
Si echamos un vistazo a la configuración de la visualización...
...vemos que el campo <em>Subcategory</em> de nuestro modelo de datos se ha agregado al campo <em>Axis</em> de la visualización, y que la medida <em>Margin</em> ha ocupado el campo <em>Value</em>. Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se muestran los valores que tome nuestro campo. Podemos comprobar esto moviendo el cursor por encima de los puntos verdes que representan nuestros valores (subcategorías en el ejemplo):
El campo <em>Axis Category I</em>, a su vez, hace referencia al eje X, que nos permite desglosar nuestro datos según otra dimensión. Si, por ejemplo, arrastramos a este campo <em>Axis Category I</em> el campo <em>Country</em> de nuestros datos (conteniendo los nombres de los países en los que se realizan las ventas), el resultado es el siguiente:
Ahora vemos la distribución del margen por subcategoría y por país. La visualización puede mostrarse también horizontalmente (<em>Formato > Orientation</em>):
En <em>Formato > Box options > Whisker type</em> podemos configurar cómo queremos que se calculen los "caps" de cada caja (los límites superior e inferior del eje que atraviesa cada caja): Por defecto se considera la opción "<em>Min/Max</em>", de forma que son los valores mínimo y máximo de nuestros valores los que establecen los valores de los caps, pero podemos escoger la opción <em>1.5 IQR</em>, por ejemplo, que limita los caps a 1.5 veces el rango intercuantil, o la opción <em>One Standard Deviation</em>, que limita los caps a una desviación estándar (considerando los puntos más alejados como "<em>outliers</em>"):
Estos outliers, una vez identificados (sea cual sea la opción escogida) pueden ocultarse en <em>Formato > Box Options > Outliers</em>:
Además de las opciones mencionadas ("<em>Min/Max</em>" , "<em>= 1.5 IRQ</em>" y "<em>One Standard Deviation</em>") hay otra opción de difícil interpretación ("<em>< 1.5 IRQ</em>") y otra <em>Custom</em> que permite especificar el mínimo y máximo percentil que limitarán la posición de los caps (fuera de los cuáles los valores se consideran <em>outliers</em>).
En las imágenes mostradas hasta ahora puede verse un círculo blanco en el interior de las cajas que representa el valor medio de los valores representados. Esto puede activarse o desactivarse en <em>Formato > Mean</em>.
Los ejes X e Y son configurables también (valores mínimo y máximo en el eje Y, número de cifras decimales a mostrar, color de la fuente, tamaño, etc., así como se puede mostrar o no el grid.
El campo de la visualización <em>Axis category II</em> permite replicar la gráfica desagregando los datos según una dimensión adicional (lo que frecuentemente se denomina <em>faces</em>). Así, si llevamos el campo <em>Gender</em> (que contiene el género de los clientes) a este campo, obtenemos el siguiente resultado:
En fin, montones de opciones disponibles para analizar la distribución de nuestros datos. Visualización muy recomendada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a171b79b-e030-4285-9afd-adba9a3906f0') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a171b79b-e030-4285-9afd-adba9a3906f0') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a171b79b-e030-4285-9afd-adba9a3906f0') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'a171b79b-e030-4285-9afd-adba9a3906f0') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'e13bd98f-fdf1-486d-9a56-d5c74220d5b1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'e13bd98f-fdf1-486d-9a56-d5c74220d5b1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'e13bd98f-fdf1-486d-9a56-d5c74220d5b1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'e13bd98f-fdf1-486d-9a56-d5c74220d5b1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f399d636-72e4-4215-90e7-d63ec865ed0b') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f399d636-72e4-4215-90e7-d63ec865ed0b') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f399d636-72e4-4215-90e7-d63ec865ed0b') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f399d636-72e4-4215-90e7-d63ec865ed0b') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '93d608ce-4d02-4a17-8d33-112bf6086d0e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '93d608ce-4d02-4a17-8d33-112bf6086d0e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '93d608ce-4d02-4a17-8d33-112bf6086d0e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '93d608ce-4d02-4a17-8d33-112bf6086d0e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'd7751cdd-53d3-440a-8841-a253806dfed3') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'd7751cdd-53d3-440a-8841-a253806dfed3') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'd7751cdd-53d3-440a-8841-a253806dfed3') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'd7751cdd-53d3-440a-8841-a253806dfed3') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '572662e6-95cf-49bc-a569-479b69a7f48f') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '572662e6-95cf-49bc-a569-479b69a7f48f') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '572662e6-95cf-49bc-a569-479b69a7f48f') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '572662e6-95cf-49bc-a569-479b69a7f48f') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f52fbeb1-13f4-48f7-a60e-87999b1f9e4a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f52fbeb1-13f4-48f7-a60e-87999b1f9e4a') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f52fbeb1-13f4-48f7-a60e-87999b1f9e4a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f52fbeb1-13f4-48f7-a60e-87999b1f9e4a') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '5bd6aa93-e19a-4c60-a7da-325e2d1a77be') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '5bd6aa93-e19a-4c60-a7da-325e2d1a77be') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '5bd6aa93-e19a-4c60-a7da-325e2d1a77be') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '5bd6aa93-e19a-4c60-a7da-325e2d1a77be') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Dot Plot by MAQ Software</strong> nos permite crear gráficos que representan valores numéricos asociados a una variable categórica a lo largo del eje vertical. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Country</em> de nuestro modelo de datos al campo <em>Axis</em> de la visualización, y la medida <em>Sales</em> se ha llevado al campo <em>Value</em> de la visualización. El resultado es una representación de las ventas por país. Obsérvese que no se muestran las etiquetas asociadas a cada punto, siendo necesario mover el cursor encima de las burbujas para ver esta información:
La configuración de la visualización es la siguiente:
Es decir, el campo <em>Axis</em> hace referencia al eje vertical en el que se van a representar los valores numéricos asociados a cada uno de los valores de la variable categórica (<em>Country</em>, en el ejemplo). Si movemos el cursor encima de una de las burbujas, se muestra la información asociada:
Sin duda, resultaría de agradecer la opción de mostrar todos estos valores en pantalla (lo que no es posible).
El campo <em>Axis Category I</em> hace referencia al eje X, y permite desagregar nuestros datos según una nueva dimensión. Si, por ejemplo, llevamos el campo <em>Category</em> (que, en nuestro dataset, indica la categoría de los productos vendidos) a este campo de la visualización, obtenemos la siguiente imagen:
Si, en lugar de un simple campo, llevamos una jerarquía, será posible navegar por ella haciendo de las herramientas mostradas en la parte superior de la visualización (herramientas comunes en Power BI a este tipo de estructuras):
Podemos hacer uso del campo <em>Legend</em> en la visualización para desagregar nuestros datos según otra dimensión. Por ejemplo, en la siguiente imagen se ha llevado el campo <em>Gender</em> de nuestros datos (que indica el género del comprador) a este campo de la visualización:
Como puede verse, se muestra en colores diferentes las burbujas correspondientes a cada género. Desafortunadamente no es posible llevar a este campo alguno que ya estemos usando en la visualización. Es decir, no podríamos llevar el campo <em>Country</em>, por ejemplo, para poder distinguir qué burbujas se corresponden con cada país.
En <em>Formato > Jitter effect</em> podemos habilitar el "temblequeo" de las burbujas, de forma que se muestren en posiciones "próximas" al valor que representan, pero no exactamente encima, lo que nos permite distinguir unas burbujas de otras (véase ejemplo en la siguiente imagen).
El campo de la visualización <em>Bubble size</em> nos permite controlar el tamaño de las burbujas. Adicionalmente, en <em>Formato > Bubbles</em> podemos controlar el radio mínimo y máximo de éstas, así como su grado de transparencia:
El campo de la visualización <em>Axis Category II</em> nos permite replicar la gráfica segmentando los datos según una nueva dimensión (lo que, en otros entornos, se denomina <em>facets</em>). Así, si en la visualización mostrada en la imagen anterior movemos el campo <em>Gender</em> (que teníamos en el campo <em>Legend</em> de la visualización) a <em>Axis Category II</em>, obtenemos el siguiente resultado:
La visualización tiene muchas opciones adicionales: es posible mostrar las gráficas vistas verticalmente (opción por defecto) u horizontalmente, dar formato a los ejes, etc. Probablemente las mayores limitaciones vienen a la hora de aplicar formato a las burbujas (por ejemplo, para permitir la identificación de éstas según el valor que tome el campo que hayamos llevado a <em>Axis</em>), así como la imposibilidad de mostrar las etiquetas asociadas a las burbujas. La mayor utilidad de <em>Dot Plot by MAQ Software</em> es, probablemente, la identificación de outliers en nuestros datos.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '01532742-05fc-4920-aad1-60a172b9c5b6') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '01532742-05fc-4920-aad1-60a172b9c5b6') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '01532742-05fc-4920-aad1-60a172b9c5b6') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '01532742-05fc-4920-aad1-60a172b9c5b6') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '01532742-05fc-4920-aad1-60a172b9c5b6') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '95ed64b1-f19f-47e7-bd99-d9c8977ef1fe') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '95ed64b1-f19f-47e7-bd99-d9c8977ef1fe') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '95ed64b1-f19f-47e7-bd99-d9c8977ef1fe') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '95ed64b1-f19f-47e7-bd99-d9c8977ef1fe') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '95ed64b1-f19f-47e7-bd99-d9c8977ef1fe') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1ede2732-701f-4feb-90b7-35a53ac3be02') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1ede2732-701f-4feb-90b7-35a53ac3be02') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '1ede2732-701f-4feb-90b7-35a53ac3be02') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1ede2732-701f-4feb-90b7-35a53ac3be02') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1ede2732-701f-4feb-90b7-35a53ac3be02') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f5a27f05-6f24-4d34-a349-fcc511a102ee') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f5a27f05-6f24-4d34-a349-fcc511a102ee') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'f5a27f05-6f24-4d34-a349-fcc511a102ee') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f5a27f05-6f24-4d34-a349-fcc511a102ee') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f5a27f05-6f24-4d34-a349-fcc511a102ee') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1bdaaecc-eaec-4293-8273-df2b632774f1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1bdaaecc-eaec-4293-8273-df2b632774f1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', '1bdaaecc-eaec-4293-8273-df2b632774f1') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1bdaaecc-eaec-4293-8273-df2b632774f1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', '1bdaaecc-eaec-4293-8273-df2b632774f1') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f263a4b8-8f89-4010-a42f-4ff9ea70588e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f263a4b8-8f89-4010-a42f-4ff9ea70588e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 242)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 142)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346)
Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641)
Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63)
Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'f263a4b8-8f89-4010-a42f-4ff9ea70588e') (Line: 95)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f263a4b8-8f89-4010-a42f-4ff9ea70588e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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', 'f263a4b8-8f89-4010-a42f-4ff9ea70588e') (Line: 124)
Drupal\editor\Plugin\Filter\EditorFileReference->process('La visualización <strong>Sunburst by MAQ Software</strong> permite mostrar información cuantitativa organizada jerárquicamente en forma de anillos concéntricos. Por ejemplo, en la siguiente imagen se están mostrando las ventas por país (anillo interior, campo <em>Categoría</em> en el panel de campos de la visualización) y categoría de producto (anillo exterior, campo <em>Subcategoría</em> del panel de campos mencionado). Como puede verse, para cada país se muestra la cifra de ventas desagregada según esta segunda dimensión:
Puede verse en la imagen anterior que, probablemente por un bug, el formato de la cifra total mostrada en el centro de los anillos no se adapta adecuadamente a la cifra en sí (se muestra la cifra en billones de euros cuando ésta no supera los 5 millones). En todo caso, el formato en cuestión es configurable en el panel de formato de la visualización.
La configuración de campos usada para mostrar la imagen anterior es la siguiente:
Es posible incluir más de una subcategoría, aunque si las áreas son pequeñas las etiquetas no se visualizan correctamente (ni siquiera para la primera subcategoría, como se aprecia en la primera imagen mostrada). A continuación se muestra la visualización tras añadir el campo <em>Gender</em> de una tabla <em>Customers</em> como segunda subcategoría. Se aprecia también la ventana flotante que se muestra al mover el cursor por encima de una de las áreas:
Es posible, entre otras cosas, modificar el radio del círculo que forma la visualización y el color para cada uno de los valores de la categoría (anillo interior) -los colores de los demás anillos son una variación de éste, como puede verse en la imagen anterior: España, por ejemplo, ha recibido un color amarillo oscuro y las subcategorías asociadas a España reciben este mismo color con una tonalidad más clara-.
También es posible mostrar los valores de las áreas del anillo exterior (pero solo las de éste):
Por defecto, al hacer clic en una de las áreas la seleccionamos (filtrando otras visualizaciones del informe) pero la visualización puede ser también configurada para que, al hacer clic en una de las áreas ésta ocupe el círculo interior por completo y las posibles subcategorías que hubiésemos añadido por debajo de esta dimensión se muestren en anillos concéntricos desagregando los datos. Además, esto se realiza con una bonita animación.
Por ejemplo, si en la imagen anterior hacemos clic en la categoría C de Francia, obtenemos el siguiente resultado:
Un clic en el centro de esta visualización mostraría toda la información del elemento de la anterior subcategoría (o categoría) no mostrada, en este caso Francia:
...y, desde aquí, otro clic en el centro nos llevaría a la visualización original, mostrando la imagen original.
Por último comentar que esta visualización tiene un comportamiento un tanto extraño cuando recibe el foco (cuando hacemos clic en el fondo de la visualización, no en el círculo principal), pues puede llegar a tardar bastantes segundos en mostrarse seleccionada.
', '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: 479)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 74)
__TwigTemplate_43dffa6ad507293d1ceeb24e05ce942c->doDisplay(Array, Array) (Line: 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/views-view-unformatted.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view_unformatted', 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: 110)
__TwigTemplate_349d2f5aada73507d566397721f27ea4->doDisplay(Array, Array) (Line: 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/views/views-view.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('views_view', 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: 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)