2017-11-27 3 views
0

I Gewaltverbrechen von Kreis in North CarolinaErstellen eines choropleth in R Gewalttaten auf die Grafschaft in North Messen Carolina

Meine Daten-Set ein wenig so aussieht visualisieren möchten:

Subregion violent_crime

alamance 396.39 

alexander 130.38 

alleghany 137.48 

anson 513.65 

ashe 78.32 

avery 138.51 

beaufort 328.74 

... 

Hier ist mein Code - bisher nur die Karte von North Carolina und seine County-Linien visualisieren.

ich nur ggplot und Karten zu verwenden, wurde versucht, aber ich laufe in Sackgassen

... 

library(plotly) 

library(ggplot2) 

library(maps) 

library(dplyr) 

crime.df <- read.csv(file="B:/Data/visualization/violent_crimes.csv", header=TRUE, sep=",") 


vcdExtra::datasets 


nc <- subset(states, region == "north carolina") 

head(nc) 

counties <- map_data("county") 

nc_county <- subset(counties, region == "north carolina") 

head(nc_county) 


choropleth <- inner_join(nc_county, crime.df, by = "subregion") 

choropleth <- chloropleth[!duplicated(chloropleth$order),] 

ggplot(data = nc, mapping = aes(x = long, y = lat, group = group)) + 

    coord_fixed(1.2) + 

    geom_polygon(color = "black", fill = "gray") + 

    geom_polygon(data = nc_county, fill = NA, color = "white") + 

    geom_polygon(color = "black", fill = NA) 




... 

Dank!

Antwort

1
library(ggplot2) 
library(dplyr) 

# Get NC counties 

nc_map <- tbl_df(map_data("county", region = "north carolina")) 

# Simulate data since you didn't use dput() as the R section of SO instructs you to do 

set.seed(1492) 
data_frame(
    subregion = unique(nc_map$subregion), 
    crime = sample(50:500, length(unique(nc_map$subregion))) 
) -> crime_df 

# Join the values to the map 

nc_map <- left_join(nc_map, crime_df) 

# Plot it 

ggplot() + 
    geom_polygon(data=nc_map, color="black", 
       aes(x=long, y=lat, group=subregion, fill=crime)) + 
    viridis::scale_fill_viridis(name="Crime ", direction=-1) + 
    coord_map("polyconic") + 
    ggthemes::theme_map() + 
    theme(legend.position="bottom") 

enter image description here

Bedenken Sie:

  • Binning die Verbrechen Daten in ~ 5 Gruppen
  • Sie Sicherung verwenden Pro-Kopf-info (bezogen auf Bevölkerung Kreis, da Sie konzentrieren on NC)
  • Verwenden Sie dput() als die SO R Abschnitt anweist, damit Sie Daten
  • aufnehmen können
  • Versuchen Sie, Fehler zu isolieren und bessere Fehlerbeschreibungen zu liefern
  • Lesen Sie auf Projektionen und versuchen Sie, ggalt::coord_proj() mit diesem String PROJ.4 zu verwenden: +proj=aea +lat_1=34.0207760236743 +lat_2=36.37811477607033 +lon_0=-80.716552734375 gegen meinen faulen Ausweg Beispiel.
+0

Vielen Dank! also bin ich noch unerfahren mit R, und Ihr Code ist sehr unterschiedlich zu meinem. Ich nehme nicht an, dass du mir die Unterschiede erklären könntest? – PLaks

+1

Der Code ist wirklich nicht so unterschiedlich, aber Sie haben keine Daten eingegeben (wie ich in der Antwort gesagt habe, ermutigte SO Sie, 'dput()' zu verwenden, um die Aufgabe reproduzierbar zu machen) die Zwei. In Wirklichkeit bekomme ich die Kartendaten auf die gleiche Weise (wirklich), verbinde mich am selben Tag (größtenteils) mit den Verbrechensdaten und vereinfache den Plotcode ein wenig (während ich eine bessere Kartenprojektion, eine bessere Farbpalette und ein besseres Thema hinzufüge). – hrbrmstr

Verwandte Themen