Pomóż wybrać najbardziej odpowiedni dwuwymiarowy schemat mapowania choropleth

10

Próbuję nałożyć zmienną nominalną (2 kategorie - deszczowe vs nawadniane) na mapie choropleth na zmienną numeryczną.

wprowadź opis zdjęcia tutaj

Aby podkreślić różnicę we wzorze między dwiema kategoriami, nakreśliłem jedną kategorię innym kolorem (obszary nawadniane na „czerwono”), podczas gdy te bezbarwne to obszary deszczowe.

Mapa jest jednak zagracona, a kontur miesza się z ciemniejszymi odcieniami zmiennej numerycznej.

Staram się unikać używania dwóch różnych schematów cieniowania do reprezentowania dwóch kategorii, ponieważ uważam, że ukryłoby to ogólny rozkład zmiennej bazowej.

Czy istnieje lepszy sposób na przedstawienie tej dwuwymiarowej klasyfikacji za pomocą pakietu ggplots2 w języku R (którego obecnie używam do tworzenia załączonej mapy)?

Mapy te zostaną ostatecznie wydrukowane na papierze.

varungoel123
źródło
Rozważ obliczenie odległości euklidesowej na granicach obszaru irygacyjnego. Więcej szczegółów tutaj: gis.stackexchange.com/q/53163/8104
Aaron
@Aaron, dzięki za link, cieniowanie kierunkowe może do tego zadziałać, i mógłbym użyć narzędzia buforującego do narysowania tych obszarów w R. Jednak moim jedynym zmartwieniem byłby stosunkowo niewielki rozmiar wielokątów, które mogą zostać sfałszowane przez szersze wytyczne. Spróbuję tego.
varungoel123
@ varungoel123 Wysłałem rozwiązanie R, używając pakietów rasteri rasterVis, które mogą Cię zainteresować.
thiagoveloso

Odpowiedzi:

7

Zamiast konturów wskazujących obszary nawadniane należy zastosować coś w rodzaju przezroczystego wzoru wypełnienia (np. Linie, przęsła). Przykład wyglądałby podobnie do tego:

http://www.geog.fu-berlin.de/de/Karto/umn_karten/bilder/komb2.png

lub po prostu „wzorce wypełnienia mapy” Google, aby uzyskać przegląd dostępnych opcji. Używanie konturów tylko dla obszarów nawadnianych sprawiałoby wrażenie, że nawadnianie nie jest zjawiskiem ciągłym.

Chris P.
źródło
To świetna sugestia. Czy można to zrobić w ggplot2 lub innym pakiecie w R? Mam około 60–70 map, na których wyznaczenie obszarów deszczowych i nawadnianych pozostaje stałe. Dzięki ggplot2 byłem w stanie zautomatyzować tworzenie map, czego nie udało mi się osiągnąć za pomocą ArcMap lub
Qgis
Nie znam ggplot2 ani R. Jednak ten wzór wypełnienia jest dość standardowy i nie powinien być zbyt trudny do osiągnięcia. Wiem, jak to zrobić w Qgis lub ArcMap. W obu programach możesz zapisać ten styl po jego zdefiniowaniu i użyć go ponownie. Automatyzacja powinna być możliwa w obu przypadkach. Skrypt lub arkada python może wykonać to za Ciebie.
Chris P,
1
Niestety ggplot nie jest dobry we wzorach wypełnienia (ale zobacz tutaj alternatywę)
cengel
QGis w wersji 2.0.1 oferuje również automatyczne tworzenie map
Zbynek
1

Niedawno musiałem zrobić podobną mapę. Rozwiązanie, które wymyśliłem, wykorzystuje pakiet rasterVis, a nie ggplot2 (nawiasem mówiąc, jest to niesamowity pakiet).

W moim przypadku miałem mapę trendów w czasie (która jest również zmienną numeryczną), a także mapę pokazującą istotność trendu (uzyskaną z testu statystycznego).

W moim przypadku chciałem nakreślić mapę istotności na górze mapy numerycznej, coś podobnego do wzoru „stippling”, aby pokazać, gdzie poziom ufności był wyższy.

Jest to z grubsza kod, którego użyłem do stworzenia mapy.

require(raster)
require(rasterVis)

# Scratch raster objects
data(volcano)
r1 <- raster(volcano)

over <- ifelse(volcano >=160 & volcano <=180, 1, NA) # This is the "mask" raster
r2 <- raster(over)

# And this is the key step:
# To convert the "mask" raster to spatial points
r.mask <- rasterToPoints(r2, spatial=TRUE)

# Plot
levelplot(r1, margin=F) +
layer(sp.points(r.mask, pch=20, cex=0.3, alpha=0.8))

W twoim przypadku możesz zmienić kod poprzez:

1) utworzenie „binarnego” rastra, w którym na przykład 0 jest nawadniany deszczem, a 1 jest nawadniany, i wykreślić to tak, jak zrobiłem lub;

2) utworzenie dwóch różnych masek, jednej dla deszczówki i jednej dla nawadnianych, i wykreślić oba z nich jako różne obiekty (na przykład koła dla deszczu i krzyżyki dla deszczu).

Myślę, że druga alternatywa spowodowałaby, że mapa wyglądałaby na zbyt „zanieczyszczoną” wizualnie, ale zawsze można kontrolować parametry punktów, w spszczególności w dokumentacji pakietu ?sp.points.

Mam nadzieję, że to pomoże.

thiagoveloso
źródło