2014-12-15 3 views
0

Я ищу график ограниченного набора данных для болезней Ebola на карте США, используя ggplot2 и карты.Картирование болезней на карте США

Параметров государство и Эбола Зараженный (да/нет)

Штатов, содержащих вирус не являются следующими:

Texas Yes 
Newyork Yes 

Этих состояний должны быть окрашены в красном и других государствах в стране быть зеленым.

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

Ниже приведен код, который я мог бы построить, используя другую нить на StackOverflow

library(ggplot2); 
library(maps); 
library(plyr); 
library(mapproj); 
ebolad = read.csv('/usa.csv'); 
#a data set including the state name and whether it is effected or not (yes/no) 
colClasses = c('character', 'character', 'numeric')[[2]]; 
names(ebolad) = c('col', 'region', 'infected'); 
ebolad$region = tolower(ebolad$region); 
us_state_map = map_data('state'); 
map_data = merge(ebolad, us_state_map, by = 'region'); 
map_data = arrange(map_data, order); 
ggplot(map_data, aes(x = long, y = lat, group = group)) + 
    geom_polygon(aes(fill=infected)) + 
    geom_path(colour = 'gray', linestyle = 2) + 
    scale_fill_brewer('States affected with EBOLA Virus in USA', palette = 'PuRd') + 
    coord_map(); 

Может кто-нибудь помочь мне с улучшением сюжета

ответ

0

Попробуйте использовать ручной масштаб fill вместо. То есть заменить scale_fill_brewer(...) на

scale_fill_manual('States affected with EBOLA Virus in USA', values=c("green","red")) 

Это не дает самый красивый зеленый и красный, хотя. Но вы можете использовать шестнадцатеричные коды для определения произвольных цветов, например values=c("#4daf4a","#e41a1c").

Какое значение для infected окрашено в красный цвет, может быть зависеть от деталей ваших данных. Если не зараженные состояния должны быть окрашены в зеленый цвет, просто используйте values=c("red","green") для переключения цветов.

Если ваша проблема связана с файлом usa.csv, вам будет трудно помочь без наличия файла. Я подготовил данные по следующим командам:

ebolad<-data.frame(region=state.name,infected="no",stringsAsFactors=FALSE) 
ebolad[ebolad$region %in% c("Texas","New York"),"infected"] <- "yes" 

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

+0

Спасибо, что нашли время, чтобы ответить на мой запрос. Вот ссылка на файл "usa.csv": https://docs.google.com/spreadsheets/d/1kPaofcAVWG_ViajHYecUKFjK3D6MQ0acDdVhRnxJWfA/edit?usp=sharing – Abhi

+0

Я использовал ваш код для чтения файла, и он работает для меня. В зависимости от того, где вы храните 'usa.csv' и какой ваш рабочий каталог, вам, возможно, придется удалить'/'из имени файла. Вам удается создать сюжет, используя 'scale_fill_manual'? Если нет, вы получаете сообщения об ошибках? – Stibu

+0

Да, я использовал следующую команду, и график выглядит намного лучше. scale_fill_manual («Государства, затронутые вирусом EBOLA в США», значения = c («# 4daf4a», «# e41a1c»)) Большое спасибо за ваш Входы @Stibu – Abhi

0
#Code to map USA states affected with Ebola Virus 
    #import the following libraries 
    library(ggplot2); 
    library(maps); 
    library(plyr); 
    #begin of code 
    # read the csv file containing the ebola data for usa (important: replace the directory path) 
    ebolad = read.csv('usa.csv'); 
    colClasses = c('character', 'character', 'numeric')[[2]]; 
    names(ebolad) = c('col', 'region', 'infected'); 
    ebolad$region = tolower(ebolad$region); 
    # import the usa state data into local dataset 
    us_state_map = map_data('state'); 
    # merge ebola data set and usa maps data set 
    map_data = merge(ebolad, us_state_map, by = 'region'); 
    map_data = arrange(map_data, order); 
    # storing the data of abbreviated state names to display on the final map 
    states <- data.frame(state.center, state.abb) 
    # code to plot the map with state names and colors to distinguish the infected states vs uninfected states 
    ggplot(map_data, aes(x = long, y = lat, group = group)) + 
    geom_polygon(aes(fill=infected)) + 
    geom_path(colour = 'gray', linestyle = 2) + 
    xlab("Longitude") + ylab("Latitude") + 
    geom_text(data = states, aes(x = x, y = y, label = state.abb, group = NULL), size = 4)+ 
    scale_fill_manual('States affected with EBOLA Virus in USA', values=c("green4","red3")) + 
    coord_map(project="globular") + 
    theme_grey(); 
    #end of code 
+0

Карту можно посмотреть здесь [link] (https://drive.google.com/a/mst.edu/file/d/0B9PNapMMz8nBbTNwWDd3ZWkyTTA/view?usp=sharing) – Abhi

+0

Ваш вопрос (и ответ) не воспроизводимы, а ссылка, на которую вы ссылаетесь в комментарии, недоступна (без первого доступа). Подумайте об этом в долгосрочной перспективе. –

Смежные вопросы