利用python画地图热力图
时间: 2025-01-18 21:56:55 浏览: 238
### 如何使用Python创建地理热力图
为了创建地理热力图,通常会结合`geopandas`用于处理地理空间数据以及`folium`或`plotly`这样的库来进行地图可视化。下面提供了一个基于这些工具的例子。
#### 安装必要的包
首先安装所需的软件包[^1]:
```bash
pip install geopandas folium plotly pandas
```
#### 准备地理数据并绘制基础的地图
加载地理边界文件(通常是Shapefile格式),这可以通过`geopandas.read_file()`完成;如果想要在全球范围内工作,则可以从自然地球(Natural Earth)下载合适的shapefiles。
接着初始化一张空白的世界地图作为底图,在此基础上叠加其他层如国家轮廓线等。
```python
import geopandas as gpd
import folium
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
m = folium.Map(location=[20, 0], zoom_start=2)
for _, country in world.iterrows():
geo_json_data = gpd.GeoSeries(country['geometry']).to_json()
folium.GeoJson(
data=geo_json_data,
style_function=lambda feature: {
'fillColor': '#ffff00',
'color': 'black',
'weight': 2,
'dashArray': '5, 5'
}
).add_to(m)
```
#### 创建带有热度的数据集
构建一个包含地理位置信息及其对应强度值的数据表。这里假设有一个CSV文件名为`heat_points.csv`,其中至少含有三列:经度(`lon`)、纬度(`lat`) 和权重 (`value`)。
读取该csv文件到pandas DataFrame中,并将其转换成GeoDataFrame以便后续操作。
```python
import pandas as pd
df_heat = pd.read_csv('heat_points.csv')
gdf_heat = gpd.GeoDataFrame(df_heat, geometry=gpd.points_from_xy(df_heat.lon, df_heat.lat))
```
#### 将热点添加至地图
利用Folium插件FastMarkerCluster或者Plotly Express中的scatter_mapbox函数来展示密集点分布情况下的聚集效果。对于更复杂的场景比如连续变化的颜色渐变,建议采用HeatmapWithTime类或其他高级特性支持的时间序列动画功能。
以下是通过`folium.plugins.HeatMap`实现静态热力图的方式:
```python
from folium.plugins import HeatMap
# 提取出经纬度坐标列表和对应的热度数值
heat_data = [[point.xy[1][0], point.xy[0][0]] for point in gdf_heat.geometry]
hm = HeatMap( heat_data )
hm.add_to(m)
m.save("heatmap.html") #保存为html文件查看
```
上述代码片段展示了如何使用Python创建基本的地理热力图。当然实际应用时可能还需要考虑更多细节配置项以满足特定需求[^2]。
阅读全文
相关推荐















