R 使用传单库在弹出窗口中绘制条形图

R 使用传单库在弹出窗口中绘制条形图,r,leaflet,rstudio,googlevis,R,Leaflet,Rstudio,Googlevis,快问所有人。 我在sql server中有一些数据,已加载到RStudio中。我已经为数据制作了一个柱状图,现在我正在使用传单库,使用纬度和经度在地图上绘制一个点。我想能够使用弹出窗口显示一个条形图,当用户点击该点 条形图代码可能这是一个问题,因为我正在使用googleVis库,所以不确定是否可以在弹出窗口中使用它。但这也是我能做的最合适的条形图,我需要它——其他建议可能会有所帮助,因为我还不是R库的专业人士 Switzerland <- sqlQuery(con, "sql query"

快问所有人。 我在sql server中有一些数据,已加载到RStudio中。我已经为数据制作了一个柱状图,现在我正在使用传单库,使用纬度和经度在地图上绘制一个点。我想能够使用弹出窗口显示一个条形图,当用户点击该点

条形图代码可能这是一个问题,因为我正在使用googleVis库,所以不确定是否可以在弹出窗口中使用它。但这也是我能做的最合适的条形图,我需要它——其他建议可能会有所帮助,因为我还不是R库的专业人士

Switzerland <- sqlQuery(con, "sql query")
SwitzerlandChart <- gvisBarChart(Switzerland, options = list(height=200))
这会打印图形,其中的点位于所需位置,但弹出窗口会显示一个网页,该网页也只有我可以打开

我想能够在弹出窗口内绘制条形图


希望有人能帮忙

也许会晚一点,但这里有一个解决办法。libraryleaflet中的addPopups函数似乎能够处理.svg文件。因此,您可以简单地使用svg保存绘图,然后使用readLines再次读取。下面是一个使用librarymapview的可复制示例:

如果您需要绘图是交互式的,您可以看看librarygridSVG,它能够从lattice或ggplot2绘图生成交互式svg绘图

更新:

librarymapview现在已为此指定了功能:

popupGraph:嵌入基于lattice、ggplot2或交互式hatmlwidgets的绘图。 popupImage:嵌入本地或远程web映像 这目前仅在mapview的开发版本中可用,该版本可与以下软件一起安装:

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

这可能有点晚了,但这里有一个完整的传单实施。我首先创建绘图,然后使用popupGraph函数将其添加进去

# make a plot of the two columns in the dataset
p <- xyplot(Home ~ Auto, data = Jun, col = "orange", pch = 20, cex = 2)

# make one for each data point
p <- mget(rep("p", length(Jun)))

# color code it so that the corresponding points are dark green
clr <- rep("orange", length(Jun))
p <- lapply(1:length(p), function(i) {
  clr[i] <- "dark green"
  update(p[[i]], col = clr)
})


# now make the leaflet map
m1 <- leaflet() %>%
  addTiles() %>%
  setView(lng = -72, lat = 41, zoom = 8) %>%


  # add the markers for the Jun dataset
  # use the popupGraph function
  addCircleMarkers(data = Jun, lat = ~Lat, lng = ~Lon,
                   color = ~beatCol(BeatHomeLvl), popup = popupGraph(p),
                   radius = ~sqrt(BeatHome*50), group = 'Home - Jun') %>%


  # layer control
  addLayersControl(
    overlayGroups = c('Home - Jun'
    ),
    options = layersControlOptions(collapsed = F)
  ) %>%



  # legend for compare to average

  addLegend('bottomright', pal = beatCol, values = last$BeatTotalLvl,
            title = 'Compare<br>Quote Count to<br>3Mos State Avg',
            opacity = 1)

m1
这是输出。

请提供样本数据。我的选择声明是:从数据库中选择不同的地区+,,+城市作为位置,CountCountCountCountCountry作为[CountVis],其中国家=‘瑞士’按国家、地区分组,城市数据为:地点:苏黎世日内瓦;CountVis-1,15这是我绘制条形图的工具。可以将popupGraph和popupTable结合起来吗?例如:mapviewmeuse,popup=popupGraphp,type=svg,width=3,height=2.5,popup=popupTablemeuse,z=CD不起作用。我想在表上方添加一个图像。不,这在mapview中的任何当前可用函数中都是不可能的。但我认为这是可能的。基本上,我们需要将popup*函数中的两个html字符串组合起来。@MLavoie发现您可以将它们粘贴在一起librarymapview librarylattice Poptable Breweries[1,]popgrph=PopupGraphGraphGraphs=lattice::xyplot1:10~10:1 tst=pastepopgrph[[1]],poptab[[1]]mapviewbreweries[1,],popup=tst我尝试使用mapview::popupGraph,结果显示它现在已被弃用。传单上并没有弹出图。上面提供的第一个例子导致R崩溃。它在plot(绘图)窗口中显示了一段时间,看起来它可能正在工作,但CPU的运行有点紧张,几秒钟后R关闭Down您也可以在ggplot中绘制绘图并添加它们:p当我运行lappy命令时,我在update.defaultp[[I]]中得到:Error(错误),col=clr:需要一个带有调用组件的对象。你知道为什么吗?@Ben你需要确保你已经安装了sp、lattice和map view库。我尝试使用mapview::popupGraph,结果显示它现在已被弃用。传单上并没有弹出图,这是一个警告,但你们需要阅读它。该警告指示使用'leafpop::popupGraph,因此您需要安装leafpop软件包。
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")
content <- pop[[1]]
leaflet() %>% addTiles() %>%
  addPopups(-122.327298, 47.597131, content,
            options = popupOptions(closeButton = FALSE)
  )
devtools::install_github("environmentalinformatics-marburg/mapview", ref = "develop"
# make a plot of the two columns in the dataset
p <- xyplot(Home ~ Auto, data = Jun, col = "orange", pch = 20, cex = 2)

# make one for each data point
p <- mget(rep("p", length(Jun)))

# color code it so that the corresponding points are dark green
clr <- rep("orange", length(Jun))
p <- lapply(1:length(p), function(i) {
  clr[i] <- "dark green"
  update(p[[i]], col = clr)
})


# now make the leaflet map
m1 <- leaflet() %>%
  addTiles() %>%
  setView(lng = -72, lat = 41, zoom = 8) %>%


  # add the markers for the Jun dataset
  # use the popupGraph function
  addCircleMarkers(data = Jun, lat = ~Lat, lng = ~Lon,
                   color = ~beatCol(BeatHomeLvl), popup = popupGraph(p),
                   radius = ~sqrt(BeatHome*50), group = 'Home - Jun') %>%


  # layer control
  addLayersControl(
    overlayGroups = c('Home - Jun'
    ),
    options = layersControlOptions(collapsed = F)
  ) %>%



  # legend for compare to average

  addLegend('bottomright', pal = beatCol, values = last$BeatTotalLvl,
            title = 'Compare<br>Quote Count to<br>3Mos State Avg',
            opacity = 1)

m1