Uso dei colori nei reports (data driven colors)

Esempio di utilizzo dei colori associati ai dati nel report (data driven colors)

Recentemente ho realizzato dei report relativamente complessi (Tabelle, Gantt, Matrici) utilizzando i colori per identificare visivamente meglio e a colpo d’occhio i dati contenuti. L’obiettivo era colorare la casella in cui venivano visualizzati dei dati (numerosi e variabili) collegando univocamente i dati ad colore specifico, in modo tale che dati vicini risultassero sempre con colori diversi. E volevo utilizzare il minor effort possibile.

Per lo sfondo della cella ho utilizzato i colori web (es. AliceBlue, DarkOliveGreen, DarkMagenta, YellowGreen, ecc. ), che tutto sommato sono abbastanza differenziati tra loro e numerosi (140), e li ho associati ad un progressivo (da 1 a 140) Per il colore del testo ho usato semplicemente Black (#000000) o White (#FFFFFF), visto che l’obiettivo è la massima leggibilità del contenuto e quindi la massimizzazione del contrasto: su colori scuri uso il bianco e su quelli chiari il nero, e quindi il colore del carattere è in funzione del colore di sfondo o meglio della sua luminanza.

Per il calcolo della luminanza ho utilizzato le seguenti formule (diverse per il calcolo della luminanza oggettiva e percettiva):

Luminance (standard, objective): (0.2126*R) + (0.7152*G) + (0.0722*B)
Luminance (perceived option 1): (0.299*R + 0.587*G + 0.114*B)
Luminance (perceived option 2, slower to calculate): sqrt( 0.241*R^2 + 0.691*G^2 + 0.068*B^2 )

dove R,G e B sono le 3 componenti del colore. Si applica Black oppure White se la luminanza supera o meno una certa soglia (io ho scelto 160, avendo quindi in media più scritte bianche). Ho quindi memorizzato tutto in una tabella di database (“COLORS”).

Tabella Colors

Tabella Colors

La tale tabella può essere utilizzata in JOIN con quella dei dati in modo tale che la chiave di quest’ultima venga mappata in modo (più o meno) univoco con i colori:

SELECT * FROM CALENDARIO_CORSI cal JOIN COLORS c ON c.ID = (cal.ID % 140)+1

In realtà è la semplice funzione Modulo che effettua la suriezione; la probabilità che dati visualizzati in celle vicine abbiano lo stesso colore è molto bassa (circa lo 0.7%).

Cell properties

Cell properties

I dati e i colori (background e forecolor) così associati possono essere utilizzati nei reports prodotti direttamente nelle pagine web o con Microsoft SQL Server Reporting Services, assegnando i valori alle relative proprietà delle celle.

Report colorato

Report colorato

Il risultato, ottenuto con pochi sforzi (generata una volta per tutte la tabella dei colori), è sicuramente qualcosa di gradevole.

Riferimenti

Colori web (nomi e valori): http://www.w3schools.com/html/html_colornames.asp

Algoritmi per il caloclo della Luminanza: http://zoltanb.co.uk/how-to-calculate-the-perceived-brightness-of-a-colour/

Data Driven Colored Text for SSRS: http://www.mssqltips.com/sqlservertip/2612/data-driven-colored-text-for-reporting-services-reports/

Questa voce è stata pubblicata in SQL Server, Web e contrassegnata con , , . Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


*