实验:
PyEcharts
目的:了解并掌握
PyEcharts
库来制作着色地图
原理:
Pyecharts
是一个用于生成
Echarts
图表的类库,可以与
Python
进行对接,方便在
Python
中直接
生成图形。
Echarts
是百度开源的一个数据可视化
JS
库
,
它实现的可视化效果非常美观,凭借着良好的交互
性、精巧的图表设计
,
得到了众多开发者的认可。
要求:
使用数据库中的订单表(
orders
)中的数据,绘制如下所示的
2014
年各个省份各销售经理的利润
分布图。
#着色地图
from pyecharts import options as opts
from pyecharts.charts import Map
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mysql+pymysql://root:root@localhost:3306/sales')
#注意mysql的账号密码,我的是root
sql = '''
SELECT
province AS 'p', manager AS 'm',
ROUND(SUM(profit) / 10, 2) AS 's'
FROM orders WHERE dt = 2014
GROUP BY province, manager
'''
df = pd.read_sql(sql, engine)
data = {}
for (i, row) in df.iterrows():
m = row['m']
v = (row['p'], row['s'])
if m in data:
data[m].append(v)
else:
data[m] = [v]
m = Map()
for (key, val) in data.items():
m.add(key, val, is_map_symbol_show=False)
m.set_global_opts(
title_opts=opts.TitleOpts(title="2014年各省份销售经理总利润分布图"),
visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=[{
"min": 100, "color": 'green'
}, {
"min": 10, "max": 100
}, {
"max": 10, "color": 'red'
}]),
legend_opts=opts.LegendOpts(pos_top='5%', pos_right='center')
).render("着色地图.html")