Daha çox

R-ə sp paketinə tam miqyaslı süjet ilə yaxınlaşdırılmış sahənin daxil edilməsi


Mən istifadə edirəmsppaketRbir çay boyunca nümunə götürülmüş nöqtələr qurmaq. Bununla birlikdə, bütün çayın nümunə götürüldüyü bir sahəyə yaxınlaşmaq və bu yaxınlaşdırılan ərazini çayın bütün uzunluğuna çəkmək istərdim. İstifadələkənöqtə başına müxtəlif dəyişənlərə sahib olduğum üçün funksiya faydalıdır. "Yaxşılaşdırmaq" üçün sadə dəyişdirə bilərəmylimxlimistifadə edərkən arqumentlərləkəfunksiya.

İstifadəmeusenümunə olaraq verilənlər bazası

kitabxana (sp) kitabxana (qəfəs) məlumatları (meuse) koordinatları (meuse) = ~ x + y FUll.study <-spplot (meuse) # Tam iş sahəsini verir ZOOM <-spplot (meuse, xlim = c (170000, 181000) ), ylim = c (329714,333611)) # Böyütmək üçün təsadüfi sahə.

Nəticələr belədir:

Lakin istənilən nəticə belədir:

Əlavə etmək üçün bir yol tapmağa çalışıramZOOMbir əraziyəTam. Öyrənxəritə.Şübhə edirəmləkəasılıdırqəfəsmümkün olmaya bilər. Bu vəziyyətdə, hər bir dəyişən üçün müstəqil olaraq bir xəritə yaratmalıyam və ehtimal ki, uyğunlaşdırılan ərazini əlavə etməliyəmpar (yeni = DOĞRU), ancaq bu sadəcə bir düşüncədən ibarətdir. Hələ yeri necə təyin edəcəyimi və böyüdülmüş ərazinin ölçüsünü necə tənzimlədiyini anlamalıydım.


Burada ggplot istifadə edərək bir təklif var. Mən istifadə edirəmggplotGrobtam və yaxınlaşdırılmış xəritəni birləşdirmək vəızgara. düzməkmüxtəlif dəyişənlər üçün xəritələri birləşdirmək üçün gridExtra eklentisindən. Əlbətdə edilə biləcək bir çox düzəliş var.

library (sp) library (ggplot2) library (grid) # unit library (gridExtra) # for grid.arrange # zoom limit box xlim <- c (179500,181000); ylim <- c (332000,332500) # böyüdülmüş sahənin ölçüsü - əsas süjetin yuxarı sol küncündən ofset: x_offs <- 1000; y_offs <- tam süjet üçün 1300 # ayarlar tam tema <- mövzu (panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), axis.text.x = element_blank ( ), axis.text.y = element_blank (), axis.ticks = element_blank (), axis.title.x = element_blank (), axis.title.y = element_blank ()) # zoom sahəsi üçün ayarları zoomtheme <- mövzu ( legend.position = "none", axis.line = element_blank (), axis.text.x = element_blank (), axis.text.y = element_blank (), axis.ticks = element_blank (), axis.title.x = element_blank (), axis.title.y = element_blank (), panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_rect (color = 'red', fill = "white "), plot.margin = vahid (c (0,0, -6, -6)," mm ")) ############## nöqtə nümunəsi ####### ###### data (meuse) # dəyişən qurmaq üçün vars <- adlar (meuse) [3:10] plotlist <- list () for (i in vars) {# full plot p.full <- ggplot (meuse) , aes_string (x = "x", y = "y", color = i)) + geom_point () + fulltheme # zoomed plot p.zoom <- ggplot (meuse, aes_string (x = "x", y = "y", color = i)) + geom_point () + coord_cartesian (xlim = xlim, ylim = ylim) + zoomtheme # onları bir araya toplayın g <- ggplotGrob (p.zoom) plotlist [[length (plotlist) + 1]] <- p.full + annotation_custom (grob = g, xmin = min (meuse $ x), xmax = min (meuse $ x) + x_offs, ymin = max (meuse $ y) - y_offs, ymax = max (məni $ y))} # plot do.call (grid.arrange, c (plotlist, ncol = 4))

Eynilə, ggplot rasterləri idarə edə bilər.

############################################################ ######## raster nümunəsi ############## kitabxana (raster) r <- raster (system.file ("external / test.grd", pack = "raster") ) s <- yığın (r, r * 2, log (r)) adlar (lər) <- c ('meuse', 'meuse2', 'meuseLog') meuseRast <- data.frame (rasterToPoints (s)) rastvars <- adlar (meuseRast) [- c (1: 2)] plotrast <- list () for (i in rastvars) {p.fullrast <- ggplot (meuseRast, aes_string (x = "x", y = "y") , fill = i)) + geom_raster () + fulltheme p.zoomrast <- ggplot (meuseRast, aes_string (x = "x", y = "y", fill = i)) + geom_raster () + coord_cartesian (xlim = xlim , ylim = ylim) + zoomtheme g <- ggplotGrob (p.zoomrast) plotrast [[length (plotrast) + 1]] <- p.fullrast + annotation_custom (grob = g, xmin = min (meuseRast $ x), xmax = min (meuseRast $ x) + x_offs, ymin = max (meuseRast $ y) - y_offs, ymax = max (meuseRast $ y))} # # plot do.call (grid.arrange, c (plotrast, nrow = 1))


İstifadə edə bilərsinizmaptools :: elidea koordinatlarını tərcümə etmək funksiyasıMəkan *obyekt. Nəticəni ilə birləşdirirsinizsəsp.layoutdəlilləkəvə ya iləlatticeExtra :: qatfunksiyası, sizə lazım olanı əldə edəcəksiniz:

kitabxana (sp) kitabxana (maptools) kitabxana (raster) kitabxana (qəfəs) kitabxana (qəfəs) Əlavə məlumat (meuse) koordinatları (meuse) = ~ x + y ZOOM <- məhsul (meuse, ölçü (180000, 181000, 330000, 331500)) ) yerdəyişmiş <- elide (ZOOM, shift = c (-1200, 2000)) spplot (meuse ["sink"], scales = list (draw = TRUE)) + layer ({sp.points (ZOOM, col = 'black ') sp.points (yerdəyişdi, col = ")})


Videoya baxın: RESPUBLİKA BİRİNCİLİYİNİ NECƏ QAZANDIM?. İmtahan macəram part 2 (Oktyabr 2021).