这是我参与「第四届青训营 」笔记创作活动的第2天
摘要:写这篇文章是因为在我们所做的大项目中会用到大数据可视化,而对于我的主攻方向(Python)来说,我个人最熟悉的大数据可视化图标库就俩:
matlotlib和ptecharts。那为什么我会选择pyecharts呢?因为两者对比的来说:1、pyecharts生成的图表更美观而且是动态的
2、pyecharts的图表很全
3、pyecharts可以应用到django框架中
一、什么是pyecharts?
✨ 官方概括:
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
✨ 特性:
- 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
- 囊括了 30+ 种常见图表,应有尽有
- 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
- 可轻松集成至 Flask,Django 等主流 Web 框架
- 高度灵活的配置项,可轻松搭配出精美的图表
- 详细的文档和示例,帮助开发者更快的上手项目
- 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持
二、安装
这里官方给出了两种安装方式:
1、直接pip安装(推荐,主要是很方便)
pip(3) install pyecharts
2、源码安装
$ 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()
这样一个简单的柱状图就生成啦!像pyecharts中的很多图其实都比较简单,只需要你处理好要分析的数据,然后转换成图表需要的格式就OK。
四、我的图表
这里所展示的图表仅仅是我们项目中的很小一部分,是针对于ClickHouse中的数据进行数据分析以及可视化。
1、航班次数对比直方图
代码:
import pandas as pd
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType
def csv_file_read():
# 读取表头
dic_airplane = {}
test_csv = pd.read_csv("../机票价格数据.csv")
airplane_company = test_csv.get('airline')
for i in airplane_company:
dic_airplane[i] = dic_airplane.get(i, 0) + 1
print(airplane_company)
attr = []
v1 = []
for i in dic_airplane.keys():
attr.append(i)
for j in dic_airplane.values():
v1.append(j)
c = (
Bar({"theme": ThemeType.MACARONS})
.add_xaxis(attr)
.add_yaxis("航空公司", v1)
.set_global_opts(
title_opts={"text": "各航空公司航班次数对比直方图"}
)
.render("航班次数对比直方图.html")
)
if __name__ == '__main__':
csv_file_read()
像这样的图表我们还可以改变其全局配置等改变它的样式。
2、经济型和商务型机票订票对比
代码:
# -*- coding: utf-8 -*-
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Pie
"""
Gallery 使用 pyecharts 1.1.0
参考地址: https://echarts.apache.org/examples/editor.html?c=pie-doughnut
目前无法实现的功能:
1、迷之颜色映射的问题
"""
def csv_file_read():
# 读取表头
dic_airplane = {}
test_csv = pd.read_csv("../机票价格数据.csv")
airplane_company = test_csv.get('class')
for i in airplane_company:
dic_airplane[i] = dic_airplane.get(i, 0) + 1
print(airplane_company)
class_air = []
v1 = []
for i in dic_airplane.keys():
class_air.append(i)
for j in dic_airplane.values():
v1.append(j)
data_pair = [list(z) for z in zip(class_air, v1)]
data_pair.sort(key=lambda x: x[1])
(
Pie(init_opts=opts.InitOpts(width="1600px", height="800px", bg_color="#2c343c"))
.add(
series_name="机票类型",
data_pair=data_pair,
rosetype="radius",
radius="55%",
center=["50%", "50%"],
label_opts=opts.LabelOpts(is_show=False, position="center"),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="经济型和商务型机票订票对比",
pos_left="center",
pos_top="20",
title_textstyle_opts=opts.TextStyleOpts(color="#fff"),
),
legend_opts=opts.LegendOpts(is_show=False),
)
.set_series_opts(
tooltip_opts=opts.TooltipOpts(
trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
),
label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"),
)
.render("经济型和商务型机票订票对比.html")
)
csv_file_read()
其实很多原理都是一样的,这里就不过多展示了。
五、总结
pyecharts是一款特别好用的可视化第三方库,但是他也有他的缺点,给我最明显的感受就是他的开发文档的更新导致他个别图表代码运行出现了版本不兼容的问题,这个还有待改进,其他感觉都还挺舒服的。