أكثر

إدخال قطعة مكبرة مع مخطط كامل الحجم في حزمة sp في R.

إدخال قطعة مكبرة مع مخطط كامل الحجم في حزمة sp في R.


أنا أستخدم ملفصحزمة فيصلرسم نقاط عينات على طول النهر. ومع ذلك ، أود تكبير منطقة عينة من النهر بأكمله ، ورسم هذه المنطقة المكبرة على الطول الكامل للنهر. باستخدامسبلوتالوظيفة مفيدة ، لأن لدي متغيرات مختلفة لكل نقطة. "للتكبير" ، يمكنني تغيير ملفيليموكليمالحجج عند استخدامسبلوتوظيفة.

باستخدامميوزمجموعة البيانات كمثال

مكتبة (sp) مكتبة (شعرية) إحداثيات البيانات (meuse) (meuse) = ~ x + y FUll.study <-spplot (meuse) # يعطي منطقة الدراسة الكاملة ZOOM <-spplot (meuse، xlim = c (170000، 181000 )، ylim = c (329714،333611)) # منطقة عشوائية للتكبير.

تبدو النتائج كما يلي:

لكن النتيجة المرجوة هي شيء من هذا القبيل:

أحاول إيجاد طريقة لإضافة ملفتكبيرإلى منطقة علىدراسة كاملةأنا أظن لأنسبلوتيعتمد علىبنيةقد لا يكون ممكنا. في هذه الحالة ، سأضطر إلى إنشاء خريطة لكل متغير بشكل مستقل ، وإضافة منطقة التكبير / التصغير الخاصة بها ، ربما من خلالالمساواة (جديد = TRUE)، ولكن هذه مجرد فكرة. لا يزال يتعين علي معرفة كيفية تحديد الموقع وضبط حجم المنطقة المكبرة.


هنا اقتراح باستخدام ggplot. أنا أستعملggplotGrobلدمج الخريطة الكاملة والمكبرة والشبكة. الترتيبمن الشبكة الإضافية لدمج الخرائط لمتغيرات مختلفة. هناك العديد من التعديلات التي يمكن إجراؤها بالطبع.

مكتبة (sp) مكتبة (ggplot2) مكتبة (شبكة) # لمكتبة الوحدة (gridExtra) # للشبكة. تنسيق # مربع إحاطة التكبير xlim <- c (179500،181000) ؛ ylim <- c (332000،332500) # حجم المنطقة المكبرة - الإزاحة من الزاوية اليسرى العليا من المؤامرة الرئيسية: x_offs <- 1000 ؛ y_offs <- 1300 # إعدادات للموضوع الكامل للمخطط الكامل <- theme (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 ()) # إعدادات تكبير مخطط التكبير <- سمة ( legend.position = "لا شيء" ، axis.line = element_blank () ، axis.text.x = element_blank () ، axis.text.y = element_blank () ، axis.ticks = element_blank () ، محور. 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 = unit (c (0،0، -6، -6)،" mm ")) ############## مثال النقطة ####### ###### data (meuse) # variables to plot vars <- names (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 # مؤامرة التكبير p.zoom <- ggplot (meuse، aes_string (x = "x"، y = "y"، color = i)) + geom_point () + Coord_cartesian (xlim = xlim، ylim = ylim) + zoomtheme # ضعهم معًا g <- ggplotGrob (p.zoom) [[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 (meuse $ y))}} # plot do.call (grid.arrange، c (plotlist، ncol = 4))

وبالمثل ، يمكن لـ ggplot التعامل مع البيانات النقطية.

############################################ ###### ######## المثال النقطي ############# مكتبة (نقطية) r <- raster (system.file ("external / test.grd"، package = "raster") ) s <- المكدس (r ، r * 2 ، السجل (r)) الأسماء (الأسماء) <- c ('meuse' ، 'meuse2' ، 'meuseLog') meuseRast <- data.frame (rasterToPoints (s)) rastvars <- أسماء (meuseRast) [- c (1: 2)] plotrast <- list () لـ (i في 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 () + format_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))} # مؤامرة do.call (grid.arrange، c (plotrast، nrow = 1))


يمكنك استخدام الmaptools :: elideوظيفة لترجمة إحداثياتمكاني*مفعول. إذا قمت بدمج النتيجة مع ملفsp. تخطيطحجةسبلوتأو معإضافي :: طبقةوظيفة ، سوف تحصل على ما تحتاجه:

مكتبة (sp) مكتبة (maptools) مكتبة (نقطية) مكتبة (شعرية) مكتبة (latticeExtra) بيانات (meuse) إحداثيات (meuse) = ~ x + y ZOOM <- المحاصيل (meuse ، مدى (180000 ، 181000 ، 330000 ، 331500) ) إزاحة <- elide (ZOOM، shift = c (-1200، 2000)) spplot (meuse ["zinc"]، scales = list (draw = TRUE)) + layer ({sp.points (ZOOM، col = 'black ') sp.points (نازح ، عمود = ")})


شاهد الفيديو: SKETCHUP- 01 EXTRUDING AUTOCAD PLAN -رفع مخطط أتوكاد في الأسكتش أب