Mam pytanie dotyczące nakreślenia mapy choropleth. Co jest zalecane w odniesieniu do kreślenia mapy z niestandardowymi przerwami? I spraw, aby wyglądał nieco atrakcyjnie.
W moim skrypcie użyłem polecenia plot i spplot do wizualizacji niektórych danych, ale nie jestem do końca zadowolony z wyniku. Łatwo zrozumieć, dlaczego. Za pomocą splotu otrzymuję rampę kolorów, która powtarza kolory dla różnych wartości, co jest nieco dziwne. Używając wykresu z niestandardowymi podziałami , nie byłem w stanie uzyskać lepszych przedziałów dla wartości, tak że na przykład wartości zerowe są białe na mapie. Przekrzywione proporcje między legendą a mapą są, jak sądzę, prawdopodobnie wynikiem Rstudio.
Zastanawiałem się więc, czy ktoś ma lepsze sugestie dotyczące tworzenia map choropleth w R przy użyciu niestandardowych przerw?
EDYCJA 20-02-2013
Zgodnie z sugestią użyłem ggplot2 do stworzenia mapy choropleth. Użyłem kodu poniżej. Napotkałem dwa problemy. Jednym z nich jest to, że po wzmocnieniu danych nie wszystkie dane z pliku kształtu są przesyłane do ramki danych. Więc muszę zmienić nazwę zmiennej „id”, aby móc scalić dane. Mniejszy problem.
Większy problem polega na tym, że pomimo faktu, że dane w ramce danych są poprawne, ggplot pokazuje mapę, w której dane są niepoprawne. Wartość koloru zgodnie z legendą nie odpowiada wartości zmiennej w danych. Czy coś tutaj przeoczyłem?
# 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()
Aktualizacja 13-11-2015: Naprawiono link do pliku kształtu . Zobacz odpowiedź poniżej, aby dowiedzieć się, jak zaplanować choropleth.
źródło
ggplot2
map choropleth, które moim zdaniem domyślnie okazują się lepiej wyglądające.Odpowiedzi:
Nie widzę problemu z powyższym kodem, z wyjątkiem tego, że masz 6 wyraźnych poziomów
onset
, więc potraktowałbym je jako czynniki, a nie jako zmienną ciągłą. Zanotujfactor
połączenie w poniższym kodzie.Ten kod daje następujący wynik:
Jeśli chcesz niestandardowe kolory, możesz spróbować:
Co powoduje:
źródło
3
doonset
kolumny i kreśli „a”3
na wykresie. To wydaje się działać. Prawdopodobnie coś mi umknęło?Pakiet classInt ma wiele funkcji do obliczania interwałów dla danych liczbowych - zainstaluj go i przeczytaj dokumenty.
źródło
W przypadku archiwów zastosowałem rozwiązanie:
źródło