如何利用Pyecharts可视化微信好友
作者:Python编程与实战 发布时间:2022-04-13 07:34:14
标签:pyecharts,可视化,微信
前言
最近在研究 pyecharts 的用法,它是 python 的一个可视化工具,然后就想着结合微信来一起玩
不多说,直接看效果:
环境配置
pip install pyecharts
pip install snapshot_selenium
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install wxpy
获取好友
主要是获取好友基本数据,用来做数据可视化
代码如下:
from wxpy import Bot, Chat
class Demo(Chat):
@staticmethod
def get_friend():
bot = Bot()
friends = bot.friends(update=True)
friend_data = []
for friend in friends:
if friend.sex == 1:
sex = "男"
elif friend.sex == 2:
sex = "女"
else:
sex = ""
friend_dict = {
"city": friend.city,
"province": friend.province,
"sex": sex,
"signature": friend.signature,
}
friend_data.append(friend_dict)
return friend_data
返回的是微信好友列表,包含好友城市,省份,性别和个性签名等数据。
地理坐标图
地理坐标系组件用于地图的绘制,支持在地理坐标系上绘制散点图,线集。
在 pyecharts 中地理坐标图主要是基于 Geo 模块
def geo_base():
city_data = get_data()
geo = Geo(init_opts=opts.InitOpts(theme="vintage"))
for city in city_data:
try:
geo.add_schema(maptype="china", itemstyle_opts=opts.ItemStyleOpts(color="gray"))
geo.add("微信好友分布地图", [city], type_="effectScatter", symbol_size=10)
geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="微信好友分布地图"), )
except Exception as e:
print(e)
pass
# geo.render("geo.html")
make_snapshot(driver, geo.render(), "geo.png")
运行完之后会在当前目录生成一个 geo.png 的图片
该图片就是微信好友中国分布地图
热力图
热力图也是基于 Geo 模块
唯一的区别在 add 函数中 type 的为 heatmap
代码如下:
def heat_map():
city_data = get_data()
geo = Geo(init_opts=opts.InitOpts(theme="vintage"))
for city in city_data:
try:
geo.add_schema(maptype="广东", itemstyle_opts=opts.ItemStyleOpts(color="gray"))
geo.add("广东好友热力图", [city], type_="heatmap", symbol_size=10)
geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="热力图"), toolbox_opts=opts.ToolboxOpts())
except :
pass
geo.render("heat.html")
比如可以选择某个省份的数据,运行之后的效果:
全国分布图
地图是基于 Map 模块进行扩展
主要用到函数是 add
def add(
# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
series_name: str,
# 数据项 (坐标点名称,坐标点值)
data_pair: Sequence,
# 地图类型,具体参考 pyecharts.datasets.map_filenames.json 文件
maptype: str = "china",
# 是否选中图例
is_selected: bool = True,
# 是否开启鼠标缩放和平移漫游。
is_roam: bool = True,
# 当前视角的中心点,用经纬度表示
center: Optional[Sequence] = None,
# 当前视角的缩放比例。
zoom: Optional[Numeric] = 1,
# 自定义地区的名称映射
name_map: Optional[dict] = None,
# 标记图形形状
symbol: Optional[str] = None,
# 是否显示标记图形
is_map_symbol_show: bool = True,
# 标签配置项,参考 `series_options.LabelOpts`
label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
# 提示框组件配置项,参考 `series_options.TooltipOpts`
tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
# 图元样式配置项,参考 `series_options.ItemStyleOpts`
itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
)
代码如下:
def map_base():
province_data = province_list()
maps = Map()
maps.add("", province_data, "china")
maps.set_global_opts(title_opts=opts.TitleOpts(title="微信好友分布图"), visualmap_opts=opts.VisualMapOpts())
make_snapshot(driver, geo.render(), "map.png")
运行之后,就是生成文章开头所示的图片,是不是很有趣呀!
词云图
好友城市分布词云图
c = (
WordCloud()
.add("", city_list, word_size_range=[15, 50], shape="diamond", word_gap=10)
.set_global_opts(title_opts=opts.TitleOpts(title="diamond"))
)
make_snapshot(driver, c.render(), "world.png")
效果如下:
条形图
先来看下效果:
代码如下:
def bar_datazoom_slider() -> Bar:
city_data = get_data()
c = (
Bar(init_opts=opts.InitOpts(page_title="条形图"))
.add_xaxis([city[0] for city in city_data])
.add_yaxis("城市人数", [city[1] for city in city_data])
.set_global_opts(
title_opts=opts.TitleOpts(title="好友城市分布条形图"),
datazoom_opts=[opts.DataZoomOpts(orient="vertical")]
)
)
return c
最后,再提供大家微信头像另一种好玩的方式:
先看图:
除此之外,还能定制文字,将自己想制作的文字,输入即可!
源码下载:点击这里
来源:https://juejin.im/post/5d1c63e96fb9a07ea9448ba5
0
投稿
猜你喜欢
- 之前都是直接拿sax,或dom等库去解析xml文件为Python的数据类型再去操作,比较繁琐,如今在写Django网站ajax操作时json
- 当你执行大型程序的时候,突然出现exception,会让程序直接停止,这种对服务器自动程序很不友好,而python有着较好的异常捕获机制,不
- 最近在开发项目的过程中遇到一个问题,就是在插入一条记录的后要立即获取所在数据库中ID,而该ID是自增的,怎么做?在sql server 20
- 在通过拼组sql语句来实现数据插入的应用中,我们很有可能会遇到需要插入大型数据的情况,例如,在oracle中需要插入字节数超过4000的字段
- 本文分析了PHP7新特性之抽象语法树(AST)带来的变化。分享给大家供大家参考,具体如下:这里大部分内容参照 AST 的 RFC 文档而成:
- 本文实例为大家分享了Python OpenCV实现视频追踪的具体代码,供大家参考,具体内容如下1. MeanShift假设有一堆点集和一个圆
- 众所周知,FileSystemObject(fso)组件的强大功能及破坏性是它屡屡被免费主页提供商(那些支持ASP)的禁用的原因,我整理了一
- 在内容为主的网站中,搜索框往往是最常用的设计元素之一。从可用性的角度来看,搜索功能是用户有了明确的内容想看的时候最后使用的功能。如果一个网站
- 首先对空格宽度的定义:空格,由于每个浏览器处理会有微小的不同,在这里我将可以选中的宽度作为空格的宽度。视觉宽度和可选中的宽度有 0~3px
- jupyter因为其在python框架下具有一个较为人性化的设计,从而在数据分析,python教学,以及python的快速学习中大放光彩.j
- 在网上看了很多解决方法,都没有解决,后来我自己解决了这个问题:出现的问题:在cmd上 “pip install package” 时显示 s
- 本文实例讲述了python避免死锁方法。分享给大家供大家参考。具体分析如下:当两个或者更多的线程在等待资源的时候就会产生死锁,两个线程相互等
- 当成功安装了PHP,MYSQL后,我们一般要安装phpMyAdmin来管理你的mysql。本文介绍了phpMyAdmin 2.10.2的配置
- 本文实例总结了PHP session会话操作技巧。分享给大家供大家参考,具体如下:会话技术session将会话数据存储与服务器端,同时使会话
- Scrapy回调函数回调方法示例:yield Request(url=self.base_url + 'QueryInfo'
- 如何在刷新链接之前验证文件是否存在?如何在每次刷新链接之前,验证链接文件是否确实存在?特别是对于数据库中的文件,我们必须在处理它之前确认一下
- asp之家注:学习asp网页编程的朋友一定用过ACCESS数据库,access的简单方便,大大降低了asp初学者学习asp的门槛,对于学习a
- test.asp 测试演示文件clsrsa.asp 实现rsa加密与解密的vbs类文件下面是代码:1. test.asp<%rem 文
- 本文实例讲述了Python列表list操作符。分享给大家供大家参考,具体如下:#coding=utf8''''
- form无论是在网站的制作中,还是在网站的重构中,我们都会频繁地“碰面”,当“碰面”的次数多了,反而觉得他更让人迷茫,有种熟悉的“陌生”,越