2015-01-01 11 views
5

मैं एक मार्ग और ggmap पर स्थानों की प्लॉटिंग कर रहा हूँ के साथ एक ggmap को एक पौराणिक कथा/पाठ तालिका जोड़ना और मैं ऐसे नाम हैं जो अंक का प्रतिनिधित्व यानीकई परतों

1 विधेयक हैरिस सूची एक किंवदंती जोड़ने की जरूरत है, 2 ऐनी जोन्स आदि ..

मैंने नमूना डेटा तैयार किया है।

structure(list(business.names = structure(c(8L, 9L, 5L, 6L, 7L, 
1L, 4L, 3L, 2L, 10L), .Label = c("Bill Harris", "Anne Jones", 
"Sue Perkins", "Morris Jones", "Bert Harris", "Bob Jones", 
"Mike Taylor", "Paul Jones", "John Roberts", 
"Fred Morris"), class = "factor"), X1 = structure(c(7L, 
8L, 10L, 9L, 3L, 2L, 1L, 4L, 5L, 6L), .Label = c("53.186744", 
"53.1884117", "53.1894004", "53.189836", "53.1902965", "53.1905138631287", 
"53.1912196", "53.1916771", "53.193418", "53.1934748"), class = "factor"), 
    X2 = structure(c(7L, 3L, 2L, 1L, 5L, 4L, 6L, 10L, 9L, 8L), .Label = c("-2.881248", 
    "-2.8814698", "-2.8846099", "-2.88802", "-2.8886692", "-2.890165", 
    "-2.8902453", "-2.89043889005541", "-2.8919373", "-2.893896" 
    ), class = "factor")), .Names = c("business.names", "X1", 
"X2"), row.names = c(10L, 9L, 8L, 1L, 7L, 6L, 3L, 4L, 5L, 2L), class = "data.frame") 

यहां मेरा कोड आज है। ध्यान दें कि geom_path और geom.route के लिए, आकार & रंग पैरामीटर एईएस फ़ंक्शन के बाहर है। मुझे डेटा के आधार पर आकार या रंग समायोजित करने की आवश्यकता नहीं है। यदि मैं आकार & एईएस फ़ंक्शन में रंग डालता हूं तो मुझे एक किंवदंती मिलती है लेकिन यह वही नहीं है जो मैं चाहता हूं। यह व्यवसाय के नाम के बजाय बिंदु डेटा का उपयोग कर रहा है।

मुझे यह भी यकीन नहीं है कि लीजेंड जाने का सबसे अच्छा तरीका है या नहीं। मुझे बस एक साधारण तालिका में चार्ट पर प्रदर्शित डेटा की आवश्यकता है।

create.map<-function(lst){ 
    require("ggmap") 
    require("qmap") 
    way.points<-data.frame(lapply(lst[,1:3], as.character), stringsAsFactors=FALSE) 
    rte.from <- apply(way.points[-nrow(way.points),2:3],1,paste,collapse=",") 
    rte.to  <- apply(way.points[-1,2:3],1,paste,collapse=",") 
    rte  <- do.call(rbind, 
         mapply(route, rte.from, rte.to, SIMPLIFY=FALSE, 
          MoreArgs=list(mode="walking",structure="legs"))) 


    map.centre<-c(mean(as.numeric(way.points$X2)),mean(as.numeric(way.points$X1))) 

    coords <- rbind(as.matrix(rte[,7:8]),as.matrix(rte[nrow(rte),9:10])) 
    coords <- as.data.frame(coords) 

    ggm <- qmap(location=map.centre,zoom = 15, maptype = "road", legend="topright") 

    ggm + 
    geom_path(data=coords,aes(x=startLon,y=startLat),color="blue",size=2)+ 
    geom_point(data=way.points,aes(x=as.numeric(X2),y=as.numeric(X1)), 
       size=10,color="yellow")+ 
    geom_text(data=way.points, 
       aes(x=as.numeric(X2),y=as.numeric(X1), label=seq_along(X1))) 

} 
+0

यह मानचित्र पर होने की जरूरत है? – hrbrmstr

