分类
联系方式
  1. 新浪微博
  2. E-mail

Pyecharts

介绍

Echarts 是著名的老牌数据可视化框架,功能非常非常强大。Pyecharts 是对 Echarts 的 Python 封装。

Echarts 不是个前端库吗?用 Python 怎么封装呢?答案是 Pyecharts 相当于一个静态网页生成器,将数据和模板融合到一起,最终生成一个 HTML 网页。当然,通过 Pyppeteer 等无头浏览器,也能够生成图片展示。

除此之外,Echarts 也能够很好地与 Jupyter Notebook 环境融合,也能够与 Flask、Django 等 Web 框架相融合。这也体现出 Python 生态的繁荣,丰富到让人眼花缭乱。

安装:pip install pyecharts

Hello World

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()

该代码会生成一个 HTML 文件。 图表的设置项被称为 Option,如给图片添加主副标题:

bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))

图表种类

种类 组件 种类 组件
柱状图 Bar 饼图 Pie
3D 柱状图 Bar3D 漏斗图 Funnel
折线图 Line 仪表盘 Gauge
3D 折线图 Line3D 水球图 Liquid
箱形图 Boxplot 日历图 Calendar
散点图 Scatter 关系图 Graph
3D 散点图 Scatter3D 平行座标系 Parallel
带涟漪效果的散点图 EffectScatter 极座标 Polar
K线图 Kline 雷达图 Radar
热力图 HeatMap 旭日图 Sunburst
象形图 PictorialBar 桑基图 Sankey
地理图(地理坐标图) Geo 河流图 ThemeRiver
地图 Map 词云图 WordCloud
3D 地图 Map3D 表格 Table
3D 地球 MapGlobe 树型图表 Tree
百度地图 BMap 矩形树图 TreeMap

基本设置

主题

Echarts 中内置了多种主题:

chalk dark essos infographic
light macarons purple-passion roma
romantic shine vintage walden
westeros white wonderland

主题设置方式:InitOpts 的 theme 字段,指定主题对应的字符串值。

单项设置:

属性 功能 类型 备注 示例
bg_color 背景色 str 覆盖主题中的背景色 'black'

'rgba(123, 200, 88, 0.4)'

画布大小

对应于 InitOpts 的 width 和 height 属性:

opts.InitOpts(width='600px', height='400px')

图例 LegendOpts

属性 功能 类型 备注 示例
is_show 是否展示图例 bool
pos_left 图例距离左部距离 Union[str, Numeric, None] 像素值

比例值

位置描述

20

20%

’top', 'middle', 'bottom'

'left', 'center', 'right'

pos_right 图例距离右部距离
pos_top 图例距离上部距离
pos_bottom 图例距离底部距离

座标轴 AxisOpts

属性 功能 类型 备注 示例
type_ 座标轴类型 str
  • 'value': 数值轴,适用于连续数据。
  • 'category': 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
  • 'time': 时间轴,
  • 'log' 对数轴。
grid_index Grid 索引 Numeric
name 座标轴名称 str
is_show 是否展示 bool
is_scale 是否脱离0刻度 bool
  • true:不包含0刻度
  • false:包含0刻度
boundary_gap 座标轴两边留白 Union[str, bool, None]
  • False:第一个数据画在座标轴上(设置在x轴)
min_ 最标轴最小值 Union[Numeric, str, None]
  • 'dataMin',此时取数据在该轴上的最小值作为最小刻度
  • 'dataMax',此时取数据在该轴上的最大值作为最大刻度
max_ 座标轴最大值
split_number 座标轴分隔段数 Numeric

线条样式 LineStyleOpts

属性 功能 类型 备注 示例
width 线宽 Numeric
type_ 线形 str 'solid', 'dashed', 'dotted'
color 颜色 Union[str, Sequence, None] 'rgb(128, 128, 128)'

'#ccc'

添加方式:

.add_yaxis('线宽为5', y_data_1, linestyle_opts=opts.LineStyleOpts(width=5))

基础使用

设置宽高

在图的构造函数中,指定 InitOpts:

Kline(
    init_opts=opts.InitOpts(
        width=f'{webviewWidth}px'
    ))

需要注意的是,传入值是字符串,并且带有 px 像素单位。

K线图

基础使用

数据格式是一个嵌套 List:

data = [
    // 开盘价收盘价最高价最低价
	[20, 30, 10, 35],
	[40, 35, 30, 55],
	[33, 38, 33, 40],
	[40, 40, 32, 42],
],

网络资源

网络资源

官网

让多个 DateZoom 保持同步:https://stackoverflow.com/questions/44451424/how-to-link-zoom-in-different-charts-in-echarts

【pyecharts教程】应该是全网最全的教程了~