TransBigData 可视化指南
安装
bash
pip install transbigdata keplergl matplotlib geopandas
Kepler 交互式可视化
需要安装 KeplerGl: pip install keplergl
1. 点分布可视化 - visualization_data()
python
import transbigdata as tbd
map = tbd.visualization_data(
data,
col=['Lng', 'Lat'], # 或 ['Lng', 'Lat', 'count'] 带权重
accuracy=500, # 聚合精度
height=500, # 地图高度
maptype='point' # 'point' 或 'heatmap'
)
# 在 Jupyter 中显示
map
2. 轨迹可视化 - visualization_trip()
python
map = tbd.visualization_trip(
trajdata,
col=['Lng', 'Lat', 'VehicleNum', 'Time'],
height=500
)
3. OD 可视化 - visualization_od()
python
map = tbd.visualization_od(
oddata,
col=['slon', 'slat', 'elon', 'elat'], # 或加 'count'
accuracy=500, # OD 聚合精度
mincount=0 # 最小流量阈值
)
Matplotlib 静态可视化
4. 加载底图 - plot_map()
python
import matplotlib.pyplot as plt
import transbigdata as tbd
# 设置 Mapbox token(可选,获取更好的底图)
# tbd.set_mapboxtoken('your_token')
# tbd.set_imgsavepath('./map_cache/') # 缓存路径
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)
# style 选项: 0-12 或自定义 URL
底图样式:
- •
0-6: 不同风格的街道图 - •
7-12: 卫星图/混合图
5. 添加指北针和比例尺 - plotscale()
python
tbd.plotscale(
ax,
bounds=bounds,
textsize=10,
compasssize=1,
accuracy=2000, # 比例尺长度(米)
rect=[0.06, 0.03] # 位置
)
活动分析可视化
6. 活动时空图 - plot_activity()
绘制个体活动的时空分布。
python
tbd.plot_activity(
stay_data,
col=['stime', 'etime', 'group'], # 开始时间、结束时间、分组
figsize=(10, 5)
)
7. 置信椭圆 - ellipse_params() & ellipse_plot()
分析活动空间分布。
python
# 计算 95% 置信椭圆参数
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()
python
# 信息熵 h = tbd.entropy(data['location_sequence']) # 熵率 hr = tbd.entropy_rate(data['location_sequence'])
完整示例
示例 1: 出租车热力图
python
import pandas as pd
import matplotlib.pyplot as plt
import geopandas as gpd
import transbigdata as tbd
# 加载数据
data = pd.read_csv('taxi_gps.csv')
# 500米栅格聚合
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 流向图
python
import pandas as pd
import transbigdata as tbd
# 加载 OD 数据
od_data = pd.read_csv('taxi_od.csv')
# Kepler 可视化(Jupyter 环境)
map = tbd.visualization_od(
od_data,
col=['slon', 'slat', 'elon', 'elat'],
accuracy=1000, # 1公里聚合
mincount=5 # 至少5条 OD
)
map
使用建议
- •底图缓存: 首次使用
plot_map会下载底图,建议设置set_imgsavepath() - •Mapbox Token: 获取更高质量底图需注册 Mapbox 并设置 token
- •聚合精度: 可视化时聚合精度通常设为 500m 或 1km
- •Kepler 可视化: 在 Jupyter 中效果最佳,支持交互式操作