2015-09-02 10 views
5

त्वरित प्रश्न सभी। मेरे पास SQL ​​सर्वर में कुछ डेटा है जिसे मैंने RStudio में लोड किया है। मैंने डेटा के लिए एक बरचार्ट बनाया है और अब मैं मानचित्र पर एक बिंदु प्लॉट करने के लिए अक्षांश और देशांतर के उपयोग के साथ पुस्तिका पुस्तिका का उपयोग कर रहा हूं। जब उपयोगकर्ता बिंदु पर क्लिक करता है तो मैं इसमें एक बरचार्ट दिखाने के लिए पॉपअप का उपयोग करने में सक्षम होना चाहता हूं।पुस्तिका पुस्तिका लाइब्रेरी का उपयोग कर पॉपअप में ब्रैचर्ट प्लॉटिंग

बारचर्ट कोड (शायद यह एक समस्या है क्योंकि मैं googleVis लाइब्रेरी का उपयोग कर रहा हूं, इसलिए सुनिश्चित नहीं है कि मैं पॉपअप में इसका उपयोग कर सकता हूं। लेकिन फिर यह सबसे उपयुक्त बार ग्राफ है जिसे मैं कर सकता हूं और ज़रूरत है- अन्य सुझाव सहायक हो सकते हैं के रूप में मैं ग्राफ साजिश के लिए आर पुस्तकालयों में एक पेशेवर नहीं हूँ अभी तक)

Switzerland <- sqlQuery(con, "sql query") 
SwitzerlandChart <- gvisBarChart(Switzerland, options = list(height=200)) 

कोड है:

m <- leaflet() %>% 
    addTiles() %>% # Add default OpenStreetMap map tiles 
    addCircles(lng=8.498868, lat=46.9221, popup=paste(plot(SwitzerlandChart))) 

यह मेरी barplot देखने पर एक वेबपेज खुल जाता है जब मैं इस कोड को चलाते हैं।

m #Prints the graph 

यह इच्छित स्थान में बिंदु के साथ ग्राफ प्रिंट लेकिन पॉपअप मुझे एक वेबपेज के बजाय पता चलता भी केवल मैं खोल सकते हैं जो: तो मैं निम्नलिखित चलाते हैं।

मैं पॉपअप के अंदर बार्ग्राफ प्लॉट करने में सक्षम होना चाहता हूं।

आशा किसी को देर से मदद कर सकते हैं

+0

नमूना डेटा प्रदान करें। – vck

+0

मेरा चयन कथन है: अलग-अलग क्षेत्र + ',' + शहर के रूप में शहर, गिनती (देश) के रूप में गिनती करें (काउंटीवीस] डाटाबेस से देश = 'स्विट्जरलैंड' समूह, देश, शहर द्वारा समूह चुनें। डेटा है: स्थान- जिनेवा, ज़्यूरिख; CountVis- 1, 15 (यही वह है जिसे मैं बरचार्ट के साथ साजिश करता हूं। –

उत्तर

6

हो सकता है कि एक छोटे से, लेकिन यहाँ एक समाधान है। library(leaflet) में फ़ंक्शन .svg फ़ाइलों को संभालने में सक्षम प्रतीत होता है। इसलिए, आप svg() का उपयोग करके बस अपनी साजिश को बचा सकते हैं और फिर इसे readLines() का उपयोग करके फिर से पढ़ सकते हैं। यहाँ एक प्रतिलिपि प्रस्तुत करने योग्य library(mapview) का उपयोग कर उदाहरण है:

library(lattice) 
library(mapview) 
library(sp) 

data(meuse) 
coordinates(meuse) <- ~x+y 
proj4string(meuse) <- CRS("+init=epsg:28992") 

clr <- rep("grey", length(meuse)) 

fldr <- tempfile() 
dir.create(fldr) 

pop <- lapply(seq(length(meuse)), function(i) { 

    clr[i] <- "red" 
    p <- xyplot(meuse$cadmium ~ meuse$copper, 
       col = clr, pch = 20, alpha = 0.7) 

    svg(filename = paste(fldr, "test.svg", sep = "/"), 
     width = 250 * 0.01334, height = 250 * 0.01334) 
    print(p) 
    dev.off() 

    tst <- paste(readLines(paste(fldr, "test.svg", sep = "/")), collapse = "") 

    return(tst) 

}) 

mapview(meuse, popup = pop, cex = "cadmium") 

आपको लगता है कि प्रत्येक पॉपअप एक scatterplot है देखेंगे। एक leaflet उदाहरण के लिए, इस पर विचार करें:

content <- pop[[1]] 
leaflet() %>% addTiles() %>% 
    addPopups(-122.327298, 47.597131, content, 
      options = popupOptions(closeButton = FALSE) 
) 

मामले में आप भूखंड की जरूरत है इंटरैक्टिव होने के लिए आपको library(gridSVG) पर एक नज़र जो उदा से इंटरैक्टिव svg भूखंडों का उत्पादन करने में सक्षम है हो सकता था lattice या ggplot2 भूखंड।

अद्यतन:

library(mapview) इस के लिए अब नामित किया है कार्यक्षमता:

  • popupGraph: जाली, ggplot2 या इंटरैक्टिव hatmlwidgets आधारित भूखंडों एम्बेड करने के लिए।
  • popupImage: स्थानीय या दूरदराज के (वेब) छवियों

यह वर्तमान में है जिसके साथ स्थापित किया जा सकता MapView के विकास संस्करण में ही उपलब्ध है एम्बेड करने के लिए:

devtools::install_github("environmentalinformatics-marburg/mapview", ref = "develop" 
+0

क्या पॉपअपग्राफ और पॉपअपटेबल को गठबंधन करना संभव है? उदाहरण के लिए: मैप्यूव्यू (मेयूज, पॉपअप = पॉपअपग्राफ (पी, टाइप = "एसवीजी", चौड़ाई = 3, ऊंचाई = 2.5), पॉपअप = पॉपअपटेबल (meuse, z = "cadmium")) काम नहीं करता है। मैं तालिका के ऊपर एक छवि जोड़ना चाहता हूं। – MLavoie

+0

नहीं, ** मैपव्यू में वर्तमान में उपलब्ध किसी भी फ़ंक्शन के साथ यह संभव नहीं है * * मुझे लगता है कि यह संभव हो सकता है। मूल रूप से, किसी को 'पॉपअप *' कार्यों से दो एचटीएमएल स्ट्रिंग को गठबंधन करने की आवश्यकता होगी। – TimSalabim

+0

@MLavoie बाहर निकलता है आप उन्हें एक साथ पेस्ट कर सकते हैं 'लाइब्रेरी (मैपव्यू) लाइब्रेरी (जाली) poptab = popupTable (breweries [1,]) popgrph = popupGraph (ग्राफ = जाली :: xyplot (1:10 ~ 10: 1)) tst = पेस्ट (popgrph [[1]], poptab [[1]]) मानचित्रदृश्य (ब्रूवरीज [1,], पॉपअप = tst) ' – TimSalabim

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