python使用微信设置-用Python来可视化微信好友

前言

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

不多说,直接看效果:

1460000021759575

1553156661-5e48ae3436bd6_articlex

环境配置

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

2092862152-5e48ae38de3b3_articlex

该图片就是微信好友中国分布地图

热力图

热力图也是基于 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")

运行之后的效果:

3215117644-5e48ae3a428b4_articlex

以上就是微信中的广东好友分布热力图,当然省份可以自主选择。

全国分布图

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

效果如下:

1220005271-5e48ae3e4595d_articlex

条形图

先来看下效果:

1553156661-5e48ae3436bd6_articlex

代码如下:

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

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

先看图:

3196163993-5e48ae530639a_articlex

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

937238151-5e48ae54820c0_articlex

后台回复 "image” 获取源码

公众号:Python编程与实战。欢迎关注!

14757902-5e48ae5551128_articlex

1596673346-5e48ae56dc7ec_articlex

了解更多内容,烦请关注本人公众号, Python编程与实战

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值