前提
朋友圈的相关数据请参照上一篇文章《基于Python的微信朋友圈数据可视化分析之个性签名》获取,本篇文章默认需要的数据已经下载保存至本地的 csv
文件中了。
将好友的地点按照省份进行统计
import pandas as pd
from collections import Counter
from pyecharts import Map
wechat_info = pd.read_csv("wechat_friends_info.csv", encoding="gbk")
province = wechat_info['Province']
province_list = []
for i in list(province):
if isinstance(i, str):
if ' ' in i or i.encode( 'UTF-8' ).isalpha(): # 如果是英文城市,则代表不是国内的城市,暂不做处理
continue
province_list.append(i)
friends_address = list(Counter(province_list).keys())
friends_count = list(Counter(province_list).values())
map = Map("我的微信好友分布", "@高正杰", width=1200, height=600)
map.add("", friends_address, friends_count, maptype='china',
is_visualmap=True, is_piecewise=True,
visual_text_color="#000",
visual_range_text=["", ""],
pieces=[
{"max": 160, "min": 70, "label": "高数值"},
{"max": 69, "min": 0, "label": "低数值"},
])
map.render('province.html')
生成的结果截图如下所示,体验地址
将好友的地点按照城市进行统计
import pandas as pd
from collections import Counter
from pyecharts import Geo
from pyecharts.datasets.coordinates import get_coordinate
wechat_info = pd.read_csv("wechat_friends_info.csv", encoding="gbk")
city = wechat_info['City']
city_list = []
for i in list(city):
if isinstance(i, str):
if ' ' in i or i.encode( 'UTF-8' ).isalpha(): # 如果是英文城市,则代表不是国内的城市,暂不做处理
continue
if get_coordinate(i) is None:
if get_coordinate(i+'市') is not None:
i = i + '市'
elif get_coordinate(i+'区') is not None:
i = i + '区'
city_list.append(i)
def geo_formatter(params):
return params.name + ' : ' + params.value[2]
geo = Geo(
"我的微信好友分布",
"@高正杰",
title_color="#fff",
title_pos="center",
width=1200,
height=600,
background_color="#404a59",
)
attr, value = geo.cast(Counter(city_list))
geo.add(
"",
attr,
value,
visual_range=[0, 91],
tooltip_formatter=geo_formatter, # 重点在这里,将函数直接传递为参数。
visual_text_color="#fff",
symbol_size=15,
is_visualmap=True,
)
geo.render('city.html')
生成的结果截图如下所示,体验地址
遇到的问题
现象
在 Jupyter notebook
中显示空白,生成的 HTML
文件打开只显示南海诸岛,不显示其他内容。
原因
自从 v0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,则需要自行安装对应的地图文件包。
解决办法
将以下几个文件包全包安装,关于这些包的含义,可以参考《自定义地图》
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 echarts-china-misc-pypkg
注意:如果安装完成后,在 Jupyter Notebook 中生成的图形还是无法查看,则需要重启 Jupyter Notebook 即可解决问题。