Crossin的编程教室

分享一个可渲染百万级数据的高效可视化工具

大家好,欢迎来到 Crossin的编程教室 !
今天给大家介绍一个Python数据可视化模块pydeck。pydeck是deck.gl的Python版本,基于deck.gl和知名的Mapbox GL。
pydeck支持GPU并行加速,可实现数百万数据点实时高效渲染,在交通流量、大规模空间轨迹分析等领域优势明显。
先来看几个实用案例:
Image

某一时刻,世界空中交通情况

Image

近距离展示月球表面的LROC WAC Mosaic

Image

hexagon

pydeck安装

pip安装

pip install pydeck

为Jupyter Notebook配置pydeck插件

jupyter nbextension install --sys-prefix --symlink --overwrite --py pydeck
jupyter nbextension enable --sys-prefix --py pydeck
Image

快速使用

  • 案例1,icon_layer使用 (德国啤酒花园的位置)在OpenStreetMap上列出德国啤酒花园的位置,截至2020 年初。
import pydeck as pdk
import pandas as pd

# pydeck数据集准备
DATA_URL = "https://raw.githubusercontent.com/ajduberstein/geo_datasets/master/biergartens.json"
ICON_URL = "https://upload.wikimedia.org/wikipedia/commons/c/c4/Projet_bi%C3%A8re_logo_v2.png"

icon_data = {
    "url": ICON_URL,
    "width": 242,
    "height": 242,
    "anchorY": 242,
}

data = pd.read_json(DATA_URL)
data["icon_data"] = None
for i in data.index:
    data["icon_data"][i] = icon_data

view_state = pdk.data_utils.compute_view(data[["lon", "lat"]], 0.1)

# pydeck可视化
icon_layer = pdk.Layer(
    type="IconLayer",
    data=data,
    get_icon="icon_data",
    get_size=4,
    size_scale=15,
    get_position=["lon", "lat"],
    pickable=True,
)

r = pdk.Deck(layers=[icon_layer],
             initial_view_state=view_state,
             tooltip={"text": "{tags}"})
# r.to_html("icon_layer.html") #可保存为html格式
r  # 直接Jupyter Notebook中渲染

Image

  • 案例2、hexagon_layer使用 (1979年以来,英国起发生人身伤害交通事故图)
import pydeck as pdk

# deck.gl中获取数据
UK_ACCIDENTS_DATA = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv'

# 自定义一个HexagonLayer
layer = pdk.Layer('HexagonLayer',
                  UK_ACCIDENTS_DATA,
                  get_position=['lng', 'lat'],
                  auto_highlight=True,
                  elevation_scale=50,
                  pickable=True,
                  elevation_range=[0, 3000],
                  extruded=True,
                  coverage=1)

# 设置viewport位置
view_state = pdk.ViewState(longitude=-1.415,
                           latitude=52.2323,
                           zoom=6,
                           min_zoom=5,
                           max_zoom=15,
                           pitch=40.5,
                           bearing=-27.36)

# 渲染
r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r

Imagepydeck也支持Arc、Grid、Contour、Polygon 等其他常见几何图形。

Image
Arc
Image
Grid
Image
Contour
Image
Paths
Image
more......

  • 进一步学习:
    https://github.com/visgl/deck.gl
    https://pydeck.gl/index.html#

作者:pythonic生物人

来源:pythonic生物人


Crossin的新书《码上行动:用ChatGPT学会Python编程》已经上市了。
Image
本书创新地以ChatGPT作为辅助学习工具,系统全面地讲解了零基础读者如何快速有效地学习Python编程技能。
书中包含Python语言基础、文件操作和爬虫等进阶内容,并讲解了ChatGPT的功能及在编程中的应用,包括如何利用它进行辅助开发和在程序中接入ChatGPT。
本书内容系统全面,案例丰富,讲解浅显易懂,适合Python零基础入门的读者学习。
读者朋友们购买后可在后台联系我,加入读者交流群,Crossin会为你开启陪读模式,解答你在阅读本书时的一切疑问。
 Crossin的其他书籍:

点此查看《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》介绍

点此查看《码上行动:零基础学会Python编程》介绍

感谢转发和点赞的各位~


_往期文章推荐_

千万不要一边遍历列表一边删除元素
0.1+0.2竟然不等于0.3?!

【教程】: python

【答疑】: 666

更多资源请在公众号内搜索或留言