मैं ggsn :: स्केलबार () का उपयोग करके ggplot मानचित्र में स्केल बार जोड़ने का प्रयास कर रहा हूं, लेकिन तर्कों के कई अलग-अलग संयोजनों की कोशिश करने के बावजूद, मुझे हमेशा कुछ त्रुटि या कोई अन्य मिलता है। यहाँ मेरे नक्शे के लिए कोड है:

# load libraries
library(tidyverse)
library(viridis)
library(sp)
library(rgdal)
library(ggsn)

# data
my.data.df <- data.frame(value = c(-1.2269832, -1.0153486, -0.9581069, -1.1534667, -1.0139735, -0.8711997, -0.8618286, -0.8524683),
                         x = c(538127.3, 538129.3, 538125.3, 538127.3, 538129.3,538131.3, 538121.3, 538123.3),
                         y = c(1101055, 1101055, 1101053, 1101053, 1101053, 1101053, 1101051, 1101051))
bb <- data.frame(long = c(538107, 538142), lat = c(1101020.5, 1101058.5))


# make a map
my.map <- ggplot(my.data.df, aes(x=x, y=y, fill=value)) +
  geom_tile() +
  geom_path(data = lines, aes(x=long, y=lat, group=group), inherit.aes = FALSE) +
  scale_fill_viridis("Subsidence (m)",
                     limits = c(-1.5, 0.5)) +
  scale_x_continuous(limits = c(538107, 538142)) +
  scale_y_continuous(limits = c(1101020.5, 1101058.5)) +
  coord_fixed() +
  theme(plot.title = element_text(hjust = 0.5),
        axis.title = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        legend.justification=c(1,0),
        legend.position=c(1,0),
        plot.margin=unit(c(0,0,0,0), "cm"))

यहां मानचित्र पर एक नज़र डालें।समस्या तब आती है जब मैं एक पैमाना जोड़ने का प्रयास करता हूं मानचित्र पर बार:

my.map + 
  scalebar(dist = 5, dd2km = FALSE, dist_unit = 'm', location = 'bottomleft')

यह त्रुटि देता है:

स्केलबार में त्रुटि (dist = 5, dd2km = FALSE, dist_unit = "m", location = "bottomleft"): तर्क "x.min" गुम है, बिना किसी डिफ़ॉल्ट के

X.min, x.max, y.min, y.max जोड़ना:

my.map + 
  scalebar(dist = 5, dd2km = FALSE, dist_unit = 'm', location = 'bottomleft', x.min = 538107, x.max = 538142, y.min = 1101020.5, y.max = 1101058.5)

यह त्रुटि लौटाता है:

मज़ा में त्रुटि (एक्स [[i]], ...): वस्तु 'मान' नहीं मिला

डेटा तर्क जोड़ने का प्रयास:

my.map + 
  scalebar(data = my.data.df, dist = 5, dd2km = FALSE, dist_unit = 'm', location = 'bottomleft', x.min = 538107, x.max = 538142, y.min = 1101020.5, y.max = 1101058.5)

त्रुटि लौटाता है:

त्रुटि: data का नाम विशिष्ट होना चाहिए, लेकिन इसमें डुप्लिकेट कॉलम हैं इसके अलावा: चेतावनी संदेश: 1: मिनट में (डेटा $ लंबा): कोई गैर-अनुपलब्ध नहीं मिनट के लिए तर्क; रिटर्निंग इन्फ २: अधिकतम(डेटा$लॉन्ग) में : कोई गैर-अनुपलब्ध नहीं अधिकतम करने के लिए तर्क; रिटर्निंग -इन्फ 3: मिनट में (डेटा $ लैट): कोई गैर-लापता नहीं मिनट के लिए तर्क; रिटर्निंग इंफ 4: अधिकतम (डेटा $ लैट) में: कोई गैर-लापता नहीं अधिकतम करने के लिए तर्क; वापसी - जानकारी

और, अंत में, मुझे यह कहते हुए मदद मिली कि स्केलबार () में डेटा तर्क वास्तव में डेटा फ्रेम के रूप में एक बाउंडिंग बॉक्स की तलाश में है, इसलिए मैंने इसका उपयोग करने का प्रयास किया:

my.map + 
  scalebar(data = bb, dist = 5, dd2km = FALSE, dist_unit = 'm', location = 'bottomleft', x.min = 538107, x.max = 538142, y.min = 1101020.5, y.max = 1101058.5)

लेकिन यह त्रुटि मिली:

मज़ा में त्रुटि (एक्स [[i]], ...): वस्तु 'मान' नहीं मिला

मैं सोच रहा हूं कि स्केलबार जोड़ने से जीजीप्लॉट के साथ समस्याएं आ रही हैं, क्योंकि यह अब डेटा फ्रेम में कॉलम के रूप में "मान" को दो प्रयासों में भरने के लिए उपयोग करने के लिए नहीं पहचानती है। हालाँकि, मैं वास्तव में निश्चित नहीं हूँ। किसी भी अंतर्दृष्टि या समाधान की बहुत सराहना की जाएगी!

r
6
Heidi Rodenhizer 19 अप्रैल 2018, 02:01

1 उत्तर

सबसे बढ़िया उत्तर

मुझे एक ही समस्या हो रही थी। भरण मानचित्रण को ggplot कॉल से geom_tile कॉल पर ले जाकर इसने समस्या को ठीक कर दिया।

1
Elizabeth Wesley 23 सितंबर 2019, 05:21