2015-10-01 6 views
6

मुझे यकीन नहीं है कि मेरे डेटा बिंदुओं में से कोई भी मानचित्र पर क्यों दिखाई नहीं दे रहा है।गायब_पॉइंट पंक्तियों को हटाने वाले मूल्यों को कैसे हटा रहा है?

ggplot(top_bottom) + 
geom_point(aes(x = as.numeric(Longitude), y = as.numeric(Latitude)), 
      colour = top_bottom, size = 3) 

:

Removed 11 rows containing missing values (geom_point). 

हालांकि, इस ggmap() के उपयोग के बिना काम करता है:

map <- qmap('Des Moines') + 
     geom_point(data = top_bottom, aes(x = as.numeric(Longitude), 
        y = as.numeric(Latitude)), colour = top_bottom, size = 3) 

मैं चेतावनी संदेश मिल:

Store_ID visits CRIND_CC ISCC EBITDAR top_bottom Latitude Longitude 
     (int) (int) (int) (int) (dbl)  (chr)  (fctr)  (fctr) 
1  92 348 14819 39013 76449.15  top 41.731373 -93.58184 
2  2035 289 15584 35961 72454.42  top 41.589428 -93.80785 
3  50 266 14117 27262 49775.02  top 41.559017 -93.77287 
4  156 266  7797 25095 28645.95  top 41.6143 -93.834404 
5  66 234  8314 18718 46325.12  top 41.6002 -93.779236 
6  207  18  2159 17999 20097.99  bottom 41.636208 -93.531876 
7  59  23 10547 28806 52168.07  bottom 41.56153 -93.88083 
8  101  23  1469 11611 7325.45  bottom 41.20982 -93.84298 
9  130  26  2670 13561 14348.98  bottom 41.614517 -93.65789 
10  130  26  2670 13561 14348.98  bottom 41.6145172 -93.65789 
11  24  27 17916 41721 69991.10  bottom 41.597134 -93.49263 

> dput(droplevels(top_bottom)) 
structure(list(Store_ID = c(92L, 2035L, 50L, 156L, 66L, 207L, 
59L, 101L, 130L, 130L, 24L), visits = c(348L, 289L, 266L, 266L, 
234L, 18L, 23L, 23L, 26L, 26L, 27L), CRIND_CC = c(14819L, 15584L, 
14117L, 7797L, 8314L, 2159L, 10547L, 1469L, 2670L, 2670L, 17916L 
), ISCC = c(39013L, 35961L, 27262L, 25095L, 18718L, 17999L, 28806L, 
11611L, 13561L, 13561L, 41721L), EBITDAR = c(76449.15, 72454.42, 
49775.02, 28645.95, 46325.12, 20097.99, 52168.07, 7325.45, 14348.98, 
14348.98, 69991.1), top_bottom = c("top", "top", "top", "top", 
"top", "bottom", "bottom", "bottom", "bottom", "bottom", "bottom" 
), Latitude = structure(c(11L, 4L, 2L, 7L, 6L, 10L, 3L, 1L, 8L, 
9L, 5L), .Label = c("41.20982", "41.559017", "41.56153", "41.589428", 
"41.597134", "41.6002", "41.6143", "41.614517", "41.6145172", 
"41.636208", "41.731373"), class = "factor"), Longitude = structure(c(3L, 
7L, 5L, 8L, 6L, 2L, 10L, 9L, 4L, 4L, 1L), .Label = c("-93.49263", 
"-93.531876", "-93.58184", "-93.65789", "-93.77287", "-93.779236", 
"-93.80785", "-93.834404", "-93.84298", "-93.88083"), class = "factor")), row.names = c(NA, 
-11L), .Names = c("Store_ID", "visits", "CRIND_CC", "ISCC", "EBITDAR", 
"top_bottom", "Latitude", "Longitude"), class = c("tbl_df", "tbl", 
"data.frame")) 

साजिश बना रहा है

मैं ggmap पर ओवरले के लिए अंक कैसे प्राप्त करूं ??

+1

मुझे लगता है कि डेटा बिंदुओं जो qmap वस्तु की bbox के बाहर रहने के कर रहे हैं। यही कारण है कि, आप देखते हैं कि कुछ डेटा पॉइंट स्वचालित रूप से हटा दिए जाते हैं, मुझे लगता है। – jazzurro

+0

यह प्रश्न काफी [बेहतर] हो सकता है (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) जो आपको अधिक प्रतिक्रिया प्राप्त करेगा। सबसे पहले, कृपया डेटा चिपकाने के बजाय 'dput' का उपयोग करें। दूसरा, कृपया अपने कोड में इस्तेमाल किए गए पैकेज सूचीबद्ध करें। –

