17 нояб. 2012 г.

Рисуем фоновые картограммы в R: красим районы

Продолжение. Начало здесь: Рисуем картограммы в R.

Любоваться на нарисованную нами в R карту — занятие малополезное, на ней даже надписей никаких нет. Приведу более утилитарный пример:

> # Отберём муниципальные районы и городские округа…
> udm.TIK <- udm[udm$ADMIN_LVL == 6 & !is.na(udm$ADMIN_LVL), ]
> # … и сохраним их наименования в csv-файл.
> write.csv(udm.TIK$NAME, file="tik.csv", quote = FALSE)

Выглядит файл tik.csv так:

,x
1,Сюмсинский район
2,Кизнерский район
…
30,Камбарский район

Теперь его можно открыть любимым редактором таблиц и добавить, допустим, число голосов на выборах в Государственную Думу.

,x,v10,ER,SR,KPRF,LDPR
1,Сюмсинский район,6753,3628,702,1155,1104
2,Кизнерский район,10834,6607,937,1586,1458
…
30,Камбарский район,9605,4266,1654,1636,1801

Используем его для раскраски карты:

> tik <- read.csv("~/tik.csv")
> brks <- seq(from =.3, to = .7, by = .1) # Закажем границы цветовых интервалов…
> colors <- rev(heat.colors(length(brks))) # … и цвета для них.
> part <- tik$ER/tik$v10 # Определим долю голосов избирателей, поданых за ЕР.
> png("ER.png", width=5, height=5, units="in", res=100, bg="transparent")
> par(mai=c(.1,.1,1,.1))
> plot(udm.TIK, col=colors[findInterval(part, brks, all.inside=T)], border="white")
> legend("right", legend=leglabs(brks, under="<", over=">"), fill=colors, bty="n")
> title(main="Доля голосов за ЕР\nв муниципальных районах
+ и городских округах Удмуртии")
> dev.off()

Карту результатов КПРФ на тех же выборах мы нарисовали по аналогии, только цветовую палитру заказывали при помощи библиотеки RColorBrewer, вот так:

> library("RColorBrewer")
> colors <- brewer.pal(length(brks), "Reds")

Шейп-файлы с картой Удмуртии из проекта OpenStreetMap (лицензия CC-by-SA) предоставлены GIS-Lab.

Комментариев нет:

Отправить комментарий