【问题标题】:R- how to paste multiple column of same variable in popup (leaflet)R-如何在弹出窗口(传单)中粘贴多列相同变量
【发布时间】:2015-09-11 12:14:46
【问题描述】:

我有一个包含 4 行和几列的数据集,它们是国家、位置、命中、纬度、经度。 可重现的是:

structure(list(country = c("France", "France", "France", "France")
, location("Ile-de-France, Paris", "Ile-de-France, Villebon-sur-yvette", "Nord-Pas-de-Calais, Hérin", "Nord-Pas-de-Calais, Lille")
, Hits(1, 1, 3, 5)
, lat = c(46.227638, 46.227638, 46.227638, 46.227638)
, Ion = c(-2.213749, 2.213749, 2.213749, 2.213749)
)
, .Names = c("country", "location", "Hits", "lat", "Ion")
, class = "data.frame")

我想在弹出窗口中使用它,并将所有位置和点击显示为 4 行。

我当前使用的代码是:

m <- leaflet() %>%
  addTiles() %>%  # Add default OpenStreetMap map tiles
  addCircles(lng=area$longitude, lat=area$latitude, popup=paste("Country:", area$Country, "<br>"
                                                            , "Location:", area$Location, "-", area$Hits, "<br>"))

如果您有任何问题,请随时提出。

【问题讨论】:

  • 您遇到了什么具体问题?你有什么问题?
  • 网页链接上的输出如下。 fsaiyed.files.wordpress.com/2015/06/capture1.png 我希望能够有 4 个位置的命中而不是重复相同的位置
  • 如果您有足够的声望点,请在您的问题中发布图片。网络链接有消失的趋势。
  • 抱歉不知道我是否有足够的积分,但看起来我有。

标签: r leaflet rstudio


【解决方案1】:

您的示例中有一些错误。 试试这个

library(leaflet)
area <- data.frame(country = c("France", "France", "France", "France")
           , location= c("Ile-de-France, Paris", "Ile-de-France, Villebon-sur-yvette", "Nord-Pas-de-Calais, Hérin", "Nord-Pas-de-Calais, Lille")
           , Hits= c(1, 1, 3, 5)
           , lat = c(46.234638, 46.456638, 46.288638, 46.900638)
           , lon = c(2.313749, 2.413749, 2.513749, 2.613749)
)


m <- leaflet() %>%
addTiles() %>%  # Add default OpenStreetMap map tiles
addCircles(lng=area$lon, lat=area$lat, 
popup=paste("Country:", area$country, "<br>", "Location:", area$location, "-", area$Hits, "<br>"))

您的示例的主要问题在于提供的坐标。您为这四个点分配了相同的坐标。这将导致仅显示最后一个点。

【讨论】:

    【解决方案2】:

    如果您想绘制同一点的多个版本,您必须调整坐标以使它们不完全相同,或者重新调整您的数据,以便每个附加信息都是数据集中的一列。我称之为“抖动”,并有一个功能可以在下面进行。它提供了轻微的偏移,但不会太远。

    我使用下面的代码给经纬度添加白噪声,使它们接近,但不重叠。

    这将解决您的经度和纬度值重复的问题。另一个用例是,如果您的数据采用邮政编码分辨率,并且您有邮政编码质心的坐标,那么邮政编码内的所有位置将被绘制在彼此之上,您只会看到最后一个。

    # Add Jittering to the Zips so that they don't stack
    l <- nrow(last)
    jitterFactor <- function(l){
      jF <- runif(l, min = -1, max = 1)
      jF <- jF/100
    
      return(jF)
    }
    
    # use randomness so that 0's don't overlap
    last$JitterLat <- jitterFactor(l)
    last$JitterLon <- jitterFactor(l)
    
    # apply the jitter
    last$Lat <- last$latitude + last$JitterLat
    last$Lon <- last$longitude + last$JitterLon
    

    在下面的地图中,三个绿色圆圈都是同一个位置,但代表不同月份的数据。抖动功能将它们分散了一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-22
      • 2018-12-21
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      相关资源
      最近更新 更多