mplfinance
是基于 Matplotlib 的 Python 库,专为金融数据可视化设计,提供了简洁的 API 用于创建专业的金融图表。以下是其核心功能与使用示例:
主要功能
-
K线图(Candlestick Charts)
展示开盘价、收盘价、最高价、最低价,直观反映价格波动。 -
OHLC 图表
简化版 K 线图,用线段表示价格区间。 -
成交量图表
显示交易量与价格的关系,支持与价格图表叠加或分屏显示。 -
移动平均线
支持多种周期的 SMA、EMA 等均线指标。 -
技术指标叠加
可添加 MACD、RSI、Bollinger Bands 等技术指标。 -
样式定制
提供预设主题(如yahoo
、binance
),支持自定义颜色、字体、网格等。
基础用法
需使用 Pandas DataFrame 存储金融数据,格式要求:
- 索引为 DatetimeIndex
- 包含 Open
、High
、Low
、Close
列(大小写敏感)
- 可选 Volume
列
以下是一个简单示例:
import pandas as pd
import mplfinance as mpf
# 示例数据(日期、开盘、最高、最低、收盘、成交量)
data = [
['2023-01-01', 100, 105, 98, 102, 1000],
['2023-01-02', 102, 108, 101, 107, 1200],
['2023-01-03', 107, 110, 106, 108, 900],
['2023-01-04', 108, 112, 105, 106, 1100],
['2023-01-05', 106, 109, 103, 104, 1300]
]
# 转换为 DataFrame 并设置索引
df = pd.DataFrame(data, columns=['Date', 'Open', 'High', 'Low', 'Close', 'Volume'])
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)
# 绘制 K 线图(带成交量)
mpf.plot(df, type='candle', volume=True, title='Stock Price', ylabel='Price', ylabel_lower='Volume')
进阶功能
1. 添加移动平均线
mpf.plot(df, type='candle', mav=(5, 10), volume=True) # 5日和10日均线
2. 自定义样式
style = mpf.make_mpf_style(
base_mpf_style='yahoo', # 预设雅虎风格
marketcolors=mpf.make_marketcolors(
up='g', down='r', # 上涨绿色,下跌红色
wick={'up': 'blue', 'down': 'orange'},
volume='in' # 成交量颜色与价格一致
),
gridcolor='lightgray',
y_on_right=True
)
mpf.plot(df, type='candle', style=style, title='Custom Style')
3. 添加标记和注释
# 在特定日期添加买入/卖出标记
apdict = [
mpf.make_addplot(df['Close'], scatter=True, markersize=200, marker='^', color='g'), # 买入标记
mpf.make_addplot(df['Close'].shift(-2), scatter=True, markersize=200, marker='v', color='r') # 卖出标记
]
mpf.plot(df, type='candle', addplot=apdict)
安装
pip install mplfinance
注意事项
- 数据格式:确保索引为
DatetimeIndex
,否则会报错。 - 版本兼容:
mplfinance
从matplotlib.finance
分支而来,注意与旧版代码的差异。 - 性能:处理大量数据(如数万条记录)时可能变慢,可先进行数据采样。
更多高级用法(如子图布局、技术指标计算)可参考官方文档:https://github.com/matplotlib/mplfinance