Как сделать хорошую шкалу интенсивности цвета?

12

Я отнюдь не хорош в статистике, но думаю, что попал в нужное место. Мой вопрос прост:

Моя проблема состоит в сравнении численности населения нескольких штатов в маленькой стране, но в некоторых штатах население составляет 3000 000 человек, а в некоторых - 2000 человек.
Я рисую это на карте, и «интенсивность» цвета зависит от того, как население каждого штата сравнивается с населением всей страны.

Проблема состоит в том, что государства с большим населением показаны с действительно интенсивными цветами, а маленькие государства едва имеют какой-либо цвет.

Есть ли простой способ «нормализовать» или сделать данные сопоставимыми?

Я не знаю, правильно ли я объясняю себя, но надеюсь, что кто-нибудь мне поможет. Пожалуйста, прокомментируйте, если мой вопрос не ясен, и я уточню.

Спасибо за помощь!

Zebs
источник
4
Я бы посоветовал вам проверить тег визуализации на сайте обмена стеками gis, чтобы найти
Andy W
1
В этой же строке вы можете проверить градиенты на www.0to255.com.
Пит Уилсон
Некоторые из пакетов карт для R имеют встроенные цветовые коды, которые предотвращают подобные проблемы, но вы об этом спрашивали?
о.
Я использую это на пользовательской карте, и очевидный подход (разделить каждое значение на общую популяцию) дает мне значение от 0 до 1 (затем я использую это значение, чтобы выбрать «интенсивность» цвета). Проблема в том, что есть значения, которые слишком далеки друг от друга, поэтому некоторые состояния выглядят полностью цветными, а некоторые почти не имеют цвета. С точки зрения статистики я знаю, что это правильно, но я хочу сделать представление данных более актуальным и легким для понимания.
Зебс
Зачем использовать равномерные перерывы? Почему бы не масштаб журнала? Или, возможно, в вашем приложении вы можете выбрать контрольные точки, которые имеют какое-то значение (например, сельские / пригородные / городские).
JMS

Ответы:

6

Извините, но для меня это звучит так, будто вы пытаетесь исправить то, что не сломано. На самом деле, вы можете даже пытаться сломать то, что не сломано. Если у вас есть количественная переменная (здесь популяция), которая охватывает широкий диапазон, то любой показатель, который вы используете для его представления, также должен охватывать широкий диапазон.

Но для всех вещей, связанных с цветом (и особенно карты), ключевой источник, я думаю, ColorBrewer

Питер Флом - Восстановить Монику
источник
2
Я пытаюсь что-то сломать; Я знаю, что получаемые вейлы статистически правильны, но я хочу, чтобы пользователям было проще понять данные. Это решение пользовательского интерфейса.
Зебс
@Zebs: Изгиб, больше как ..
naught101
5

Хороший вопрос. Одним из решений является изменение масштаба цветов, чтобы они были более равномерно распределены, или распределение с более низкими хвостами ... но тогда ваша легенда должна быть достаточно ясной, потому что деформация шкалы как-то несправедлива ...

Например, в R масштабирование нормали к униформе. (то, что у вас есть, возможно, идет в другую сторону, так как у вас большие хвосты, и вы хотите, чтобы они были меньше, но принцип тот же)

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

Вы можете разделить на общую численность населения. Это гарантировало бы, что все находится между 0 и 1. Если шкалы все еще слишком несопоставимы, рассмотрите логарифмическую шкалу.

Gary
источник
2

Мне неловко спрашивать об этом, но действительно ли вы намерены использовать цвет для изображения количественного показателя? Нет ли способа поставить планку в каждом штате, высота которой представляет количество?

Другой способ может состоять в том, чтобы показать карту с областями, представляющими географические области, вместе с картой, где площадь каждого штата пропорциональна численности населения - подобно тому, как это делает сенсорный гомункулус . Но это было бы болезненное количество рисования - я не знаю ни одного способа автоматизировать это (хотя это может существовать)

410 пропало
источник
Хорошее замечание!
Робин Жирар
4
Многие картографические программные платформы имеют возможности, упомянутые в этом посте. Искажения, основанные на атрибутах, когда дело доходит до карт, часто называют картограммами. См. Gis.stackexchange.com/q/7406/751 . Тем не менее, столбцы, размещенные на карте, не проще визуализировать, чем цвета. Когда столбцы не расположены рядом, их сравнительно трудно сравнивать, что не так уж сложно для цветовой шкалы.
Энди Вт
Я согласен, что бары меньше, чем оптимальные на карте. Еще один способ сделать это - искажать сеткой, как здесь: viewsoftheworld.net/?p=832 . Лично мне часто бывает трудно их расшифровать, но они могут быть выполнены достаточно хорошо, в зависимости от степени искажения.
naught101
1

Ваша заявленная цель:

Сравните население нескольких штатов в маленькой стране.

Ваша заявленная проблема:

Поскольку в некоторых штатах проживает 3000 000 человек, а в некоторых - 2000 человек. Есть ли простой способ «нормализовать» или сделать данные сопоставимыми?

Цель нормализации ваших данных перед отображением

Этот ответ будет отсутствовать, так как я не уверен в контексте того, почему вы делаете карту.

Тем не менее, вот некоторые мысли для изучения: нормализуйте свои данные так, чтобы карта дала интересное значение потенциальным читателям карты, чтобы они могли связать то, что они видят на вашей карте, с какой-то концепцией, о которой они обычно думают. По сути, я думаю, что ваши новые нормализованные числа должны быть связаны с некоторой качественной концепцией, которую читатели карты находят интересной для понимания (случайный фрагмент: Мера = Количество х Качество, Гегель).

Два предложенных способа нормализации ваших данных

1. Чтобы дать представление о том, сколько открытого пространства находится в каждом штате.

Создайте новую переменную состояния для плотности населения, рассчитав население, деленное на общую площадь штата.

2. Для того, чтобы раскраска состояний контрастировала друг с другом.

Создайте новую переменную состояния, рассчитав отклонение от среднего значения каждого состояния. Например, скажем, у вас есть 3 штата с населением следующим образом:

  • Состояние А равно 100.
  • Состояние B 50.
  • Состояние C равно 1.

Среднее будет около 50.

Значения новой переменной для каждого состояния будут следующими:

  • Состояние А +50 (интенсивный зеленый цвет ).
  • Состояние B равно 0 (цвет серый ).
  • Состояние C -49 (интенсивный красный цвет ).

Вы можете использовать любую цветовую схему, где положительные числа контрастируют с отрицательными числами (Google ColorBrewer для многих примеров цветовых схем для карт).

b_dev
источник