【问题标题】:Adding mini radar plots as markers on leaflet map在传单地图上添加迷你雷达图作为标记
【发布时间】:2021-01-28 11:12:28
【问题描述】:

我有以下 5 个不同地点的天气状况数据集,在一年中每隔 15 分钟观察一次,我正在基于它开发一个闪亮的应用程序。

site_id date_time           latitude longitude ambient_air_tem~ relative_humidy barometric_pres~ average_wind_sp~ particulate_den~
   <chr>   <dttm>                 <dbl>     <dbl>            <dbl>           <dbl>            <dbl>            <dbl>            <dbl>
 1 arc1046 2019-11-15 09:15:00    -37.8      145.             14.4            65.4            1007.             7.45              3.9
 2 arc1048 2019-11-15 09:15:00    -37.8      145.             14.0            65.5            1006.             6.95              4.4
 3 arc1045 2019-11-15 09:15:00    -37.8      145.             14.8            60              1007.             4.93              3.9
 4 arc1047 2019-11-15 09:15:00    -37.8      145.             14.4            66.1            1008.             7.85              4.5
 5 arc1050 2019-11-15 09:15:00    -37.8      145.             14.1            64.7            1007.             5.8               3.9
 6 arc1045 2019-11-15 09:30:00    -37.8      145.             15.4            57.1            1007.             4.43              3.8
 7 arc1046 2019-11-15 09:30:00    -37.8      145.             14.8            63.2            1007.             7.6               4.5
 8 arc1047 2019-11-15 09:30:00    -37.8      145.             15.2            62.7            1008              7.13              3.6
 9 arc1048 2019-11-15 09:30:00    -37.8      145.             14.6            62.2            1007.             7.09              4.7
10 arc1050 2019-11-15 09:30:00    -37.8      145.             14.6            62.5            1007              5.94              3.5

我使用传单映射了 5 个站点。

leaflet(quarter_hour_readings) %>%
      addTiles() %>%
      addCircleMarkers(
        layerId = ~site_id,
        label = ~site_id)

现在想要在选择单个日期时在地图上的每个标记上包含径向(蜘蛛)图。现在我已经过滤掉了单个日期的数据值,用于以下径向图。

library(fmsb)

dat <- rbind(c(85.00,100.00,2000.00,160.00,999.9,1999.9),
      c(-40.00,0.00,10.00,0.00,0.00,0.00),
      quarter_hour_readings %>%
        filter(date_time == as.POSIXct("2019-11-15 09:15:00",tz="UTC")) %>%
        column_to_rownames(var="site_id") %>%
        select(c("ambient_air_temperature","relative_humidy","barometric_pressure", "average_wind_speed", "particulate_density_2.5", "particulate_density_10")))
  
radarchart(dat)

但是我不确定如何在地图上的各个标记上包含这些raidal 图,以及是否有更简单的方法来处理这个问题。虽然我发现这个包可以在传单地图上插入迷你图表,但我无法找到如何在地图上添加雷达图。

【问题讨论】:

    标签: r shiny leaflet radar-chart


    【解决方案1】:

    注意。由于您没有提供可重现的数据集,我采取了一些假数据。

    您可以按照here描述的方法:

    m <- leaflet() %>% addTiles()
    
    rand_lng <- function(n = 5) rnorm(n, -93.65, .01)
    rand_lat <- function(n = 5) rnorm(n, 42.0285, .01)
    
    rdr_dat <- structure(list(total = c(5, 1, 2.15031008049846, 4.15322054177523, 
                                        2.6359076872468), 
                              phys = c(15, 3, 12.3804132539814, 6.6208886719424, 
                                       12.4789917719968), 
                              psycho = c(3, 0, 0.5, NA, 3), 
                              social = c(5, 1, 2.82645894121379, 
                                         4.82733338139951, 2.81333662476391), 
                              env = c(5, 1, 5, 2.5, 4)), 
                         row.names = c(NA, -5L), class = "data.frame")
    
    makePlotURI <- function(expr, width, height, ...) {
       pngFile <- plotPNG(function() { expr }, width = width, height = height, ...)
       on.exit(unlink(pngFile))
       base64 <- httpuv::rawToBase64(readBin(pngFile, raw(1), file.size(pngFile)))
       paste0("data:image/png;base64,", base64)
    }
    
    set.seed(1)
    plots <- data.frame(lat = rand_lat(), 
                        lng = rand_lng(),
                        radar = rep(makePlotURI({radarchart(rdr_dat)}, 200, 200, bg = "white"), 5))
    
    m %>% addMarkers(icon = ~ icons(radar), data = plots)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 2020-10-28
      • 2014-09-22
      相关资源
      最近更新 更多