mplfinance-金融数据可视化设计


mplfinance 是基于 Matplotlib 的 Python 库,专为金融数据可视化设计,提供了简洁的 API 用于创建专业的金融图表。以下是其核心功能与使用示例:

主要功能

  1. K线图(Candlestick Charts)
    展示开盘价、收盘价、最高价、最低价,直观反映价格波动。

  2. OHLC 图表
    简化版 K 线图,用线段表示价格区间。

  3. 成交量图表
    显示交易量与价格的关系,支持与价格图表叠加或分屏显示。

  4. 移动平均线
    支持多种周期的 SMA、EMA 等均线指标。

  5. 技术指标叠加
    可添加 MACD、RSI、Bollinger Bands 等技术指标。

  6. 样式定制
    提供预设主题(如 yahoobinance),支持自定义颜色、字体、网格等。

基础用法

需使用 Pandas DataFrame 存储金融数据,格式要求: - 索引为 DatetimeIndex - 包含 OpenHighLowClose 列(大小写敏感) - 可选 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

注意事项

  1. 数据格式:确保索引为 DatetimeIndex,否则会报错。
  2. 版本兼容mplfinancematplotlib.finance 分支而来,注意与旧版代码的差异。
  3. 性能:处理大量数据(如数万条记录)时可能变慢,可先进行数据采样。

更多高级用法(如子图布局、技术指标计算)可参考官方文档:https://github.com/matplotlib/mplfinance