前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Python可视化Dash工具—散点地图、热力地图、线形地图

关于Python可视化Dash工具—散点地图、热力地图、线形地图

作者头像
python与大数据分析
发布2022-03-11 14:07:58
1.4K0
发布2022-03-11 14:07:58
举报
文章被收录于专栏:python与大数据分析

好不容易实现了choropleth_mapbox地图,也顺道把散点地图、热力地图、线形地图处理掉吧,做到有始有终,再迈向新的领域;从微信公众号里拿到了按分省统计的用户数据,又拿到了各地市数据,通过这两种数据分别实现choropleth_mapbox、scatter_mapbox、density_mapbox,至于line_mapbox构造数据过于麻烦,直接拷贝了官网上的案例。

基于分省统计的用户数据,通过choropleth_mapbox进行行政区域的数据展示。

代码语言:javascript
复制
import json
import pandas as pd
import plotly.express as px
# 中国地图
with open('china_geo.json') as response:
    counties = json.load(response)

df = pd.read_csv("gongzhonghaopro.csv",encoding="utf-8",
                   dtype={"areacode": str})

fig = px.choropleth_mapbox(df, geojson=counties, featureidkey="properties.adcode",locations='areacode',  color='total',
                           #color_continuous_scale="Viridis",
                           range_color=(0, 320),
                           color_continuous_scale='Reds',
                           zoom=3, center={"lat": 37.4189, "lon": 116.4219},
                           mapbox_style='carto-positron')

fig.update_layout(margin={"r": 0, "t": 0, "l": 0, "b": 0})
fig.show()

基于分地市统计的用户数据,通过scatter_mapbox进行各城市的数据展示。这里面不同的地方是直接采用mapbox的地图,而且申请了一个tokenkey,此外数据的构成方面,需要附上各区域的经度、维度、展示数据等信息。

代码语言:javascript
复制
all_data = pd.read_csv("gongzhonghao.csv",encoding="utf-8")
token = 'pk.eyJ1Ijoiam9obndhbmcyMDIxIiwiYSI6ImNrbWNheTJ1NzA4cWQyb21uZHYycTgzMGQifQ.Tyk26CpuPLPi3bpw05yM_A'
fig = px.scatter_mapbox(all_data, lat="langitude", lon="latitude", hover_name="city", hover_data=["city", "total"],
                        color="total",
                        size="total",
                        #color_continuous_scale=px.colors.sequential.matter,
                        size_max=30,
                        color_continuous_scale="Reds",
                        zoom=5, height=1000)

fig.update_layout(mapbox = {'accesstoken': token, #需要到官网注册一个token
                            'center': {'lon': 106.573, 'lat': 30.66342},  #指定的地图中心
                            'zoom': 3,
                            'style': 'basic', #显示的地图类型,有遥感地图,街道地图等类型
                           },
                  margin = {'l': 0, 'r': 0, 't': 0, 'b': 0})
fig.show()

基于分地市统计的用户数据,通过density_mapbox进行各城市的数据展示。热力图相对来说呈现效果要好于scatter_mapbox,不过这里面关于range_color的设置一直没想明白该如何正确处理。

代码语言:javascript
复制
all_data = pd.read_csv("gongzhonghao.csv",encoding="utf-8")
print(all_data)
fig = px.density_mapbox(all_data, lat='langitude', lon='latitude', z='total', radius=20,
                        color_continuous_scale=px.colors.diverging.RdYlGn[::-1],
                        center={"lat": 37.4189, "lon": 116.4219}, zoom=3,
                        range_color =(0,15),
                        mapbox_style="stamen-terrain")
fig.show()

基于官方案例的line_geo地图展示。

代码语言:javascript
复制
df = px.data.gapminder().query("year == 2007")
fig = px.line_geo(df, locations="iso_alpha",
                  color="continent", # "continent" is one of the columns of gapminder
                  projection="orthographic")
fig.show()

下一步该探索一下dash_core_components 、dash_html_components 、idash_bootstrap_components组件了,最终的目标是实现可视化大屏,还有很长的路要走。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档