Вот небольшой фрагмент кода с комментариями, объясняющими каждый шаг. Дайте мне знать, если у вас есть вопросы
# load libraries
library(XML);
library(ggplot2);
library(maps);
library(plyr);
# read the data from the bls website with correct column formats
unemp = readHTMLTable('http://www.bls.gov/web/laus/laumstrk.htm',
colClasses = c('character', 'character', 'numeric'))[[2]];
# rename columns and convert region to lowercase
names(unemp) = c('rank', 'region', 'rate');
unemp$region = tolower(unemp$region);
# get us state map data and merge with unemp
us_state_map = map_data('state');
map_data = merge(unemp, us_state_map, by = 'region');
# keep data sorted by polygon order
map_data = arrange(map_data, order);
# plot map using ggplot2
p0 = ggplot(map_data, aes(x = long, y = lat, group = group)) +
geom_polygon(aes(fill = cut_number(rate, 5))) +
geom_path(colour = 'gray', linestyle = 2) +
scale_fill_brewer('Unemployment Rate (Jan 2011)', pal = 'PuRd') +
coord_map();
#You may need to spell out the argument pal as pallete