У меня есть вопрос относительно составления картограммы. Что рекомендуется в отношении построения карты с пользовательскими перерывами? И чтобы это выглядело немного привлекательно.
В моем сценарии я использовал команду plot и spplot для визуализации некоторых данных, но я не совсем доволен результатом. Легко понять почему. Используя spplot, я получаю цветовую шкалу, которая повторяет цвета для разных значений, что немного странно. Используя график с пользовательскими разрывами, я не смог сделать более подходящие интервалы для значений, чтобы, например, нулевые значения были белыми на карте. Перекошенные пропорции между легендой и картой, я думаю, вероятно, результат Rstudio.
Поэтому мне было интересно, есть ли у кого-нибудь лучшие предложения для построения карт хороплетов в R с использованием пользовательских разрывов?
РЕДАКТИРОВАТЬ 20-02-2013
Как и предполагалось, я использовал ggplot2 для создания карты хороплета. Я использовал код ниже. Я столкнулся с двумя проблемами. Одним из них является то, что после усиления данных не все данные из шейп-файла переносятся во фрейм данных. Поэтому я должен переименовать переменную "id", чтобы я мог объединить данные. Незначительная проблема.
Еще большая проблема заключается в том, что, несмотря на то, что данные в кадре данных верны, ggplot показывает карту, где данные неверны. Значение цвета согласно легенде не соответствует значению переменной в данных. Я что-то пропускаю здесь?
# Plotting polygon shapefiles (try-out)
# Load the packages
require(rgdal)
require(maptools)
require(ggplot2)
gpclibPermit() # required for the fortify method
# Load the shapefile
africa=readOGR("/home/GIS",layer="africaII")
names(africa)
# Load the data on conflict
conflict<-read.csv("africa_conflict.csv", header=TRUE)
names(conflict)
# Merge the data together
africadat<-merge(africa, conflict, by="ISO3")
# Changing the data in the shapefile
africa@data <- africadat
# Fortify so that ggplot can plot
africa.points = fortify(africa,region="ISO3")
# Change "id" to "ISO3"such that the datasets can be merged again
names(africa.points)[names(africa.points)=="id"]<-"ISO3"
africa.df=merge(africa.points,africadat,by="ISO3")
# Plot the data
ggplot(africa.df) +
aes(long,lat,group=group) +
geom_polygon(aes(fill =onset))+
geom_path(color="white") +
coord_equal()
Обновление 13-11-2015: исправлена ссылка на файл формы . См. Ответ ниже для решения о том, как построить сюжетную линию.
источник
ggplot2
для картограмм, которые, по-моему, лучше выглядят по умолчанию.Ответы:
Я не вижу проблемы с приведенным выше кодом, за исключением того, что у вас есть 6 четких уровней
onset
, поэтому я бы рассматривал их как факторы, а не как непрерывную переменную. Обратите внимание наfactor
звонок в коде ниже.Этот код дает следующий результат:
Если вы хотите нестандартные цвета, вы можете попробовать это:
Который производит это:
источник
3
дляonset
столбца и участков через3
на графике. Это похоже на работу. Предположительно я что-то упустил?В пакете classInt имеется ряд функций для вычисления интервалов для числовых данных - установите его и прочитайте документы.
источник
Для архивов, решение, которое я использовал:
источник