热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

folium地图可视化组件如何在python项目中使用

folium地图可视化组件如何在python项目中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的

folium地图可视化组件如何在python项目中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

folium是python的一个用来绘制地图,并在地图上打点,画圈,做颜色标记的工具类。简单易学,和pandas可以很好的融合,是居家必备良品。

一 基本功能演示

import folium
import webbrowser
m=folium.Map(location=[40.009867,116.485994],zoom_start=10) # 绘制地图,确定聚焦点
folium.Marker([40.2,116.7],popup='浮标上面的那个文字').add_to(m) # 定一个点,放到地图m上
folium.Marker([40.22,116.72],popup='浮标上面的那个文字',icon=folium.Icon(color='red')).add_to(m)
# 把浮标变成红色
folium.Marker([40.24,116.74],popup='浮标上面的那个文字',icon=folium.Icon(color='green',icon='info-sign')).add_to(m)
# 浮标改图样
#标记一个空心的圈
folium.Circle(
 location=[40.2,117.7],
 radius=10000,
 color='crimson',
 popup='popup',
 fill=False
).add_to(m)
#标记一个实心圆
folium.CircleMarker(
 location=[39.2,117.7],
 radius=100,
 popup='popup',
 color='#DC143C',#圈的颜色
 fill=True,
 fill_color='#6495ED' #填充颜色
).add_to(m)
m.save('f1.html')
webbrowser.open('f1.html')

另外,folium还支持交互,比如鼠标点击的地方显示经纬度,或者直接在点击过的地方标记一个icon

import folium
import webbrowser as wb
# 地图上悬浮显示经纬度
m = folium.Map(
 location=[36.68159, 117.103565],
 zoom_start=10
)
m.add_child(folium.LatLngPopup())
# 手动打点功能
m.add_child(
 folium.ClickForMarker(popup='Waypoint')
)
m.save('f2.html')
wb.open('f2.html')

二 使用folium绘制散点图,热力图

热力图 ,现实中数据的量级不好控制,有时候用folium画出的热力图,效果往往不是太好。

import numpy as np
import pandas as pd
import seaborn as sns
import folium
import webbrowser
from folium.plugins import HeatMap
#导入数据集:
posi = pd.read_excel("D:/Python/File/Cities2015.xlsx")
posi = posi.dropna()
#生成所需要的数组格式数据:
lat = np.array(posi["lat"][0:len(posi)])
lon = np.array(posi["lon"][0:len(posi)])
pop = np.array(posi["pop"][0:len(posi)],dtype=float)
gdp = np.array(posi["GDP"][0:len(posi)],dtype=float)
data1 = [[lat[i],lon[i],pop[i]] for i in range(len(posi))]
#创建以高德地图为底图的密度图:
map_osm = folium.Map(
 location=[35,110],
 zoom_start=5,
 tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
 attr="© 高德地图"
 )
#创建以腾讯地图为底图的密度图:
map_osm = folium.Map(
 location=[35,110],
 zoom_start=5,
 tiles='http://rt{s}.map.gtimg.com/realtimerender?z={z}&x={x}&y={y}&type=vector&style=0',
 attr="© 腾讯地图"
 )
#生成交互式地图:
HeatMap(data1).add_to(map_osm)
file_path = r"D:/Python/Image/People.html"
map_osm.save(file_path)
webbrowser.open(file_path)

folium的散点图更适合作展示,考虑到加载的顺畅性,不建议读取太大的数据,另外其组件可能会读一些外网的js,如果所在的网络不能访问google可能效果无法展示。解决办法是把里面的js地址替换成国内的镜像。

import pandas as pd
import numpy as np
import os
import folium
from folium import plugins
import webbrowser
import geopandas as gp
#数据导入:
full = pd.read_excel("D:/Python/File/Cities2015.xlsx")
full = full.dropna()
#创建地图对象:
schools_map = folium.Map(location=[full['lat'].mean(), full['lon'].mean()], zoom_start=10)
marker_cluster = plugins.MarkerCluster().add_to(schools_map) 
#标注数据点:
for name,row in full.iterrows():
 folium.Marker([row["lat"], row["lon"]], popup="{0}:{1}".format(row["cities"], row["GDP"])).add_to(marker_cluster) 
#逐行读取经纬度,数值,并且打点
#folium.RegularPolygonMarker([row["lat"], row["lon"]], popup="{0}:{1}".format(row["cities"], row["GDP"]),number_of_sides=10,radius=5).add_to(marker_cluster)
schools_map.save('schools_map.html') #保存到本地
webbrowser.open('schools_map.html') #在浏览器中打开

除此之外folium还可以绘制填充图,填充图比较素颜,如下图

folium地图可视化组件如何在python项目中使用

这里有一些官方示例,感兴趣可以看下 :

https://nbviewer.jupyter.org/github/python-visualization/folium/tree/master/examples/

补充:Python遥感可视化 — folium模块展示热力图

