gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:49:04 24 4
gpt4 key购买 nike

快速提问。
我在已加载到RStudio的sql服务器中有一些数据。我已经为数据制作了一个图表,现​​在我正在使用传单库,并使用纬度和经度在 map 上绘制点。我希望能够在用户单击该点时使用弹出窗口在其中显示条形图。

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

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

这将在所需位置打印该点的图形,但弹出窗口会显示给我一个网页,该网页也只有我可以打开。

我希望能够在弹出窗口中绘制条形图。

希望有人能帮忙

最佳答案

也许有点晚了,但这是一个解决方案。 addPopups()中的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")

您将看到每个弹出窗口都是一个散点图。对于 leaflet示例,请考虑以下事项:
content <- pop[[1]]
leaflet() %>% addTiles() %>%
addPopups(-122.327298, 47.597131, content,
options = popupOptions(closeButton = FALSE)
)

如果您需要绘图是交互式的,则可以看看 library(gridSVG),它可以从例如svg中生成交互式svg绘图。 latticeggplot2图。

更新:
library(mapview)现在具有为此指定的功能:
  • popupGraph:嵌入点阵 ggplot2 或交互式 hatmlwidgets基于的图。
  • popupImage:嵌入本地或远程(网络)图像

  • 当前仅在 mapview 的开发版本中可用,该版本可以安装:
    devtools::install_github("environmentalinformatics-marburg/mapview", ref = "develop"

    关于r - 使用传单库在弹出窗口中绘制条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32352539/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com