plotly是python非常强大的可视化库,画出的图不仅精美还数据全面,非常适合拿来画地图

今天教大家用plotly库绘制房价和地铁线路分布图,通过本次实例,你能够掌握地图标点、划线的基本用法

plotly的安装比较简单,直接在命令行输入:

pip install plotly

然后需要在官网注册1个token,步骤如下:

1.注册邮箱登录:

2.依次点击Token-Create a token,下方就会出现token值:

pandas读取房价数据:

import pandas as pd
data=pd.read_excel('房价汇总带经纬度.xlsx')
data

房子的经纬度的信息是我根据详细位置用python爬虫爬的,感兴趣的可以自己去试一下

调用go.Scattermapbox()方法,绘制房价散点图:

import plotly.graph_objects as go
token='pk.eyJ1IjoicHl0aG9uYmlyZCIsImEiOiJja2tqOTBneXcwZTlyMnRzNzczNngzY2huIn0.2dImfhmc06Z8IeX6WeNamQ'
fig=go.Figure(go.Scattermapbox(mode="markers",lon=data.经度,lat=data.纬度,hovertext=data.简介,  #悬停显示文本内容hoverinfo='text',marker_symbol='marker',marker_size=6))       #标记大小
fig.update_layout(mapbox={"accesstoken":token,"center":{'lon':116.2,'lat':39.56},  #地图中心位置'zoom':11.8},margin={'l':0,'r':0,'t':0,"b":0}     #地图边距)

go.Scattermapbox()方法提供了多种symbol样式,网址为:

https://labs.mapbox.com/maki-icons/

但它只能呈现数据位置,表现的很单一

px.scatter_mapbox()则很好的解决这一问题,能够将marker的size和color与不同列的值相关联,通过数据点的位置、颜色和大小多维度地呈现数据(marker的symbol不可改变):

import plotly.express as px
import plotly.graph_objects as go
fig = px.scatter_mapbox(data,lon = '经度',  #输入经度坐标lat = '纬度',  #输入纬度color ="单价", #对应excel的color栏,每个值代表一种颜色hover_name ="简介",#可以对应excel里面的某一栏size_max = 16, #上面size尺寸的最大值color_continuous_scale = px.colors.carto.Temps)fig.update_layout(mapbox = {'accesstoken': token, #需要到官网注册一个token"center":{'lon':116.2,'lat':39.56},  #指定的地图中心'zoom': 7.48,'style': 'dark', #显示的地图类型,有遥感地图,街道地图等类型},margin = {'l': 0, 'r': 0, 't': 0, 'b': 0})
fig.show() #显示地图

内置的style可以是[basic, streets, outdoors, light, dark, satellite, satellite-streets]中的任意一种,默认为'light'

最后,我又用爬虫爬了北京市地铁站点信息,代码如下:

import requests
import json
import pandas as pd
url='http://map.amap.com/service/subway?_1599997789354=&srhdata=1100_drw_beijing.json'
response=requests.get(url)
result=json.loads(response.text)
stations=[]
lats=[]
lons=[]
lines=[]
for i in result['l']:for j in i['st']:lines.append(i['kn'])stations.append(j['n'])lons.append(j['sl'].split(',')[0])lats.append(j['sl'].split(',')[1])
dataframe=pd.DataFrame({'站名':stations,'线路':lines,'经度':lons,'纬度':lats})
dataframe

在第二张图的基础上加上地铁线路图:

lines=dataframe['线路'].unique().tolist()
for line in lines:fig.add_traces(go.Scattermapbox(mode="markers+lines",lon=dataframe.loc[lambda x:x['线路']==line]['经度'],lat=dataframe.loc[lambda x:x['线路']==line]['纬度'],hovertext=dataframe.loc[lambda x:x['线路']==line]['站名'],hoverinfo='text',marker_symbol='marker',marker_size=6,showlegend = False))
for line in lines[1:]:fig.add_traces(go.Scattermapbox(mode="markers+lines",lon=dataframe.loc[lambda x:x['线路']==line]['经度'],lat=dataframe.loc[lambda x:x['线路']==line]['纬度'],hovertext=dataframe.loc[lambda x:x['线路']==line]['站名'],hoverinfo='text',marker_symbol='marker',marker_size=6,showlegend = False))
fig.update_layout(mapbox={"accesstoken":token,"center":{'lon':116.2,'lat':39.56},'zoom':11.8},margin={'l':0,'r':0,'t':0,"b":0})

大功告成,你学会了吗?

在这里还是要推荐下我自己建的Python学习群:721195303,群里都是学Python的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2021最新的Python进阶资料和零基础教学,欢迎进阶中和对Python感兴趣的小伙伴加入!

python绘制高颜值房价与地铁线路分布图相关推荐

  1. python画简单图片-Python绘制“高颜值”桑基图

    请看以下图片: 相信许多小伙伴第一眼就会被它美丽的外表所吸引,由此引发一连串的惊叹: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 为了满足大家的好 ...

  2. 教你用iTOL轻松绘制高颜值系统进化树

    这是一个靠颜值也能吃饭的时代,比如现实生活中的网红脸,炫酷霸气的法拉利赛车都会更轻易地博取观众的眼球. 时至今日,科研文章也紧随时代潮流,文章中各种高大上的配图层出不穷.究其原因主要包括两点: 一是在 ...

  3. 【进阶技巧】如何绘制高颜值XMind思维导图?色彩使用很重要!

    思维导图软件推荐: MindManager Edraw MindMaster TheBrain 思维导图是思维可视化的利器,我们用它来辅助思考,同时也用它来展示思维.当一张思维导图被分享时,它的可读性 ...

  4. itol绘制高颜值的进化树

    iTOL简介 大家在看高分文章时,总会惊叹于,为什么人家能做出那么好看而且高大上的系统发育树,而且好看的图也能直接提升文章的档次,冲击高分文章.人家的树不管是从配色还是各种注释信息都让人无可挑剔,而你 ...

  5. 【Matlab绘图进阶第1弹】Matlab绘制高颜值箱式图

    箱式图又称为箱线图.盒式图,用作显示一组数据分散情况的统计图,同时可以反映原始数据分布的特征,好看的箱式图对于论文的接收有很大的帮助,下面来和小编一起学习如何绘制一张高颜值带有显著性的箱式图吧. 成图 ...

  6. sangerbox使用教程_用iTOL轻松绘制高颜值系统进化树

    时至今日,科研文章也紧随时代潮流,文章中各种高大上的配图层出不穷.究其原因主要包括两点:一是在科研数据和内容更加丰满而文章发表配图张数受限的情况下组合图更具实用性:二是一幅高颜值的配图不仅能提升文章的 ...

  7. 绘制高颜值导图的小技巧

    思维导图是思维可视化的利器,我们用它来辅助思考,同时也用它来展示思维.当一张思维导图被分享时,它的可读性即受到考验.今天我们就从软件功能应用的角度和大家聊一聊如何用 XMind: ZEN 绘制高颜值导 ...

  8. 如何使用Python获取高德地图中的地铁线路数据(geojson版本)

    目录 数据来源 文件管理 引用的库 获取文件夹名称 读取文件 提取转化为线文件 提取转化为点文件 主程序 最终成果 数据来源 通过在高德地图搜索框直接搜索地铁线路,地图上会高亮显示地铁线路.通过尝试发 ...

  9. 熊工巧匠 | 绘制高颜值的电路接线图,让你的创客项目赢在起跑线上

    全文约5000字,阅读时间10分钟 文章比较长,建议收藏阅读. 我偶尔会在网上论坛里写写文章,发表一些创客 DIY 小制作的教程,底下经常有人回复问我:请问这些漂亮的电路接线图是怎么画出来的? 正好最 ...

最新文章

  1. 贪心  POJ - 3617 ​​​​​​​Best Cow Line
  2. catia圆柱转化为圆台_浅析actran气动噪声仿真技术,以圆柱绕流气动噪声仿真为例...
  3. 笔记-中项案例题-2018年下-整体管理
  4. 转发2篇大学生写的博文---看了比较有感触
  5. MFC80.DLL复制到程序目录中,也有的说复制到安装目录中
  6. Python之浅谈运算符
  7. 守得云开见月明:一次ASM存储高可用故障解决过程分析
  8. Windows RDP协议重大漏洞后发现黑客开始大规模扫瞄
  9. SpringBoot实战(五):配置健康检查与监控
  10. pandas怎么去除nan_pandas缺失值处理之——如何消去Nan值对数字型字符串数据类型的影响,让数字型字符串保持原始str类型,而不会自动变为float类型?...
  11. 【BZOJ3631】松鼠的新家 树链剖分
  12. java中utf8转成gbk,java中GBK转UTF-8乱码的解决方法
  13. 二元函数可导与可微的关系_二元函数可导、可微与连续性的关系.pdf
  14. 马斯克、脑机交互与人机融合
  15. Dell计算机装Win8,dell win8重装系统教程详解
  16. 1篇SCI二区+4篇一类可定A档博士!110万房补,享副教授甚至教授待遇!
  17. node学习 express + mysql + ejs实现注册登录
  18. 课程设计小组报告——基于ARM实验箱的捕鱼游戏的设计与实现
  19. 【C语言】——计算单词个数
  20. 华为Mate40和iPhone12网络舆情传播数据分析报告

热门文章

  1. 一位前端 P7 大佬的面试经验分享
  2. 闲谈数学建模——美赛篇
  3. 2022-2028全球汽车HSD连接器行业调研及趋势分析报告
  4. lin通信ldf文件解析_基于LIN协议的代码自动生成系统及方法_2014108531085_说明书_专利查询_专利网_钻瓜专利网...
  5. android中下载视频(包括m3u8)的类
  6. linux d bus效率,D-Bus study
  7. Python进制转换10进制转换为16进制,不使用hex函数
  8. 内向的人练习口才方法
  9. 支持java版本的火狐浏览器官方下载_selenium-java,selenium版本和火狐浏览器版本对应关系...
  10. JavaScript 控制台(console)调试技巧