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