如何使用Folium在地图中绘制数据?Folium 是一个 python 包,它结合了 python 提供的所有工具,用于使用leaflet javascript 库来操作数据,以创建丰富的交互式地图。
和我的文章一样,我提供了一个 Google colab jupyter notebook,其中包含你可以在此处访问的所有代码和结果
。
创建基本地图Python Folium如何在地图上绘制数据?在我们开始构建任何东西之前,让我们安装一些我们将在整个教程中使用的库。你可以使用任何打包工具,我将提供 pipenv 和 pip prepending 的示例!
,以便它可以在像 Google colab 这样的 jupyter notebook 上运行。
pipenv install folium pandasOr!pip install folium pandas
安装好库后,创建地图就像 1 行代码一样简单:
import folium
folium.Map(location=[
48.130518, 11.5364172], zoom_start=12)
Python绘制地图数据示例 - 这将自动生成一个交互式地图 并将其输出到 jupyter notebook,在那里你将能够与其进行交互。该函数
Map
采用一些可选参数,在我们的例子中,我们发送位置(坐标)和默认缩放级别。如果一切顺利,你应该会看到这样的地图:
文章图片
folium
来自于将库的映射能力与 Python 的数据操作能力相结合,所以让我们开始做一些事情。添加标记我们可以添加到地图中的一项基本功能是能够标记地点以便轻松找到它们,或者突出显示重要信息。
这可以使用
Marker
from 函数轻松完成folium
,如下所示:m = folium.Map(location=[
48.218871184761596, 11.624819877497147], zoom_start=15)tooltip = "Click Here For More Info"marker = folium.Marker(
location=[
48.218871184761596, 11.624819877497147],
popup="<
stong>Allianz Arena<
/stong>",
tooltip=tooltip)
marker.add_to(m)m
与第一个示例类似,首先我们创建了一个地图对象,然后我们也创建了一个标记对象。该标记 物是通过将坐标点创建的,我们要显示在弹出时的标记和其他选项中的标记工具提示有人点击。
文章图片
标记的图表弹出窗口
如何使用Folium在地图中绘制数据?
Folium
为任何标记类型的可视化提供内置支持。可视化由库vincent 和altair启用 。Python绘制地图数据示例:为了渲染一些可视化,我们需要一些数据,所以让我们先得到它:
import jsonimport requestsurl = (
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
)
data = https://www.lsbin.com/json.loads(requests.get(f"{url}/vis1.json").text)
接下来,让我们在标记中绘制数据:
m = folium.Map(location=[
48.218871184761596, 11.624819877497147], zoom_start=15, tiles="Stamen Terrain")marker = folium.Marker(
location=[
48.218871184761596, 11.624819877497147],
popup=folium.Popup(max_width=450).add_child(
folium.Vega(data, width=450, height=250)
),
)marker.add_to(m)m
文章图片
自定义标记
Python Folium如何在地图上绘制数据?该
Marker
函数允许进行多种参数化,从更改预定义图标库中的标记图标、形状到使用 HTML 构建你自己的标记,在本文中,我们将看到这 3 个的示例,首先使用预定义的图标:m = folium.Map(location=[
48.218871184761596, 11.624819877497147], zoom_start=15)tooltip = "Click Here For More Info"marker = folium.Marker(
location=[
48.218871184761596, 11.624819877497147],
icon=folium.Icon(icon="cloud"),
popup="<
stong>Allianz Arena<
/stong>",
tooltip=tooltip)
marker.add_to(m)m
文章图片
图标来自引导程序库,但你也可以使用很棒的字体。
接下来让我们使用形状,如圆形来构建我们的标记:
m = folium.Map(location=[
48.218871184761596, 11.624819877497147], zoom_start=15)tooltip = "Click Here For More Info"marker = folium.CircleMarker(
location=[
48.218871184761596, 11.624819877497147],
radius=50,
popup="<
stong>Allianz Arena<
/stong>",
tooltip=tooltip)
marker.add_to(m)m
文章图片
m = folium.Map(location=[
48.218871184761596, 11.624819877497147], zoom_start=15)tooltip = "Click Here For More Info"marker = folium.Marker(
location=[
48.218871184761596, 11.624819877497147],
popup="<
stong>Allianz Arena<
/stong>",
icon=folium.DivIcon(html=f"""
<
div style="color:#f00;
background:#fff;
width:60px;
text-align:center;
">MARKER<
/div>
"""),
tooltip=tooltip)
marker.add_to(m)m
文章图片
等值线地图如何使用Folium在地图中绘制数据?Choropleth 地图是流行的专题地图,用于通过预定地理区域(即国家或州)上的各种阴影模式或符号来表示统计数据。他们擅长利用数据来轻松表示跨区域所需测量的可变性。
为了创建等值线图,我们需要使用两种类型的数据,我们想要表示的阴影或颜色的统计数据,以及地理空间数据。
Python绘制地图数据示例:在我们的示例中,我们将使用美国各州来定义地区,以及美国失业统计数据(非真实数据)。
让我们从绘制地理区域开始,即美国各州:
data_url = (
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
)
us_states_url = f"{data_url}/us-states.json"m = folium.Map([
43, -100], zoom_start=4)folium.GeoJson(us_states_url).add_to(m)m
文章图片
首先,让我们看看数据是什么样的:
import pandas as pdus_unemployment_url = f"{data_url}/US_Unemployment_Oct2012.csv"
unemployment = pd.read_csv(us_unemployment_url)unemployment.head()
state | 失业 | |
---|---|---|
0 | AL | 7.1 |
1 | AK | 6.8 |
2 | AZ | 8.1 |
3 | AR | 7.2 |
4 | CA | 10.1 |
有了这个,我们可以开始给我们的地图着色:
m = folium.Map(location=[
48, -102], zoom_start=3)folium.Choropleth(
geo_data=https://www.lsbin.com/us_states,
name='choropleth',
data=https://www.lsbin.com/unemployment,
columns=['State', 'Unemployment'],
key_on='feature.id',
fill_color='YlGn',
fill_opacity=0.7,
line_opacity=0.2,
legend_name='Unemployment Rate %'
).add_to(m)m
文章图片
热图Python Folium如何在地图上绘制数据?热图是另一种流行的地图选择,它们可用于多种用途,包括天气状况、污染、人口密度等。
他们是非常强大的工具和的帮助下
pandas
和folium
超级容易建立。让我们以芝加哥市的自行车站为例。我在网上找到了一个有趣的数据集,其中包含带有坐标的自行车站,我们将用它来构建热图。让我们加载数据:
stations_url = 'https://gbfs.divvybikes.com/gbfs/en/station_information.json'stations = json.loads(requests.get(stations_url).text)[
'data'][
'stations']
stations = pd.json_normalize(stations)
stations = stations[
[
'lat', 'lon']]stations.head()
编号 | lat | lon |
---|---|---|
0 | 41.876511 | -87.620548 |
1 | 41.867226 | -87.615355 |
2 | 41.856268 | -87.613348 |
3 | 41.874053 | -87.627716 |
4 | 41.886976 | -87.612813 |
Python绘制地图数据示例:接下来,我们将构建一个热图来突出城市中自行车站较为集中的区域。
from folium import pluginsm = folium.Map([
41.8781, -87.6298], zoom_start=11)# convert to (n, 2) nd-array format for heatmap
stationArr = stations.values# plot heatmap
m.add_child(plugins.HeatMap(stationArr, radius=15))
m
文章图片
folium
传递一个矩阵,其中包含每个站点的纬度和经度以及半径。地图图块如何使用Folium在地图中绘制数据?最后,在结束之前,我想强调
folium
地图图块的另一个功能。到目前为止,我们使用了一种类型的地图渲染,但是我们可以使用许多选项,每个选项都会使地图看起来不同。让我们看一些例子:
m = folium.Map(location=[
30.4407159,-66.6017203], zoom_start=3)
folium.TileLayer('stamenterrain').add_to(m)
m
文章图片
m = folium.Map(location=[
30.4407159,-66.6017203], zoom_start=3)
folium.TileLayer('stamentoner').add_to(m)
m
文章图片
layerControl
m = folium.Map(location=[
30.4407159,-66.6017203], zoom_start=4)# Add tiles
folium.TileLayer('stamentoner').add_to(m)
folium.TileLayer('stamenwatercolor').add_to(m)
folium.TileLayer('cartodbpositron').add_to(m)
folium.TileLayer('openstreetmap').add_to(m)# Add the option to switch tiles
folium.LayerControl().add_to(m)m
文章图片
Python绘制地图数据示例结论写这篇文章超级有趣!
Folium
提供了大量的配置选项,大量的机会来构建伟大的地图,我肯定会继续玩它来制作一些有趣的东西。在研究这个主题时,我遇到了一些问题,因为文档不是很好,但是,在他们的github 页面上 ,他们提供了很好的示例,你可以运行并查看如何实现我们今天学到的一些东西。我强烈建议通过它们。
【如何使用Python和Folium在地图上绘制数据()】谢谢阅读!
推荐阅读
- 如何使用Axios发送HTTP请求(详细分步指南)
- Keras用法教程(深入学习深度学习)
- CSS垂直居中内容的所有方法(如何垂直居中())
- AMD+Intel究竟是啥?
- 运用Vmware14虚拟机安装黑苹果MAC OS10.13的办法
- 详解2017最新笔记本处理器排行榜
- 升级固态硬盘是sata的好还是m.2好呢?
- 电脑黑屏:绝对有效果的电脑黑屏处理办法
- 10nm旗舰处理器哪个好?