前言最近在研究pyecharts的用法,pyecharts是python的一个可视化工具,然后想到结合微信一起玩。话不多说,直接看效果:环境配置pipinstallpyechartspipinstallsnapshot_seleniumpipinstallecharts-countries-pypkgpipinstallecharts-china-provinces-pypkgpipinstallecharts-china-cities-pypkgpipinstallecharts-china-counties-pypkgpipinstallwxpy获取好友主要是获取好友的基本数据,数据可视化代码如下:fromwxpyimportBot,ChatclassDemo(Chat):@staticmethoddefget_friend():bot=Bot()friends=bot.friends(update=True)friend_data=[]forfriendinfriends:iffriend.sex==1:sex="Male"eliffriend.sex==2:sex="female"else:sex=""friend_dict={"city":friend.city,"province":friend.province,"sex":sex,"signature":friend.signature,}friend_data.append(friend_dict)returnfriend_data返回微信好友列表,包含好友所在城市、省份、性别、个性签名等数据。地理坐标地图地理坐标系组件用于地图绘制,支持在地理坐标系上绘制散点图和线集。pyecharts中的地理坐标图主要是基于Geo模块defgeo_base():city_data=get_data()geo=Geo(init_opts=opts.InitOpts(theme="vintage"))forcityincity_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="微信好友分布图"),)exceptExceptionase:print(e)pass#地理。render("geo.html")make_snapshot(driver,geo.render(),"geo.png")运行后会在当前目录生成一张geo.png图片,也是基于Geo模块。唯一不同的是add函数中的type是热图代码如下:defheat_map():city_data=get_data()geo=Geo(init_opts=opts.InitOpts(theme="vintage"))forcityincity_data:尝试: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="heatmap"),toolbox_opts=opts.ToolboxOpts())除了:通过geo.render("heat.html")之后的效果:以上是微信广东好友分布热图。当然,各省可以选择自己的全国分布图。地图是基于Map模块进行扩展的。主要用到的函数是adddefadd(#系列名称,用于tooltip显示,图例图例选择。series_name:str,#数据项(坐标点名称,坐标点值)data_pair:Sequence,#地图类型,参考pyecharts。datasets.map_filenames.json文件maptype:str="china",#是否选择图例is_selected:bool=True,#是否启用鼠标缩放和平移漫游is_roam:bool=True,#当前查看的中心点angle,以经纬度表示center:Optional[Sequence]=None,#当前视角的缩放比例。zoom:Optional[Numeric]=1,#自定义区域名称地图name_map:Optional[dict]=None,#标记图形符号的形状: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,)代码如下:defmap_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")效果如下:条形图先看效果:代码如下:defbar_datazoom_slider()->Bar:city_data=get_data()c=(Bar(init_opts=opts.InitOpts(page_title="barchart")).add_xaxis([city[0]forcityincity_data]).add_yaxis("城市人数",[city[1]forcityincity_data]).set_global_opts(title_opts=opts.TitleOpts(title="友城分布条形图"),datazoom_opts=[opts.DataZoomOpts(orient="vertical")]))returnc最后再给大家提供一个微信头像的另一种好玩的方式:先看图片:另外,你还可以自定义文字,输入你要制作的文字即可!后台回复“图片”获取源码公众号:Python编程实战欢迎关注!更多内容请关注我公众号,Python编程与实战
