博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pyecharts显示图片_简单易操作,用 pyecharts 可视化你的微信好友信息
阅读量:5482 次
发布时间:2019-06-16

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

点击上方“Python数据之道”,选择“星标公众号”

只收藏文章,不点在看的,都是耍流氓

e03e2908e57951bf886ce88da93b4663.png

作者 | Jerryning

来源 | Python编程与实战

用 Pyecharts 可视化你的微信好友信息

前言

最近在研究 pyecharts  的用法,它是 python 的一个可视化工具,然后就想着结合微信来一起玩

不多说,直接看效果:

2c6646dd087bcb253b7c35e84ee0943c.gif

34c906f4b8ae0b08e31e68d67d56b156.gif
条形图.gif

环境配置

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 的图片

fc86ecbe5648ac9cf288f23ac94c6fe3.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")

运行之后的效果:

fae5c3df9e1f0ba7a5ac25ab6206e110.png
热力图.png

全国分布图

地图是基于 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")

效果如下:

4eecc585574b245010754b88d29eabda.png

条形图

先来看下效果:

34c906f4b8ae0b08e31e68d67d56b156.gif
条形图.gif

代码如下:

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

最后,再提供大家微信头像另一种好玩的方式:

效果如下:

341fe929091059e118f09c03acf991cc.png
89db297ce24bb7e481ff46b35cd80daa.png
cec474d1ecc304b34fa7f8e9e3263cfb.png

除此之外,还能定制文字,将自己想制作的文字,输入即可!

5037037ef24d12d1f054c13bd05e90f7.png

公众号【Python编程与实战】后台回复 image 即可获取该程序

bbf93e95a37cc444974f27521d8fd2c6.png
获取程序

-------------------End-------------------

 Python数据之道 

22531a75d8d0a26cc6a8f487e4324649.png

据说学Python的只有10%的人关注了这个号,

还有很大潜力

d39979e75926a48d7784ac5f9670f19e.png

今日主题:你有多少微信好友?

留言格式:昵称 + day xx + 留言内容(字数不少于15字)

欢迎各位同学加入公众号读者分享交流群,在公众号后台回复 “微信群” 即可。

89eff3335d15d0efe0e41ea9fdb7f829.png

  • 推荐 | 免费获取《Python知识手册》

  • Matplotlib最有价值的50个图表

  • 可视化神器推荐(Plotly Express)

  • 推荐一个牛逼的生物信息库-Dash Bio

  • 用Python快速分析和预测股票价格

同学们,支持就请右下角点d7e08946dd0542a3836d0c291d19625e.gif

转载地址:http://urzct.baihongyu.com/

你可能感兴趣的文章
AIX修改用户密码登录不成功案例分享
查看>>
openstack组件使用的默认端口
查看>>
c语言简单版坦克大战(AllenEnemyTrank文件)
查看>>
Java私塾: 研磨设计之备忘录模式(Memento)
查看>>
理解call和apply方法
查看>>
异步加载(延迟加载)与同步加载
查看>>
机器学习瓶颈 - 从黑盒白盒之争说起
查看>>
小程序图片上传七牛
查看>>
java交换两个变量值a,b的多钟方法
查看>>
Python中被双下划线包围的魔法方法
查看>>
JAVA核心编程教学
查看>>
Oracle:数据类型对应表
查看>>
洛谷P1349 广义斐波那契数列
查看>>
BZOJ3160 万径人踪灭
查看>>
Okhttp3请求网络开启Gzip压缩
查看>>
pycharm配置mysql数据库连接访问
查看>>
Spring源码学习:第0步--环境准备
查看>>
烂泥:rsync与inotify集成实现数据实时同步更新
查看>>
call & apply
查看>>
学习英语哦
查看>>