在日常工作中经常会跟一些数据打交道,比如bug归因分析、自动化测试数据、性能测试数据等等.如果是table表格展示数据不能更好的提供给我们优化分析的思路,往往我们都是会用图表的形式展示数据更直观,比如折线图、饼图、柱状图等等.
在python中几个常用的图表库如下:
•matplotlib•Pychart•Cairoplot•pyecharts
本文就介绍下pyecharts的基础使用,相对之前使用vue的时候要经常使用Echarts生成图表,另外前三个不太符合我的需求和使用习惯.
Echarts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts诞生了.
可以说pyecharts是python库封装了使用Echarts的使用,让使用者更简单.
https://pyecharts.org/#/
https://github.com/pyecharts/pyecharts/tree/master/test
pip(3) install pyecharts
import pyecharts
print(pyecharts.__version__)
第一图表生成一个简单柱状图.
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()
默认会生成render.html文件
点击run打开文件.
在浏览器中打开一个柱状图.
from pyecharts.charts import Bar
# 导入图表
支持的图表如下:
bar = Bar()
# 初始化对象
Bar继承了RectChart
在RectChart中的构造参数中,可以设置相关参数
给图表设置主题
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
设置x轴参数
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
sequence类型的参数,是一个可迭代对象.
设置y轴参数
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
y轴的输入参数相关多一些,series_name是展示的名字, y_axis也是sequence类型的参数,必须是int类型或者float类型.
渲染数据
bar.render()
默认输出是render.html文件,模版是simple_chart.html.
渲染代码逻辑
使用jinja2把数据渲染一个本地html文件
生成的报告使用echarts.min.js渲染数据
c = (
Line()
.add_xaxis(["A", "B", "C"])
.add_yaxis("series0", [1, 2, 4])
)
c.render()
c = (
Line()
.add_xaxis(["A", "B", "C"])
.add_yaxis("series0", [1, 2, 4])
.add_yaxis("series1", [2, 3, 6])
)
c.render()
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
c = (
Pie()
.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
c.render()
c = Map().add(
"商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china"
)
c.render()
from pyecharts.charts import WordCloud
words = [
("Sam S Club", 10000),
("Macys", 6181),
("Amy Schumer", 4386),
("Jurassic World", 4055),
("Charter Communications", 2467),
("Chick Fil A", 2244),
("Planet Fitness", 1868),
("Pitch Perfect", 1484),
]
c = WordCloud().add("", words, word_size_range=[20, 100])
c.render()
下文(中篇)会介绍一下pyecharts的高阶使用,配置项、参数传递、Web 框架整合等.