← 返回学习中心
目录
一个关键误区:Python 不"显示"图
整条链路:数据 → HTML → 浏览器
同一份豆粕数据,两种画法对照
ECharts / pyecharts / matplotlib 都是啥
三种写法的代码对照
该用哪个?一句话决策
工具选型路线(给你的建议)
1 一个关键误区
很多人以为"Python 画图"是 Python 自己把图显示出来。其实要分两种情况:
静态图 :matplotlib 把图画成一张图片文件(PNG) ,你看的是图片。交互图 :Python 只是生成一个 HTML 文件 ,真正把图画到屏幕、还能让你缩放悬停的,是浏览器里的 JavaScript(ECharts) 。
所以你上次看到"最终产物是个 HTML"——这不是多此一举,而是交互图的必然载体 :能交互的图只能活在浏览器里。
2 整条链路
不管哪种画法,前半段都一样(Python 拿数据、算指标),区别只在最后"画"这一步交给谁:
取数 akshare 拉行情 Python
→
算指标 MA5/MA20、信号 Python
→
生成文件 PNG 或 HTML Python
→
画出来 看图片 / 浏览器渲染 你 / 浏览器
关键转折在第 3 步:交互图这里写出的是 HTML,里面同时装着数据 和给 ECharts 的画图指令 。Python 写完文件就"退场"了,后面是浏览器接手。
3 同一份豆粕数据,两种画法
下面两张图用的是完全相同 的豆粕(M0)最近 150 个交易日数据,只是画法不同。先感受差别:
🖼️ 静态图 · matplotlib / mplfinance 一张图片,不能交互
👆 这是一张 PNG 图片。优点:截图就能发、写报告直接贴、加载快。缺点:死的 ——不能放大局部、不能悬停看某天数值、不能切换品种。
🖱️ 交互图 · ECharts 可缩放 / 悬停 / 拖动
👆 这是浏览器现场画的。把鼠标移上去看某天数值,用底部滑块或滚轮缩放局部 ——同样的数据,活了。代价是需要浏览器、需要加载 ECharts 库。
4 这些名字都是啥
名字 是什么 用什么语言写 产物
matplotlib Python 最经典的画图库,万能但偏静态 Python 图片 / 窗口
mplfinance 基于 matplotlib,专画金融 K 线 的封装,一行画蜡烛+均线+成交量 Python 图片
ECharts 浏览器里的交互 图表库(Apache 开源,原百度) JavaScript 网页里的图
pyecharts ECharts 的"Python 包装",纯写 Python 就能生成 ECharts 的 HTML ,不用碰 JS Python HTML
关系记一句话:mplfinance 是 matplotlib 的 K 线版;pyecharts 是 ECharts 的 Python 版。 上次的交互图我手写了 JavaScript(为了让你看清原理),实际项目里多数人直接用 pyecharts,纯 Python 出活。
5 三种写法的代码对照
假设数据已经在 df 里(akshare 取的豆粕),画同样一张 K 线图:
A. mplfinance —— 出静态图片(最省事)
# df 需要 Open/High/Low/Close 列,索引是日期
import mplfinance as mpf
mpf.plot(df, type="candle" , mav=(5, 20), volume=True,
savefig="豆粕.png" ) # 直接存成图片
B. pyecharts —— 纯 Python 出交互 HTML(推荐进阶)
from pyecharts.charts import Kline
from pyecharts import options as opts
k = (Kline()
.add_xaxis(df["日期" ].tolist())
.add_yaxis("豆粕" , df[["开盘价" ,"收盘价" ,"最低价" ,"最高价" ]].values.tolist())
.set_global_opts(datazoom_opts=[opts.DataZoomOpts()]))
k.render("豆粕.html" ) # 生成可交互的 HTML
C. 手写 ECharts —— 自由度最高(我上次用的)
// 在 HTML 里,把数据塞给 ECharts
const chart = echarts.init(document.getElementById('chart' ));
chart.setOption({
xAxis:{type:'category' , data:dates},
yAxis:{scale:true},
series:[{type:'candlestick' , data:kline}]
});
给你的建议: 学习阶段先用 A(mplfinance) ——两行出图,专注看走势和信号,别被画图细节拖住。等你想要"看盘式"地缩放探索、或想把图嵌进这个 HTML 知识库,再上 B(pyecharts) 。手写 JS(C)等以后真有定制需求再说。
6 该用哪个?
你的场景 选它
在终端/Jupyter 里快速瞄一眼走势、跑策略时看结果 mplfinance(静态)
写复盘报告、发给别人、贴进文档 mplfinance 存 PNG
想缩放、悬停、切换品种,"看盘式"探索 pyecharts / ECharts(交互)
要把图嵌进这个 HTML 学习库 pyecharts / ECharts
一句话:akshare 管"拿数据",画图库管"画成图",HTML 是交互图必然的载体。 静态看得快,交互玩得深,按需要选。
7 工具选型路线(给你的建议)
别被这么多名字吓到。按"现在该用哪个"排一下,照着走就行:
工具 定位 对你的建议
mplfinance matplotlib 的 K线版,两行出静态图 ✅ 现在用 ,学习期主力,专注看走势和信号
ECharts (已就绪)浏览器里的交互图 🟦 模板我已帮你搭好,想"玩着看"时打开
pyecharts 纯 Python 生成 ECharts 的 HTML ⏳ 缓一缓 ,等你要批量产交互页、不想碰 JS 时再学,半小时上手
TradingView 图表库 交易级专业看盘图表(实时、画线) 🚩 专业级 ,现在用不上,知道它是"专业看盘那种"即可
纠正一个常见误解: 专业看盘软件(文华、同花顺、币安、TradingView 网页版)的 K 线,多数不是 ECharts ,而是为"tick 级实时、海量K线流畅缩放"专门优化的引擎(行业标准是 TradingView 系)。ECharts 能画 K 线、适合学习和展示,但和"交易级看盘图"是两类东西。
一句话路线: 现在 mplfinance 快速看图 → 想交互探索用 ECharts (已就绪)→ 以后批量产页再学 pyecharts → TradingView 是专业级,放最远。重心永远是"看懂趋势和信号",不是画图技术。
金融学习笔记 · 数据可视化入门 · 配套:《AKShare 期货数据入门教程》《K线均线趋势交易教程》 图表数据来源 AKShare,仅供学习