Шейп-файлы окрашены в соответствии с соответствующими значениями

У меня следующая проблема. Приведены данные в таблице, состоящей из двух столбцов:

  • колонка 1: номера для соответствующих географических зон (например, зона 11, которая обозначает Мюнхен)
  • столбец 2: определенное значение в этой зоне (например, Пиковое ускорение грунта, PGA)

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

  • zone1 PGA=12 color=[1.0 1.0 0.0]
  • Zone2 PGA=17 цвет = [1,0 0,9 0,5]
  • Zone3 PGA=25 цвет =[0,6 1,0 1,0]
  • zone1 PGA=12 color=[1.0 1.0 0.0]

Данные содержат около 200 зон, и в общей сложности около 160 различных зон и, следовательно, цветов. Что бы вы предложили установить для каждого значения определенный цвет (одинаковые значения = один и тот же цвет).

Спасибо заранее за вашу помощь. С наилучшими пожеланиями.

1 ответ

В вашем примере у зоны 1 есть PGA=12 в обоих случаях. Это всегда так, или у zone1 когда-либо был другой PGA? Этот ответ предполагает, что у него всегда будет одна и та же PGA.

myColorArray = jet(160); %assuming you have 160 unique colors/zones of the 200

Вот jet ваша простая встроенная функция для создания красивой карты цветов Mx3

Если вы хотите рандомизировать это так, чтобы похожие цвета не были рядом друг с другом, вы можете сделать следующее:

myColorArray(randperm(160),:)  = myColorArray;

Теперь я не знаю, является ли ваш фактический первый столбец для зон просто числом от 1 до 160, но если это так, вы можете просто использовать его в качестве индекса, чтобы соответствовать цветам.

FullColorArray(:,YourMatrix(:,1)) = myColorArray(:,YourMatrix(:,1));

Если это не так, вы можете использовать unique Команда для создания индекса и работы с ним.

LimitedZoneMat = unique(YourMatrix(:,1));

Или, если я неправильно понял, и вы хотите, чтобы ваши цвета соответствовали значению PGA, вы можете просто использовать это как индекс.

Другие вопросы по тегам