Como fazer uma boa escala de intensidade de cor?


12

Não sou de modo algum bom em estatística, mas acho que vim ao lugar certo. Minha pergunta é simples:

Meu problema consiste em comparar a população de vários estados em um país pequeno, mas alguns estados têm uma população de 3000.000 e outra de 2.000.
Estou pintando em um mapa, e a "intensidade" da cor depende de como a população de cada estado se compara à população de todo o país.

O problema é que os estados com muita população são mostrados com cores realmente intensas e os estados pequenos quase não têm cor.

Existe uma maneira fácil de "normalizar" ou tornar os dados comparáveis?

Não sei se estou me explicando direito, mas espero que alguém possa me ajudar. Por favor, comente se minha pergunta não estiver clara e eu vou esclarecer.

Obrigado pela ajuda!


4
Eu sugiro que você verifique a tag de visualização no site de troca de pilhas gis para obter exemplos gis.stackexchange.com/questions/tagged/visualisation #
Andy W

1
Na mesma linha, convém verificar os gradientes em www.0to255.com.
Pete Wilson

Alguns dos pacotes de mapas do R têm códigos de cores internos que evitam esse tipo de problema, mas é isso que você estava perguntando?
pe.

Estou usando isso em um mapa personalizado, e a abordagem óbvia (para dividir cada valor pela população total) me fornece um valor entre 0 e 1 (então eu uso esse valor para escolher a "intensidade" da cor). O problema é que existem valores muito distantes, portanto alguns estados parecem completamente coloridos e outros quase não têm cor. Sei estatisticamente que isso está correto, mas quero tornar a representação dos dados mais relevante e fácil de entender.
Zebs 22/03

Por que usar intervalos uniformes? Por que não uma escala de log? Ou talvez em seu aplicativo você possa escolher pontos de interrupção que tenham algum significado (por exemplo, rural / suburbano / urbano).
JMS

Respostas:


6

Sinto muito, mas para mim parece que você está tentando consertar o que não está quebrado. Na verdade, você pode até estar tentando quebrar o que não está quebrado. Quando você tem uma variável quantitativa (aqui, população) que abrange um amplo intervalo, qualquer métrica usada para representá-lo também deve abranger um amplo intervalo.

Mas, para todas as coisas relacionadas à cor (e especialmente aos mapas), a principal fonte é, eu acho, o ColorBrewer


2
Estou tentando quebrar alguma coisa; Sei que os valores que estou recebendo são estatisticamente corretos, mas quero facilitar o entendimento dos dados pelos usuários. É uma decisão da interface do usuário.
Zebs 22/03

@Zebs: Bend, mais parecido ..
naught101

5

Boa pergunta: uma solução é redimensionar as cores para distribuí-las de maneira mais uniforme ou para uma distribuição com caudas mais baixas ... mas sua lenda precisa ser clara o suficiente, porque deformar a escala, de alguma forma, é injusto ...

Por exemplo, em R, redimensionando um normal para um uniforme. (o que você tem talvez seja mais diferente, pois você tem caudas grandes e as deseja menores, mas o princípio é o mesmo)

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

Você pode dividir pela população total. Isso garantiria que tudo fique entre 0 e 1. Se as escalas ainda forem muito díspares, considere uma escala de log.


2

Sinto-me desconfortável ao perguntar, mas você está realmente comprometido em usar cores para retratar uma quantidade quantitativa? Não há como colocar uma barra em cada estado, cuja altura representa a quantidade?

Outra maneira pode ser mostrar o mapa com áreas que representam as áreas geográficas, juntamente com um mapa em que a área de cada estado é proporcional ao tamanho da população - semelhante à maneira como o homúnculo sensorial o faz. Mas isso seria uma quantidade dolorosa de desenho - não conheço nenhuma maneira de automatizar isso (embora possa existir)


Boa observação!
precisa

4
Muitas plataformas de software de mapeamento têm os recursos mencionados neste post. As distorções baseadas em atributos quando se trata de mapas são freqüentemente chamadas de cartogramas. Consulte gis.stackexchange.com/q/7406/751 . Dito isto, as barras colocadas ao acaso em um mapa não são mais fáceis de visualizar do que as cores. Quando as barras não estão lado a lado, é difícil fazer comparações relativas, o que não é um problema tão grande com uma escala de cores.
21711 Andy As

Concordo que barras abaixo do ideal em um mapa. Outra maneira de fazer isso é ter distorções em grade, como aqui: viewsoftheworld.net/?p=832 . Pessoalmente, acho isso muito difícil de decifrar, mas pode ser feito muito bem, dependendo da quantidade de distorção.
Naught101

1

Seu objetivo declarado:

Compare a população de vários estados em um país pequeno.

Seu problema declarado:

Uma vez que alguns estados têm uma população de 3000.000 e alguns uma população de 2.000. Existe uma maneira fácil de "normalizar" ou tornar os dados comparáveis?

Objetivo de normalizar seus dados antes de mapear

Essa resposta estará faltando, pois não tenho certeza do contexto de por que você está fazendo o mapa.

No entanto, aqui estão algumas idéias para explorar: Normalize seus dados para que o mapa forneça um significado interessante aos leitores em potencial do mapa, para que eles possam vincular o que vêem no mapa a algum conceito em que normalmente pensam. Basicamente, acho que seus novos números normalizados devem estar ligados a algum conceito qualitativo que os leitores de mapas acham interessante entender (petisco aleatório: Medida = Quantidade x Qualidade, Hegel).

Duas maneiras propostas para normalizar seus dados

1. Para dar uma noção de quanto espaço aberto existe em cada estado.

Crie uma nova variável de estado para a densidade populacional calculando a população dividida pela área total do estado.

2. Para fazer a coloração dos estados contrastar entre si.

Crie uma nova variável de estado calculando o desvio da média de cada estado. Por exemplo, digamos que você tenha 3 estados com populações da seguinte maneira:

  • O estado A é 100.
  • O estado B é 50.
  • O estado C é 1.

A média será de cerca de 50.

Os valores da nova variável para cada estado serão os seguintes:

  • O estado A é +50 (cor verde intenso ).
  • O estado B é 0 (cor cinza ).
  • O estado C é -49 (cor vermelho intenso ).

Você pode usar qualquer esquema de cores em que números positivos contrastem com números negativos (google 'colorbrewer' para muitos exemplos de esquemas de cores para mapas).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.