如何使用时间滑块绘制地图并使用Python中的plotly缩放城市

2023-12-23

我想创建一个交互式地图,显示城市不同地点的变量(自行车数量)的演变。

为什么不通过使用情节。

我想做这样的事情:https://amaral.northwestern.edu/blog/step-step-how-plot-map-slider-represent-time-evolu https://amaral.northwestern.edu/blog/step-step-how-plot-map-slider-represent-time-evolu带滑块。

然而,我无法以一个城市为中心来重现它,我无法选择比“欧洲”更精确的范围。

你知道如何用变焦来做到这一点吗?


  • 您尚未提供任何代码或示例数据。因此使用了这个http://api.citybik.es/v2/ http://api.citybik.es/v2/ https://github.com/eskerda/pybikes https://github.com/eskerda/pybikes项目获取一些自行车数据
  • 数据只是最新的,因此在 a 中建立数据pickle进化档案
  • 简单的使用案例情节快报 and animation_frame争论

数据源

import requests
import pandas as pd
from pathlib import Path
import plotly.express as px

# avalaible data sources...
pd.json_normalize(
    requests.get("http://api.citybik.es/v2/networks").json()["networks"]
).loc[lambda d: d["location.city"].eq("London")]

自行车站采购和绘图

df = pd.json_normalize(
    requests.get("http://api.citybik.es/v2/networks/santander-cycles").json()[
        "network"
    ]["stations"]
)

# build up some data over time
df["timestamp"] = pd.to_datetime(df["timestamp"]).round("15min")
f = Path.cwd().joinpath("bikes.pickle")
if not f.exists():
    df.to_pickle(f)
else:
    df = pd.concat([pd.read_pickle(f), df])
    df = df.groupby(["timestamp","id"], as_index=False).first()
    df.to_pickle(f)

# now just plot it on a map with evolution by time
df["ts_str"] = df["timestamp"].dt.strftime("%d-%b %H:%M")
px.scatter_mapbox(
    df,
    lat="latitude",
    lon="longitude",
    size="free_bikes",
    hover_data=["name"],
    animation_frame="ts_str",
).update_layout(
    mapbox={"style": "carto-positron", "zoom":11}, margin={"l": 0, "r": 0, "t": 0, "b": 0}
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用时间滑块绘制地图并使用Python中的plotly缩放城市 的相关文章

随机推荐