python可视化利器:pyecharts
前言
前面我们提及ggplot
在R
和Python
中都是数据可视化的利器,在机器学习和数据分析领域得到了广泛的应用。pyecharts
结合了Python
和百度开源的Echarts
工具,基于其交互性和便利性得到了众多开发者的认可。拥有如下的特点:
- 可集成至
Flask
、Django
等主流web
框架 - 相较于
matplotlib
等传统绘图库,pyecharts
语法更加简洁,更加注重数据的呈现方式而非图形细节 - 包含原生的百度地图,方便绘制地理可视化图形
本文主要整理自
pyecharts
官网github
文档:https://github.com/pyecharts/pyecharts/
安装
# pip安装 $ pip(3) install pyecharts # 源码安装 $ git clone https://github.com/pyecharts/pyecharts.git $ cd pyecharts $ pip install -r requirements.txt $ python setup.py install # 或者执行 python install.py
简单的实例
首先绘制第一个图表:
from pyecharts.charts import Bar bar = Bar() bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) # render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件 # 也可以传入路径参数,如 bar.render("mycharts.html") bar.render() # pyechart所有方法均支持链式调用, 因此上面的代码也可以改写成如下形式 from pyecharts.charts import Bar bar = ( Bar() .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) .add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) ) bar.render() # 使用options配置项添加主标题和副标题 from pyecharts.charts import Bar from pyecharts import options as opts bar = Bar() bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题")) bar.render()

image.png
基本图表
1. 柱状图
from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.commons.utils import JsCode from pyecharts.globals import ThemeType list2 = [ {"value": 12, "percent": 12 / (12 + 3)}, {"value": 23, "percent": 23 / (23 + 21)}, {"value": 33, "percent": 33 / (33 + 5)}, {"value": 3, "percent": 3 / (3 + 52)}, {"value": 33, "percent": 33 / (33 + 43)}, ] list3 = [ {"value": 3, "percent": 3 / (12 + 3)}, {"value": 21, "percent": 21 / (23 + 21)}, {"value": 5, "percent": 5 / (33 + 5)}, {"value": 52, "percent": 52 / (3 + 52)}, {"value": 43, "percent": 43 / (33 + 43)}, ] c = ( # 设置主题: 默认是黑红风格, 其他风格大部分还不如黑红风格好看 Bar(init_opts=opts.InitOpts()) # 新增x轴数据, 这里有五列柱状图 .add_xaxis( [ "名字很长的X轴标签1", "名字很长的X轴标签2", "名字很长的X轴标签3", "名字很长的X轴标签4", "名字很长的X轴标签5", ] ) # 参数一: 系列名称; 参数二: 系列数据; stack: 数据堆叠; category_gap: 柱间距离 .add_yaxis("product1", list2, stack="stack1", category_gap="50%") .add_yaxis("product2", list3, stack="stack1", category_gap="50%") # set_series_opts系列配置项,可配置图元样式、文字样式、标签样式、点线样式等; 其中opts.LabelOpts指标签配置项 .set_series_opts( label_opts=opts.LabelOpts( position="right", # 数据标签的位置 formatter=JsCode( # 标签内容的格式器, 这里展示了百分比 "function(x){return Number(x.data.percent * 100).toFixed() + '%';}" ), ) )