viernes, 24 de mayo de 2013

Una regla de color uniforme, redondeada, con cero y colores desplazados (1)

ENUNCIADO

Desde una consulta que puede devolver valores negativos y positivos para todos los países del mundo quieres generar un mapa geográfico cuyos colores reflejen estos valores con una regla de color basada en tres colores: color inferior, color medio y color superior con degradados desde el color medio al inferior y desde el color medio al superior.
Hasta aquí todo se puede resolver con los mapas del servidor de informes del Microsoft (SSRS). Pero además deben satisfacerse los siguientes requisitos:
  1. Uniforme: Cada rango de color debe contener aproximadamente la misma cantidad de países.
  2. Redondeada: Los extremos de cada rango deben redondearse con ceros a la derecha sin afectar la condición anterior.
  3. Con cero: Si los valores inferior y exterior tienen distinto signo dos rangos de color deben tener como extremo el cero, con mínima afección sobre el requisito 1.
  4. Colores desplazados: En caso de visualizarse el cero el color medio se situara en un rango que contenga este valor entre sus extremos.
Veamos con un ejemplo que ilustra una caída de ventas mundial en los inicios de la crisis del 2008:




Fíjate en los números redondeados y en el cero que desplaza el color amarillo a la derecha de la barra.

UN COMENTARIO PREVIO

Este entrada reemplaza a algunas que escribí anteriormente, pero en esta nueva versión he mejorado los algoritmos y voy a redactarlo mas claramente. De hecho dedicaré cuatro entradas a presentar la solución.
Comencemos.

SOLUCIÓN

El mapa lo visualizaremos mediante un control reportViewer de  WindowsForms o de WebForms configurado para informes de servidor SSRS (remote processing).

Aunque partiremos de un informe diseñado BIDS y plublicado en el SSRS, el visor no utilizará este informe directamente. En su lugar nuestra aplicación cargará la definición XML, la modificará en memoria y la cargará en el visor de informes que solicitará el procesado al SSRS.

Las modificaciones consistirán en personalizar las reglas de color de color de la regla tanto en lo que atañe a los rangos de valor (extremo superior e inferior para cada uno) como en los colores aplicados en cada rango.

Para personalizar los rangos numéricos utilizaremos una función que nos devolverá un lista de "Double" que contendrá los extremos de estos rangos según los requisitos 1, 2, 3 dichos arriba. A esta función dedicaremos la tercera entrada. Otra función nos devolverá una lisa de colores centrada en el rango de cambio de signo.

Dedicaremos cuatro entradas a estos trabajos

Comentario:

Antes de seguir quería decir que desarrollar una aplicación para visualizar magnitudes sobre mapas me ha recordado una vez más que cuando ves resultados estadísticos tienes que estar muy atento a lo que te muestran y como te lo muestran.

Por ejemplo el mapa mas arriba visualizaba las  variaciones de ventas interanuales  entre octubre 2009 y octubre 2008.
Si en lugar del acumulado mostráramos el acumulado interanual de ventas en octubre de 2009, podriamos decir ¿ Crisis? ¿Qué crisis?:







No hay comentarios: