2016-02-06 4 views
0

Я думаю, что я просто сделал самый странный в мире choropleth.choropleth в ggmap не правильно построил

Код прост:

df$cut <- cut_interval(df$Count, 5) 

ggplot(df, aes(lon, lat)) + 
    geom_polygon(aes(fill = df$cut), colour = alpha("white", 1/2), size = 0.2) + 
    geom_polygon(data = df , colour = "white", fill = NA) + 
    scale_fill_brewer(palette = "PuRd") 

(см Pastebin для dput в dataframe)

Но карта с ума:

enter image description here

Где я ошибся ?

Рассматривая другие фрагменты code, я не могу понять, как это сделать.

+3

У меня был быстрый взгляд на ваши данные. Если я не ошибаюсь, ваши данные не имеют данных для полигонов. Например, AL имеет несколько строк, и все они имеют одинаковые lat и lon. Если вы хотите нарисовать карту состояний, вам понадобится другой набор данных, который вы можете найти в пакете 'maps' или' coroplethr'. Другое дело, что у вас несколько лет для некоторых штатов. Интересно, нужно ли агрегировать данные перед созданием карты. В противном случае вам нужно будет выбрать конкретные годы, которые вам нужны, возможно? – jazzurro

+0

«Если вы хотите нарисовать карту состояний, вам понадобится другой набор данных, который вы можете найти в пакете карт или пакете coroplethr». Вы знаете название этого набора данных? И ДА, вы правы, мне нужно только выбрать данные за один год. Наверное, я не понимаю, как на самом деле построена трубка. –

+0

Я указываю пакет R в комментарии. Пожалуйста, посмотрите CRAN maul или любой другой источник. Для подмножества данных вы можете найти информацию о SO и многих других местах. :) – jazzurro

ответ

1

Вы можете прокладывать choropleth так:

library(ggplot2) 
library(XML) 
tab <- readHTMLTable("http://www.50states.com/abbreviations.htm", which=1) 
df$region <- tolower(tab[match(df$State, tab[, 2]), 1]) 
states <- map_data("state") 
choro <- merge(states, df, sort = FALSE, by = "region") 
choro <- choro[order(choro$order), ] 
ggplot(choro, aes(long, lat.x)) + 
    geom_polygon(aes(group = group, fill = Count), colour="grey55") + 
    coord_quickmap() + 
    facet_wrap(~Year) 

Во-первых, должен соответствовать имена регионов в ваших df$State до тех в states$region. Затем данные карты объединяются с вашим фреймом данных и упорядочиваются. Наконец, сюжет - это кусок пирога с использованием ggplot.

enter image description here

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