Помогите выбрать наиболее подходящую схему раскраски двумерного хороплета

10

Я пытаюсь наложить номинальную переменную (2 категории - неорошаемый против орошаемого) на карте хороплета на числовую переменную.

введите описание изображения здесь

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

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

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

Есть ли лучший способ представить эту двумерную классификацию, используя пакет ggplots2 в R (который я сейчас использую для создания прикрепленной карты)?

Эти карты в конечном итоге будут напечатаны на бумаге.

varungoel123
источник
Рассмотрим расчет евклидова расстояния на границах орошаемой территории. Более подробная информация здесь: gis.stackexchange.com/q/53163/8104
Аарон
@Aaron, спасибо за ссылку, направленное затенение может работать для этого, и я мог бы использовать буферный инструмент для рисования этих областей в R. Моя единственная проблема, хотя, был бы сравнительно небольшим размером полигонов, которые могут быть утеряны более широким контуры. Я попробую это.
varungoel123
@ varungoel123 Я отправил R решение с использованием rasterи rasterVisпакетов , которые могут вас заинтересовать.
thiagoveloso

Ответы:

7

Вместо контуров для обозначения орошаемых площадей вы должны использовать что-то вроде прозрачной заливки (например, линии, штриховки). Пример будет выглядеть примерно так:

http://www.geog.fu-berlin.de/de/Karto/umn_karten/bilder/komb2.png

или просто Google "шаблоны заполнения карты", чтобы получить обзор вариантов. Использование контуров только для орошаемых площадей создало бы впечатление, что орошение не является непрерывным явлением.

Крис П
источник
Это отличное предложение. Есть ли способ сделать это в ggplot2 или какой-то другой пакет в R? У меня есть около 60-70 карт, где разметка орошаемых и орошаемых площадей остается постоянной. С ggplot2 я смог автоматизировать создание карт, чего я не смог достичь с помощью ArcMap или Qgis
varungoel123
Я не знаком с ggplot2 или R. Однако этот шаблон заполнения является довольно стандартной вещью и не должен быть слишком трудным для достижения. Я знаю, как это сделать в Qgis или ArcMap. В обеих программах вы можете сохранить этот стиль после того, как определите его, и использовать его повторно. Автоматизация должна быть возможна с обоими. Сценарий Python или arcpy может сделать эту работу за вас.
Крис П,
1
К сожалению, ggplot не очень хорош в шаблонах заполнения (но см. Здесь альтернативу)
cengel
QGis в версии 2.0.1 также предлагает автоматическое создание карт
Zbynek
1

Мне недавно пришлось сделать похожую карту. Решение, которое я придумал, использует пакет rasterVis, а не ggplot2 (кстати, это потрясающий пакет).

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

В моем случае я хотел нанести карту значимости поверх числовой карты, похожую на «пунктирную» модель, чтобы показать, где уровень достоверности выше.

Это примерно тот код, который я использовал для создания карты.

require(raster)
require(rasterVis)

# Scratch raster objects
data(volcano)
r1 <- raster(volcano)

over <- ifelse(volcano >=160 & volcano <=180, 1, NA) # This is the "mask" raster
r2 <- raster(over)

# And this is the key step:
# To convert the "mask" raster to spatial points
r.mask <- rasterToPoints(r2, spatial=TRUE)

# Plot
levelplot(r1, margin=F) +
layer(sp.points(r.mask, pch=20, cex=0.3, alpha=0.8))

В вашем случае вы можете изменить код:

1) создание «бинарного» растра, где, например, 0 орошается, а 1 орошается, и строит его так же, как я сделал или;

2) создать две разные маски, одну для орошаемых и одну для орошаемых, и нанести на карту их обоих как разные объекты (например, круги для неорошаемых и кресты для неорошаемых).

Я думаю, что из-за второго варианта карта будет выглядеть слишком визуально «загрязненной», но вы всегда можете контролировать параметры точек, обращаясь к spдокументации пакета - в частности ?sp.points.

Надеюсь, поможет.

thiagoveloso
источник