+0

यह सच है। 'Geom_point' लाइन में एक कारक से संख्यात्मक रूप से परिवर्तित होने पर यह मान बदलता है। कोई विचार है कि उसके आसपास कैसे जाना है? मैं कारकों को साजिश नहीं दे सकता अन्यथा मुझे त्रुटि मिलती है, "निरंतर पैमाने पर असाइन किए गए समझदार चर"। – herkyonparade

उत्तर

5

आप as.numeric() का उपयोग factor के साथ कर रहे हैं। जैसा कि here देखा गया है जो आपको कारक के लिए एक स्तर संख्या देता है (संख्या प्रदर्शित नहीं)। अनजाने में, ये सभी स्तर "डेस मोइनेस" के लिए प्रदर्शित कैनवास पर नहीं हैं।

as.numeric(as.character(Latitude)) और as.numeric(as.character(Longitude)) का उपयोग करें, जैसा कि लगता है उतना बदसूरत है।

2

नमूना डेटा देखकर, ऐसा लगता है कि एक डेटा बिंदु है जो मानचित्र क्षेत्र में नहीं रहता है।

library(dplyr) 
library(ggplot2) 
library(ggmap) 

### You can find lon/lat for bbox using your ggmap object. 
### For instance, des1 <- ggmap(mymap1) 
### str(des1) 
### You could use bb2bbox() in the ggmap package to find lon/lat. 

filter(top_bottom, 
     between(Latitude, 41.27057, 41.92782), 
     between(Longitude, -94.04787, -93.16897)) -> inside 

setdiff(top_bottom, inside) 

# Store_ID visits CRIND_CC ISCC EBITDAR top_bottom Latitude Longitude 
#1  101  23  1469 11611 7325.45  bottom 41.20982 -93.84298 

जब से तुम जूम निर्दिष्ट किए बिना qmap() इस्तेमाल किया, मैं क्या ज़ूम स्तर आप था पता नहीं है। चलो थोड़ा सा खेलते हैं। पहले मामले में, एक डेटा बिंदु गुम है; Removed 1 rows containing missing values (geom_point).

mymap1 <- get_map('Des Moines', zoom = 10) 

ggmap(mymap1) + 
geom_point(data = top_bottom, aes(x = as.numeric(Longitude), 
      y = as.numeric(Latitude)), colour = top_bottom, size = 3) 

enter image description here

mymap2 <- get_map('Des Moines', zoom = 9) 

ggmap(mymap2) + 
geom_point(data = top_bottom, aes(x = as.numeric(Longitude), 
      y = as.numeric(Latitude)), colour = top_bottom, size = 3) 

enter image description here

तो मुख्य बात, मुझे लगता है, कि क्या आप वाकई अपने डेटा सेट के लिए सही ज़ूम स्तर चुनें बनाना चाहते है। इसके लिए, आप qmap() में ज़ूम निर्दिष्ट करना चाहेंगे। उम्मीद है इससे आपको मदद मिलेगी।

आंकड़े

top_bottom <- structure(list(Store_ID = c(92L, 2035L, 50L, 156L, 66L, 207L, 
59L, 101L, 130L, 130L, 24L), visits = c(348L, 289L, 266L, 266L, 
234L, 18L, 23L, 23L, 26L, 26L, 27L), CRIND_CC = c(14819L, 15584L, 
14117L, 7797L, 8314L, 2159L, 10547L, 1469L, 2670L, 2670L, 17916L 
), ISCC = c(39013L, 35961L, 27262L, 25095L, 18718L, 17999L, 28806L, 
11611L, 13561L, 13561L, 41721L), EBITDAR = c(76449.15, 72454.42, 
49775.02, 28645.95, 46325.12, 20097.99, 52168.07, 7325.45, 14348.98, 
14348.98, 69991.1), top_bottom = structure(c(2L, 2L, 2L, 2L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("bottom", "top"), class = "factor"), 
Latitude = c(41.731373, 41.589428, 41.559017, 41.6143, 41.6002, 
41.636208, 41.56153, 41.20982, 41.614517, 41.6145172, 41.597134 
), Longitude = c(-93.58184, -93.80785, -93.77287, -93.834404, 
-93.779236, -93.531876, -93.88083, -93.84298, -93.65789, 
-93.65789, -93.49263)), .Names = c("Store_ID", "visits", 
"CRIND_CC", "ISCC", "EBITDAR", "top_bottom", "Latitude", "Longitude" 
), class = "data.frame", row.names = c("1", "2", "3", "4", "5", 
"6", "7", "8", "9", "10", "11")) 
संबंधित मुद्दे