उत्तर

8

यहां एक संभावना है। आप किंवदंती बनाने के लिए व्यवसाय नामों की व्यवस्था करना और geom_point का उपयोग करना चाह सकते हैं। इस geom_point में, आप alpha = 0 का उपयोग करते हैं। इसलिए, आप वास्तव में कोई अंक नहीं देखते हैं; आप पहले पीले अंक को पहले geom_point में निर्दिष्ट करते हैं। यहां, आपके डेटा को mydf कहा जाता है।

foo <- mutate(mydf, business.names = paste(seq_along(X1), business.names, sep = " ")) 

# business.names    X1    X2 
#1 1 Paul Jones  53.1912196  -2.8902453 
#2 2 John Roberts  53.1916771  -2.8846099 
#3 3 Bert Harris  53.1934748  -2.8814698 
#4  4 Bob Jones  53.193418   -2.881248 
#5 5 Mike Taylor  53.1894004  -2.8886692 
#6 6 Bill Harris  53.1884117   -2.88802 
#7 7 Morris Jones  53.186744   -2.890165 
#8 8 Sue Perkins  53.189836   -2.893896 
#9 9 Anne Jones  53.1902965  -2.8919373 
#10 10 Fred Morris 53.1905138631287 -2.89043889005541 

create.map<-function(lst){ 
require("ggmap") 
require("qmap") 
way.points <-data.frame(lapply(lst[,1:3], as.character), stringsAsFactors=FALSE) 
rte.from <- apply(way.points[-nrow(way.points),2:3],1,paste,collapse=",") 
rte.to <- apply(way.points[-1,2:3],1,paste,collapse=",") 
rte <- do.call(rbind, 
       mapply(route, rte.from, rte.to, SIMPLIFY=FALSE, 
         MoreArgs=list(mode="walking",structure="legs"))) 


map.centre<-c(mean(as.numeric(way.points$X2)),mean(as.numeric(way.points$X1))) 

coords <- rbind(as.matrix(rte[,7:8]),as.matrix(rte[nrow(rte),9:10])) 
coords <- as.data.frame(coords) 

ggm <- qmap(location=map.centre,zoom = 15, maptype = "road", legend="topright") 

ggm + 
geom_path(data=coords,aes(x=startLon,y=startLat),color="blue",size=2)+ 
geom_point(data=way.points,aes(x=as.numeric(X2),y=as.numeric(X1)), 
      size=10,color="yellow")+ 
geom_point(data=way.points,aes(x=as.numeric(X2),y=as.numeric(X1), 
      color = factor(business.names, levels=business.names)), alpha = 0) + 
geom_text(data=way.points, 
      aes(x=as.numeric(X2),y=as.numeric(X1), label=seq_along(X1))) + 
scale_color_discrete(name = "Business names") + 
theme(legend.key = element_rect(fill = NA)) 

} 

create.map(foo) 

enter image description here

+0

उत्कृष्ट जवाब। मैंने पथ के बिना एक सरल मानचित्र पर इसे लागू करने का प्रयास किया है, लेकिन इस त्रुटि से परे नहीं हो सकता: त्रुटि: अमान्य रंग विनिर्देश "1 लिंच"। समस्या इस पंक्ति में है, मेरा मानना ​​है: geom_point (डेटा = talent.loc, एईएस (एक्स = लांग, वाई = लैट), रंग = कारक (talent.loc $ वकील, स्तर = अद्वितीय (talent.loc $ वकील)) , अल्फा = 0)। आप कलर तर्क को रंग के रूप में कारक स्तर को कैसे स्वीकार करते हैं? – lawyeR

+0

@jazzurro आपको 'ggmap' में एक विशेषज्ञ होना चाहिए। (+1) – akrun

+0

@lawyeR आपकी टिप्पणी के लिए धन्यवाद। ऐसा लगता है कि आपकी रंग में 'रंग' 'एईएस 'के बाहर रहता है। क्या आप 'एएस' में 'रंग' जोड़ने की कोशिश करेंगे और देखेंगे कि क्या होता है? – jazzurro

संबंधित मुद्दे