python可视化利器:pyecharts
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()
基本图表
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() + '%';}"
)