博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用Python画出你微信好友地理分布图
阅读量:4575 次
发布时间:2019-06-08

本文共 3609 字,大约阅读时间需要 12 分钟。

        微信是我们日常生活中非常重要的社交工具,那么大家想不想了解自己微信好友的地理分布呢?话不多说,先上图 

(一)介绍所需包pyecharts、itchat、xlwt

    itchat是一个开源的微信个人号接口,使开发者可以用Python调用微信。使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。当然,该api的使用远不止一个机器人。该接口与公众号接口itchatmp共享类似的操作方式,学习一次掌握两个工具。如今微信已经成为了个人社交的很大一部分,对于技术宅们熟练使用itchat能够帮助你扩展你的个人的微信号、方便自己的生活。

   pyecharts是一个用于生成Echarts图表的类库.Echarts是百度开源的一个数据可视化JS库。用Echarts生成的图可视化效果非常棒,pyecharts是为了与Python进行对接,方便在Python中直接使用数据生成图。

   xlwt是Python语言中,写入Excel文件的扩展工具。

(二)具体过程

   我们想要导出好友基本信息至Excel表格中,首先设置Excel导出格式

import xlwtstyle = xlwt.XFStyle()font = xlwt.Font()#字体基本设置font.name = u'楷体'font.color = 'black'alignment = xlwt.Alignment() # 设置字体在单元格的位置alignment.horz = xlwt.Alignment.HORZ_CENTER #水平方向alignment.vert = xlwt.Alignment.VERT_CENTER #竖直方向style.alignment = alignmentstyle.font = fontworkbook=xlwt.Workbook(encoding='utf-8')sheet1=workbook.add_sheet("fr")#设置Excel抬头sheet1.write(0,0,u'昵称',style)sheet1.write(0,1,u'备注名',style)sheet1.write(0,2,u'省份',style)sheet1.write(0,3,u'城市',style)sheet1.write(0,4,u'签名',style)

    然后 利用itchat包登录微信,获取好友信息

import itchat itchat.login()#登录微信friends=itchat.get_friends(update=True)[0:]#获取好友列表

    将好友信息写至EXCEL中

a=0#设置计数变量Province=[]#把省份单独提取,以备后面画图使用for i in friends:    sheet1.write(a+1,0,i['NickName'],style)    sheet1.write(a+1,1,i['RemarkName'],style)    sheet1.write(a+1,2,i['Province'],style)    if u'\u4e00' <= i['Province'] <= u'\u9fff':#排除省份为英文的        Province.append(i['Province'])    sheet1.write(a+1,3,i['City'],style)    sheet1.write(a+1,4,i['Signature'],style)    sheet1.write(a+1,5,i['UniFriend'],style)    a=a+1workbook.save(r'C:\Users\LYB\Desktop\friend.xls')# 设置保存路径

    做出一个列表,每一个元素包含省份和在该省份的人数

pr_set=set(Province)data=[]for item in pr_set:    data.append((item,Province.count(item)))

    接下来,开始使用pyecharts画图。由于pyecharts包为了保持轻量化运行,地图文件不在包中,我们需要额外安装,在Cmd中,使用pip命令

pip install echarts-countries-pypkgpip install echarts-china-provinces-pypkgpip install echarts-china-cities-pypkg

        导入相对应模块并画图。pyeachrts上针对可图可视化的基本图表有Map和Geo这两个,Map可理解为实现地图区域可视化,Geo可理解为地图散点图可视化。

from pyecharts import Geo,Mapgeo = Geo("微信好友城市分布", "data from wechat  made by Gatsby-zhong", title_color="#fff",          title_pos="center", width=1000,height=600, background_color='#404a59')#对画布进行设置attr, value = geo.cast(data)#使用函数分为两个listgeo.add("", attr, value, visual_range=[0, 40], maptype='china',visual_text_color="#fff",        symbol_size=10, is_visualmap=True)#画图geo.render(r'C:\Users\LYB\Desktop\friend.html')#设置保存路径map = Map("微信好友城市分布",'data from wechat  made by Gatsby-zhong', width=1000, height=600)map.add("", attr, value, visual_range=[0, 40],  maptype='china', is_visualmap=True,    visual_text_color='#000')map.render(r'C:\Users\LYB\Desktop\2friend.html')geo = Geo("微信好友城市分布热力图", "data from wechat  made by Gatsby-zhong",           title_color="#fff", title_pos="center", width=1200, height=600,           background_color='#404a59')geo.add("", attr, value, visual_range=[0, 30], type='heatmap',visual_text_color="#fff",         symbol_size=15, is_visualmap=True, is_roam=False)geo.render(r'C:\Users\LYB\Desktop\3friend.html')geo = Geo("微信好友城市分布", "data from wechat  made by Gatsby-zhong", title_color="#fff",           title_pos="center", width=1200, height=600, background_color='#404a59')geo.add("", attr, value, type="effectScatter", is_random=True, effect_scale=5,         visual_range=[0, 40],visual_text_color="#fff", symbol_size=15,         is_visualmap=True, is_roam=False)geo.render(r'C:\Users\LYB\Desktop\4friend.html')

    画出来的图还有

微信好友分布热力图(3friend.html)

微信好友城市分布(2friend.html)

 friend.html 

    此外,利用basemap包也能画出中国地图。需要安装basemap 和 pypro。具体不再赘述,仅展示用其画的一幅中国地图, 可以看出,经放大后,连海岸线都十分清楚。

 

转载于:https://www.cnblogs.com/zhonghouyue/p/10126859.html

你可能感兴趣的文章
C#--正则匹配
查看>>
5.30 考试修改+总结
查看>>
BA-设计施工调试流程
查看>>
C#-CLR各版本特点
查看>>
css3背景透明文字不透明
查看>>
《java JDK7 学习笔记》之接口与多态
查看>>
LeetCode 96:Unique Binary Search Trees
查看>>
kernel-char设备的建立
查看>>
DVWA-CSRF
查看>>
ubuntu common software introduction
查看>>
资源相互引用时 需添加 PerformSubstitution=True
查看>>
MapRedece(单表关联)
查看>>
蒲公英App开发之检测新版本
查看>>
【安卓基础】倒计时按钮封装(验证码倒计时按钮)
查看>>
configparser模块
查看>>
SelectQueryBuilder的用法
查看>>
android的用户定位(一)
查看>>
creat-react-app搭建的项目中按需引入antd以及配置Less和如何修改antd的主题色
查看>>
IIS安装
查看>>
html块级元素和行级元素的区别和使用
查看>>