| name | transbigdata-visualize |
| description | 使用 TransBigData 进行交通数据可视化。适用于点分布热力图、轨迹动画、OD流向图、底图加载、活动时空图等可视化任务。 |
TransBigData 可视化指南
安装
pip install transbigdata keplergl matplotlib geopandas
Kepler 交互式可视化
需要安装 KeplerGl: pip install keplergl
1. 点分布可视化 - visualization_data()
import transbigdata as tbd
map = tbd.visualization_data(
data,
col=['Lng', 'Lat'],
accuracy=500,
height=500,
maptype='point'
)
map
2. 轨迹可视化 - visualization_trip()
map = tbd.visualization_trip(
trajdata,
col=['Lng', 'Lat', 'VehicleNum', 'Time'],
height=500
)
3. OD 可视化 - visualization_od()
map = tbd.visualization_od(
oddata,
col=['slon', 'slat', 'elon', 'elat'],
accuracy=500,
mincount=0
)
Matplotlib 静态可视化
4. 加载底图 - plot_map()
import matplotlib.pyplot as plt
import transbigdata as tbd
bounds = [113.6, 22.4, 114.8, 22.9]
fig, ax = plt.subplots(1, 1, figsize=(12, 10))
tbd.plot_map(plt, bounds, zoom=12, style=4)
底图样式:
0-6: 不同风格的街道图
7-12: 卫星图/混合图
5. 添加指北针和比例尺 - plotscale()
tbd.plotscale(
ax,
bounds=bounds,
textsize=10,
compasssize=1,
accuracy=2000,
rect=[0.06, 0.03]
)
活动分析可视化
6. 活动时空图 - plot_activity()
绘制个体活动的时空分布。
tbd.plot_activity(
stay_data,
col=['stime', 'etime', 'group'],
figsize=(10, 5)
)
7. 置信椭圆 - ellipse_params() & ellipse_plot()
分析活动空间分布。
ellip_params = tbd.ellipse_params(
data,
col=['lon', 'lat'],
confidence=95,
epsg=None
)
tbd.ellipse_plot(ellip_params, ax, edgecolor='red', facecolor='none')
8. 熵值分析 - entropy() & entropy_rate()
h = tbd.entropy(data['location_sequence'])
hr = tbd.entropy_rate(data['location_sequence'])
完整示例
示例 1: 出租车热力图
import pandas as pd
import matplotlib.pyplot as plt
import geopandas as gpd
import transbigdata as tbd
data = pd.read_csv('taxi_gps.csv')
bounds = [113.75, 22.4, 114.62, 22.86]
params = tbd.area_to_params(bounds, accuracy=500)
data['LONCOL'], data['LATCOL'] = tbd.GPS_to_grid(
data['Lng'], data['Lat'], params
)
grid_count = data.groupby(['LONCOL', 'LATCOL']).size().reset_index(name='count')
grid_count['geometry'] = tbd.grid_to_polygon(
[grid_count['LONCOL'], grid_count['LATCOL']], params
)
gdf = gpd.GeoDataFrame(grid_count, geometry='geometry', crs='EPSG:4326')
fig, ax = plt.subplots(1, 1, figsize=(12, 10))
tbd.plot_map(plt, bounds, zoom=12, style=4)
gdf.plot(ax=ax, column='count', cmap='YlOrRd', alpha=0.7, legend=True)
tbd.plotscale(ax, bounds=bounds, textsize=10)
plt.title('出租车轨迹点密度 (500m栅格)')
plt.show()
示例 2: OD 流向图
import pandas as pd
import transbigdata as tbd
od_data = pd.read_csv('taxi_od.csv')
map = tbd.visualization_od(
od_data,
col=['slon', 'slat', 'elon', 'elat'],
accuracy=1000,
mincount=5
)
map
使用建议
- 底图缓存: 首次使用
plot_map 会下载底图,建议设置 set_imgsavepath()
- Mapbox Token: 获取更高质量底图需注册 Mapbox 并设置 token
- 聚合精度: 可视化时聚合精度通常设为 500m 或 1km
- Kepler 可视化: 在 Jupyter 中效果最佳,支持交互式操作
参考文档