“本节通过folium模块来绘制全国PM2.5热力分布图,并生成对应的html文件。”

今天的遥感之美—歌曲《欧若拉》中的阿拉斯加。阿拉斯加州位于北美大陆西北端,东与加拿大接壤,另三面环北冰洋、白令海和北太平洋。卫星俯瞰神秘北极圈,阿拉斯加的山巅,谁的脸出现海角的天边(盗用歌词捂脸)。

folium地图可视化组件如何在python项目中使用

哥伦比亚冰川位于美国阿拉斯加州,从海拔3,050米的冰原开始下降,沿着楚加奇山脉的侧翼下降,进入一个狭窄的入口,通往阿拉斯加东南部的威廉王子湾,它是世界上变化最快的冰川之一。科学家使用Landsat 4,5,7和8跟踪哥伦比亚冰川的变化已超过30年。哥伦比亚冰川是一个大型的潮水冰川,最终流入大海。

由Landsat系列卫星捕获的假彩色图像显示了自1986年以来冰川及其周围景观的变化。图像由以下传感器收集—专题制图仪(TM),增强型专题制图仪(ETM +)和陆地成像仪(OLI)—来自四种不同的Landsat卫星(4,5,7和8)。

Landsat图像结合了电磁波谱的短波红外,近红外和绿光波段。通过这种波长组合,雪和冰呈现明亮的青色,植被为绿色,云为白色或浅橙色,水体为深蓝色。暴露的基岩呈棕色,而冰川表面的岩石碎片呈灰色。

在过去三十年里,终点站向北退缩了20公里。在某些年份,终点站退缩了一公里以上,但速度不均匀。例如,终点站的运动在2000年至2006年之间停滞不前,因为大努纳塔克峰和卡丁峰(直接向西)限制了冰川的运动并将冰块固定。自20世纪80年代以来,冰川已经失去了其总厚度和体积的一半左右(译自Landsat官网)。

folium是Python中一个绘制地图的模块,并可以在地图(底图)上打点,画圈,做颜色标记的工具类。简单易学,和pandas可以很好的融合,是地图可视化的一款神器。

在命令行中直接在线安装即可,快速、简洁、方便、高效。

pip install folium

这个开源库中有许多来自OpenStreetMap、MapQuest Open、MapQuestOpen Aerial、Mapbox和Stamen的内建地图组件,而且支持使用Mapbox或Cloudmade的API密钥来定制个性化的地图组件。Folium支持GeoJSON和TopoJSON两种文件格式的叠加,也可以将数据连接到这两种文件格式的叠加层,最后可使用color-brewer配色方案创建分布图。

本节先来展示一下它的简单应用,主要以2018年1月全国1000多个PM2.5地面观测站点为例,将这些数据以热力图(heat map)的形式展现给大家,并生成相应的html文件。

代码实现:

# _*_ coding: utf-8 _*_
__author__ = 'xbr'
__date__ = '2019/1/9 15:47'
 
import numpy as np
import pandas as pd
import folium
import webbrowser
from folium.plugins import HeatMap
 
 
# 读取csv文件,以Dataframe形式保存
df = pd.read_csv(r"D:\data\PM25-20180101.csv")
# 获取数据个数
num = df.shape[0]
# 获取纬度
lat = np.array(df["lat"][0:num])
# 获取经度
lon = np.array(df["lon"][0:num])
# 获取PM2.5,转化为numpy浮点型
pm25 = np.array(df["PM25"][0:num], dtype=float)
# 将数据制作成[lats, lons, weights]的形式
data1 = [[lat[i], lon[i], pm25[i]] for i in range(num)]
# 绘制Map,中心经纬度[32, 120],开始缩放程度是5倍
map_osm = folium.Map(location=[32, 120], zoom_start=5)
# 将热力图添加到前面建立的map里
HeatMap(data1).add_to(map_osm)
 
file_path = r"D:\AirQualityMap.html"
# 保存为html文件
map_osm.save(file_path)
# 默认浏览器打开
webbrowser.open(file_path)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程笔记行业资讯频道,感谢您对编程笔记的支持。


推荐阅读
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了一个程序,可以输出1000内能被3整除且个位数为6的所有整数。程序使用了循环和条件判断语句来筛选符合条件的整数,并将其输出。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了使用Rust语言编写、保存和编译程序的简单步骤。首先,打开记事本文件并编写程序代码,然后将代码保存到一个以.rs为扩展名的文件中。接下来,使用rustc命令来编译运行程序。最后,通过命令行运行编译后的程序,得到输出结果。如果遇到编译错误,可以下载Build Tools for Visual Studio 2017来解决。 ... [详细]
  • 完成字符串和时间对象的转化(DateFormat)、(以及日历Calendar用法)
    DateFormat 和SimpleDateFormat示例(时间格式的书写)packagecn.date;importjava.text.DateFormat;importjav ... [详细]
author-avatar
qwer
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有