当鼠标悬停在等值线地图上时显示 GEOJson/Dataframe 信息

如何解决当鼠标悬停在等值线地图上时显示 GEOJson/Dataframe 信息

我正在编写交互式芝加哥地图,但我面临一个大问题。我想要的是在悬停区域时显示信息(来自 GeoJson 文件和数据框)的可能性。

这是相关的代码

folium.Choropleth(
    geo_data=CHI_geodata_url,name="choropleth",data=percan,columns=[percan.index,"TOTAL"],key_on='feature.properties.community',fill_color="YlOrRd",fill_opacity=0.7,line_opacity=0.2,legend_name="Crime Rate (%)",tooltip=folium.features.GeoJsonTooltip(fields=['feature.properties.community'],aliases=['Community:']),highlight=True,show=True,).add_to(CHI_map)

CHI_map

目前当我悬停时它不会显示任何内容,但我的目标是弹出一个显示社区名称和与鼠标所在区域相关的总数量

这里是json文件https://raw.githubusercontent.com/RandomFractals/ChicagoCrimes/master/data/chicago-community-areas.geojson

有人知道怎么做吗?我花了一个晚上试图寻找答案,但没有成功。

解决方法

所以我用这段代码找到了部分答案:

    choro.geojson.add_child(folium.features.GeoJsonTooltip(fields=['community'],aliases=['Community Name'],style=('background-color: white; color: black;')
    ))
    display(CHI_map)

但是,我只能显示包含在 geojson 文件中的信息。我现在正在寻找一种方法来显示更多关于悬停的信息,不仅包含在 json 文件中,而且还包含在数据框中:

我有两条线索:

  • 在geojson文件中写入我想要的数据
  • 找到同时显示pandas.Dataframe信息的方法

如果我找到答案,我会尝试更新评论,但如果有人阅读这篇文章知道怎么做,请随时提供帮助

更新:

多亏了这个链接https://towardsdatascience.com/using-folium-to-generate-choropleth-map-with-customised-tooltips-12e4cec42af2

,我找到了一种在geojson文件中添加我想要的信息的方法
      for f in range(len(percan)):
        tooltip_text.append(str(percan[crime_type][f])+' '+ '% of crimes')
        tooltip_text# Append a tooltip column with customised text
    i=0
    while i!= len(percan):
        for idx in range(len(percan)):
            if map_data['features'][idx]['properties']['community']==percan.index[i]:
                map_data['features'][idx]['properties']['tooltip1'] = tooltip_text[i]
            else:
                None
        i=i+1 

这里稍微解释一下:

      for f in range(len(percan)):
        tooltip_text.append(str(percan[crime_type][f])+' '+ '% of crimes')
        tooltip_text# Append a tooltip column with customised text

是创建一个包含我想要显示的东西的列表。

然后

  i=0
    while i!= len(percan):
        for idx in range(len(percan)):
            if map_data['features'][idx]['properties']['community']==percan.index[i]:
                map_data['features'][idx]['properties']['tooltip1'] = tooltip_text[i]
            else:
                None
        i=i+1 

遍历整个数据帧“percan”并确保该值与两个数据帧中的社区区域相匹配。 while 确保我们遍历所有数据框(即使我认为我可以使用 for),然后我们取数据框的第一行(i=1),在 geojson 文件(idx)中查找它的名称,然后一旦匹配,我们将 i 值放在 geojson 文件中的 idx 位置

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?