Come realizzare una buona scala di intensità del colore?


12

Non sono affatto bravo nelle statistiche, ma penso di essere arrivato nel posto giusto. La mia domanda è semplice:

Il mio problema consiste nel confrontare la popolazione di diversi stati in un piccolo paese, ma alcuni stati hanno una popolazione di 3000.000 e alcuni una popolazione di 2.000.
Lo sto dipingendo su una mappa e l '"intensità" del colore dipende da come la popolazione di ogni stato si confronta con la popolazione di tutto il paese.

Il problema è che gli stati con molta popolazione sono mostrati con colori davvero intensi e i piccoli stati hanno a malapena alcun colore.

Esiste un modo semplice per "normalizzare" o rendere comparabili i dati?

Non so se mi sto spiegando correttamente, ma spero che qualcuno mi possa aiutare. Si prega di commentare se la mia domanda non è chiara e chiarirò.

Grazie per l'aiuto!


4
Vorrei suggerire di dare un'occhiata al tag di visualizzazione sul sito di scambio di stack gis per esempi gis.stackexchange.com/questions/tagged/visualisation
Andy W

1
Sulla stessa linea, potresti voler controllare i gradienti su www.0to255.com.
Pete Wilson,

Alcuni dei pacchetti di mappe per R hanno codici colore incorporati che impediscono questo tipo di problema, ma è quello che stavi chiedendo?
P.

Sto usando questo su una mappa personalizzata e l'approccio ovvio (per dividere ciascun valore per la popolazione totale) mi dà un valore tra 0 e 1 (quindi uso questo valore per scegliere l '"intensità" del colore). Il problema è che ci sono valori troppo distanti, quindi alcuni stati sembrano completamente colorati e alcuni non hanno quasi alcun colore. So che statisticamente parlando è corretto, ma voglio rendere la rappresentazione dei dati più pertinente e più facile da capire.
Zebs

Perché usare le pause uniformi? Perché non una scala logaritmica? O forse nella tua applicazione potresti scegliere punti di interruzione che hanno un significato (ad esempio rurale / suburbano / urbano).
JMS,

Risposte:


6

Mi dispiace, ma a me sembra che tu stia cercando di riparare ciò che non è rotto. In effetti, potresti anche provare a rompere ciò che non è rotto. Quando hai una variabile quantitativa (qui, popolazione) che si estende su un ampio intervallo, qualsiasi metrica usi per rappresentarla dovrebbe estendersi anche a un ampio intervallo.

Ma per tutte le cose relative al colore (e specialmente alle mappe), la fonte chiave è, penso ColorBrewer


2
Sto cercando di rompere qualcosa; So che i valori che sto ottenendo sono statisticamente corretti, ma voglio rendere più semplice agli utenti la comprensione dei dati. È una decisione dell'interfaccia utente.
Zebs,

@Zebs: Bend, più come ..
naught101

5

Bella domanda, una soluzione è ridimensionare i colori per distribuirli in modo più uniforme, o in una distribuzione con code inferiori ... ma poi la tua leggenda deve essere abbastanza chiara perché deformare la scala, in qualche modo, è ingiusto ...

Ad esempio, in R, riscalare una normale in uniforme. (quello che hai forse va più nell'altro modo poiché hai code grandi e le vuoi più piccole, ma il principio è lo stesso)

X=array(rnorm(10000),c(100,100))
ramp=colorRamp(c("blue","cyan","white","yellow","red"),space ="rgb")
kleur <- rgb( ramp(seq(0,1,length=200)),max = 255)
par(mfrow=c(1,2))
image(X,col=kleur)### image without rescaling
Fn=ecdf(X)
ScaledX=array(Fn(X),c(100,100))
image(ScaledX,col=kleur)

3

Potresti dividere per la popolazione totale. Ciò garantirebbe che tutto sia compreso tra 0 e 1. Se le scale sono ancora troppo disparate, prendere in considerazione una scala di registro.


2

Mi sento a disagio a chiederlo, ma sei davvero impegnato ad usare il colore per ritrarre un importo quantitativo? Non c'è modo di mettere una barra in ogni stato, la cui altezza rappresenta la quantità?

Un altro modo potrebbe essere quello di mostrare la mappa con aree che rappresentano le aree geografiche, insieme a una mappa in cui l'area di ogni stato è proporzionale alla dimensione della popolazione - in modo simile a come fa l' omuncolo sensoriale . Ma sarebbe una quantità dolorosa di disegno - non so come automatizzarlo (sebbene possa esistere)


Buona osservazione!
Robin Girard,

4
Molte piattaforme software di mappatura hanno le capacità menzionate in questo post. Le distorsioni basate sugli attributi quando si tratta di mappe sono spesso indicate come cartogrammi. Vedi gis.stackexchange.com/q/7406/751 . Detto questo, le barre posizionate in una mappa non sono più facili da visualizzare dei colori. Quando le barre non sono affiancate, è difficile fare confronti relativi, il che non è un grosso problema con una scala di colori.
Andy W,

Sono d'accordo che le barre non sono ottimali su una mappa. Un altro modo per farlo è quello di avere distorsioni grigliate, come qui: viewsoftheworld.net/?p=832 . Personalmente, trovo spesso abbastanza difficili da decifrare, ma possono essere fatti abbastanza bene, a seconda della quantità di distorsione.
naught101

1

Il tuo obiettivo dichiarato:

Confronta la popolazione di diversi stati in un piccolo paese.

Il tuo problema dichiarato:

Poiché alcuni stati hanno una popolazione di 3000.000 e alcuni una popolazione di 2.000. Esiste un modo semplice per "normalizzare" o rendere comparabili i dati?

Scopo della normalizzazione dei dati prima della mappatura

Questa risposta mancherà poiché non sono sicuro del contesto del motivo per cui stai realizzando la mappa.

Tuttavia, ecco alcuni pensieri da esplorare: normalizza i tuoi dati in modo che la mappa fornisca un significato interessante ai potenziali lettori della mappa, in modo che possano collegare ciò che vedono sulla tua mappa a un concetto a cui normalmente pensano. Fondamentalmente, penso che i tuoi nuovi numeri normalizzati dovrebbero essere collegati ad alcuni concetti qualitativi che i lettori di mappe trovano interessanti da capire (tidbit casuale: Misura = Quantità x Qualità, Hegel).

Due modi proposti per normalizzare i tuoi dati

1. Al fine di dare un senso di quanto spazio aperto è in ogni stato.

Creare una nuova variabile di stato per la densità della popolazione calcolando la popolazione divisa per l'area totale dello stato.

2. Al fine di rendere la colorazione degli stati in contrasto tra loro.

Creare una nuova variabile di stato calcolando la deviazione dalla media di ogni stato. Ad esempio, supponiamo di avere 3 stati con popolazioni come segue:

  • Lo stato A è 100.
  • Lo stato B è 50.
  • Lo stato C è 1.

La media sarà di circa 50.

I valori della nuova variabile per ogni stato saranno i seguenti:

  • Lo stato A è +50 (colore verde intenso ).
  • Lo stato B è 0 (colore grigio ).
  • Lo stato C è -49 (colore rosso intenso ).

Puoi utilizzare qualsiasi combinazione di colori in cui i numeri positivi contrastano con i numeri negativi (google "colorbrewer" per molti esempi di combinazioni di colori per le mappe).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.