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'
|
画布大小
对应于 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 |
|
|
grid_index | Grid 索引 | Numeric | ||
name | 座标轴名称 | str | ||
is_show | 是否展示 | bool | ||
is_scale | 是否脱离0刻度 | bool |
|
|
boundary_gap | 座标轴两边留白 | Union[str, bool, None] |
|
|
min_ | 最标轴最小值 | Union[Numeric, str, None] |
|
|
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],
],
网络资源
- Echarts K线图使用介绍:ECharts K 线图
- PyEcharts K线图 Demo 集合:K 线图 Candlestick
- Candlestick - Professional_kline_chart:功能非常强大的示例,需要认真学习
网络资源
让多个 DateZoom 保持同步:https://stackoverflow.com/questions/44451424/how-to-link-zoom-in-different-charts-in-echarts