R语言 使用tmap函数显示点的所有属性

mf98qq94  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(111)

enter image description here我正在尝试做一个闪亮的应用程序,显示周围的贝灵汉,华盛顿州的公共果树的位置。当用户点击一棵树的位置时,我希望他们能够看到给定树的所有属性,例如状态(已确认/未确认)和经纬度坐标。然而,当我创建一个交互式Map时,我只能看到我用来对点进行颜色编码的属性,在本例中是物种。物种是由tmap图例明显,我希望能够看到状态(确认/未确认)和纬度/经度坐标,当我点击一个点。
这是我使用rshiny创建一个简单的交互式Map应用程序的代码。我把必要的包裹装好了。

library(dplyr)
library(shiny)
library(leaflet)
library(tmap)
library(sf)

我创建了数据框。

dat <- data.frame(lat = c(48.7323,48.7308,
                          48.7301,48.7276,
                          48.7246,48.7323,
                          48.7211),
long = c(-122.4928,-122.4940,
         -122.4942,-122.4939,
         -122.4958,-122.4975,
         -122.4946),
 species = c("Apple", "Apple",
             "Pear", "Plum",
             "Fig", "Plum",
             "Pear"),
 status = c("Confirmed", "Unconfirmed", "Confirmed", "Confirmed", "Confimed", "Unconfirmed", "Confirmed"))
# created ui and server components 

ui <- fluidPage( mainPanel(
  tmapOutput(outputId = "tmapMap"),
)
)

server <- function(input, output, session) {
  output$tmapMap <- renderTmap({
# converted to spatial points df

dat2plot <- st_as_sf(dat2plot, coords = c("long","lat"), crs=st_crs("EPSG:4326"))
 
   # and plotted map 
    
map1 <- tm_shape(dat2plot) +
 tm_dots(col= "species", alpha=0.8,size = 0.1) +
 
  
tm_legend(show = TRUE) +
 tm_view(set.zoom.limits = c(14,16))
    map1

})
 

}

shinyApp(ui = ui, server = server)

所附图像是返回的内容。

0md85ypi

0md85ypi1#

这似乎是一个bug,因为只有通过col定义单一颜色时才有效。如果按如下所示调整相应的线,您将至少看到所有属性,但颜色编码不会显示:

# converted to spatial points df
dat2plot <- st_as_sf(dat, coords = c("long","lat"), crs = st_crs("EPSG:4326"), remove = FALSE) %>% 
   relocate(species, .before = lat)

# and plotted map 
map1 <- tm_shape(dat2plot) +
 tm_dots(col= "blue", alpha = 0.8, size = 0.1) +
 tm_legend(show = TRUE) +
 tm_view(set.zoom.limits = c(14,16))

map1

相关问题