如何利用Pyecharts可視化微信好友
前言
最近在研究 pyecharts 的用法,它是 python 的一個(gè)可視化工具,然后就想著結(jié)合微信來(lái)一起玩
不多說(shuō),直接看效果:


環(huán)境配置
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
獲取好友
主要是獲取好友基本數(shù)據(jù),用來(lái)做數(shù)據(jù)可視化
代碼如下:
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
返回的是微信好友列表,包含好友城市,省份,性別和個(gè)性簽名等數(shù)據(jù)。
地理坐標(biāo)圖
地理坐標(biāo)系組件用于地圖的繪制,支持在地理坐標(biāo)系上繪制散點(diǎn)圖,線集。
在 pyecharts 中地理坐標(biāo)圖主要是基于 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")
運(yùn)行完之后會(huì)在當(dāng)前目錄生成一個(gè) geo.png 的圖片

該圖片就是微信好友中國(guó)分布地圖
熱力圖
熱力圖也是基于 Geo 模塊
唯一的區(qū)別在 add 函數(shù)中 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")
比如可以選擇某個(gè)省份的數(shù)據(jù),運(yùn)行之后的效果:

以上就是微信中的廣東好友分布熱力圖
全國(guó)分布圖
地圖是基于 Map 模塊進(jìn)行擴(kuò)展
主要用到函數(shù)是 add
def add( # 系列名稱,用于 tooltip 的顯示,legend 的圖例篩選。 series_name: str, # 數(shù)據(jù)項(xiàng) (坐標(biāo)點(diǎn)名稱,坐標(biāo)點(diǎn)值) data_pair: Sequence, # 地圖類型,具體參考 pyecharts.datasets.map_filenames.json 文件 maptype: str = "china", # 是否選中圖例 is_selected: bool = True, # 是否開(kāi)啟鼠標(biāo)縮放和平移漫游。 is_roam: bool = True, # 當(dāng)前視角的中心點(diǎn),用經(jīng)緯度表示 center: Optional[Sequence] = None, # 當(dāng)前視角的縮放比例。 zoom: Optional[Numeric] = 1, # 自定義地區(qū)的名稱映射 name_map: Optional[dict] = None, # 標(biāo)記圖形形狀 symbol: Optional[str] = None, # 是否顯示標(biāo)記圖形 is_map_symbol_show: bool = True, # 標(biāo)簽配置項(xiàng),參考 `series_options.LabelOpts` label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(), # 提示框組件配置項(xiàng),參考 `series_options.TooltipOpts` tooltip_opts: Union[opts.TooltipOpts, dict, None] = None, # 圖元樣式配置項(xiàng),參考 `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")
運(yùn)行之后,就是生成文章開(kāi)頭所示的圖片,是不是很有趣呀!
詞云圖
好友城市分布詞云圖
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")
效果如下:

條形圖
先來(lái)看下效果:

代碼如下:
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("城市人數(shù)", [city[1] for city in city_data])
.set_global_opts(
title_opts=opts.TitleOpts(title="好友城市分布條形圖"),
datazoom_opts=[opts.DataZoomOpts(orient="vertical")]
)
)
return c
最后,再提供大家微信頭像另一種好玩的方式:
先看圖:

除此之外,還能定制文字,將自己想制作的文字,輸入即可!

源碼下載:點(diǎn)擊這里
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
python實(shí)現(xiàn)漢諾塔遞歸算法經(jīng)典案例
這篇文章主要大家分享了python實(shí)現(xiàn)漢諾塔遞歸算法經(jīng)典案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
Object arrays cannot be loaded when
這篇文章主要介紹了Object arrays cannot be loaded when allow_pickle=False,本文給大家分享問(wèn)題解決思路,需要的朋友可以參考下2022-11-11
Python創(chuàng)建一個(gè)元素都為0的列表實(shí)例
今天小編就為大家分享一篇Python創(chuàng)建一個(gè)元素都為0的列表實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說(shuō)明
這篇文章主要介紹了卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
python輸入一個(gè)水仙花數(shù)(三位數(shù)) 輸出百位十位個(gè)位實(shí)例
這篇文章主要介紹了python輸入一個(gè)水仙花數(shù)(三位數(shù)) 輸出百位十位個(gè)位實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05

