Pakiet wydaje się być bardziej przyjaznym dla użytkownika sposobem pracy z danymi przestrzennymi niż, powiedzmy, sp
. Na przykład, jeśli mam zestaw współrzędnych szerokość/długość geograficzna, mogę wykreślić łatwo z wersji rozwojowej ggplot2
:Dodawanie geomów ggplot2 do prostego wykresu funkcji
library(sf)
devtools::install_github("tidyverse/ggplot2")
library(ggplot2)
# generate some data
set.seed(123)
y = rnorm(10, mean=40, sd=20)
x = rnorm(10, mean=-100, sd=30)
# collect to data.frame
xy = data.frame(x=x,y=y)
# create sf object
xy.sf = sf::st_as_sf(xy, coords=c("x", "y"), crs=4269)
# plot points
ggplot(data=xy.sf) + geom_sf()
Funkcja ggplot2::geom_sf
wie, że geometria xy.sf
obiektu jest zbiorem punktów, a więc don nie trzeba wywoływać, np. ggplot2::geom_point()
.
Załóżmy jednak, że chcę dodać kolejny geom w oparciu o zestaw punktów.
Na przykład, jeśli chcę, aby wygenerować warstwę konturu, aby pokazać, gdzie punkty są skoncentrowane, to użyłby ggplot2::geom_density2d
lub ggplot2::stat_density2d
, jak zasugerowano w this answer i this answer.
Jednakże następujący kod
ggplot(data=xy.sf) +
geom_sf() +
geom_density2d(data=xy.sf, aes(x=x,y=y,colour=..level..))
produkuje Poniższy obraz
Zauważ, że linie Countour wydają się mieć współrzędne odwrócone!
Próbowałem bawić się powyższym kodem, ale nie mogę go uruchomić. Zdaję sobie sprawę, że pakiet sf
jest dość nowy, ale mapa jest tak blisko, że ma rację! Jakieś pomysły?
Edit: Zapomniałem dodać info sesji
> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_2.2.1.9000 sf_0.4-3
loaded via a namespace (and not attached):
[1] Rcpp_0.12.9 magrittr_1.5 maps_3.1.1 units_0.4-4
[5] MASS_7.3-47 munsell_0.4.3 geosphere_1.5-5 colorspace_1.3-2
[9] lattice_0.20-35 rjson_0.2.15 jpeg_0.1-8 rlang_0.1.1
[13] stringr_1.2.0 udunits2_0.13 plyr_1.8.4 tools_3.4.0
[17] rgdal_1.2-5 grid_3.4.0 gtable_0.2.0 png_0.1-7
[21] DBI_0.5-1 ggthemes_3.3.0 lazyeval_0.2.0 assertthat_0.1
[25] digest_0.6.12 tibble_1.3.1 ggmap_2.6.1 reshape2_1.4.2
[29] mapproj_1.2-4 labeling_0.3 sp_1.2-4 stringi_1.1.2
[33] compiler_3.4.0 RgoogleMaps_1.4.1 scales_0.4.1 proto_1.0.0
Otrzymuję "poprawny" wykres i nie mogę odtworzyć tego zachowania na OSX Sierra, R 3.4.0, ggplot2_2.2.1.9000 i sf_0.4-3. (Najnowsza wersja 'sf' to 0.5-1, ale wymaga GDAL 2.0 lub nowszego, którego jeszcze nie zainstalowałem.) – eipi10
Otrzymuję również prawidłowy wykres, z 'sf' 0.5.1 – GGamba
Po prostu uaktualniono do GDAL 2.2.0 i' sf' 0.5. 1. Nadal otrzymuję poprawną fabułę. Mogę jednak odtworzyć twój wykres, jeśli jawnie odwrócę współrzędne, tj. 'Geom_density2d (aes (x = y, y = x, color = .. level ..))'. – eipi10