You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python初学者如何绘制股票Candlestick(K线)图?

Python绘制股票K线(蜡烛图)的实现方案

首先澄清:Matplotlib本身没有内置K线图的直接绘制接口,但可以通过其生态扩展库或者第三方财经绘图库快速实现,以下是三种常用的可落地方案:

方案1:使用Matplotlib生态专属金融绘图库 mplfinance(最推荐新手使用)

mplfinance是官方维护的、完全基于Matplotlib开发的金融图表库,专门优化了K线、成交量、均线等常见股票图表的绘制逻辑,不需要手动处理图形元素渲染。

  • 安装命令:pip install mplfinance
  • 最简使用示例:
import pandas as pd
import mplfinance as mpf

# 要求传入的DataFrame需满足:
# 1. 索引为日期格式(需提前用parse_dates解析)
# 2. 包含列名严格为Open、High、Low、Close的四列(开/高/低/收价)
# 可选包含Volume列绘制成交量
stock_data = pd.read_csv("你的股票数据路径.csv", index_col="交易日期", parse_dates=True)

# 绘制K线图,type参数指定为candle即蜡烛图
mpf.plot(
    stock_data,
    type="candle",
    title="标的K线走势",
    ylabel="价格(元)",
    volume=True,  # 同时绘制成交量子图
    mav=(5,10,20) # 同时绘制5、10、20日均线
)

支持自定义蜡烛颜色、添加自定义指标线、标记买卖点等所有Matplotlib支持的个性化配置。

方案2:原生Matplotlib手动实现(适合需要高度自定义渲染逻辑的场景)

如果不想额外安装第三方库,也可以直接用Matplotlib的矩形、线段元素手动拼接K线:
每个K线由两部分组成:

  • 上下影线:用黑色线段连接当日最高价和最低价
  • 实体部分:用矩形表示,收盘价高于开盘价填充红色(上涨),反之填充绿色(下跌)
    核心代码示例:
import matplotlib.pyplot as plt

# ohlc为按时间排序的列表,每个元素为(时间序号, 开盘价, 最高价, 最低价, 收盘价)
ohlc = [
    (1, 10.2, 10.8, 10.1, 10.7),
    (2, 10.7, 11.3, 10.6, 11.2),
    # 后续替换为你的实际数据
]
width = 0.6
fig, ax = plt.subplots(figsize=(12,6))

for idx, open_p, high_p, low_p, close_p in ohlc:
    # 绘制上下影线
    ax.plot([idx, idx], [low_p, high_p], color="black", linewidth=1)
    # 绘制实体部分
    body_height = abs(close_p - open_p)
    body_bottom = min(open_p, close_p)
    color = "red" if close_p > open_p else "green"
    ax.add_patch(plt.Rectangle((idx - width/2, body_bottom), width, body_height, color=color))

ax.set_xlabel("交易日期")
ax.set_ylabel("价格(元)")
plt.show()

方案3:使用交互式绘图库Plotly(适合需要交互式分析的场景)

如果需要可缩放、悬停查看详细数据、支持网页嵌入的K线图,可以使用Plotly库:

  • 安装命令:pip install plotly
  • 使用示例:
import plotly.graph_objects as go
import pandas as pd

stock_data = pd.read_csv("你的股票数据路径.csv", parse_dates=["交易日期"])
fig = go.Figure(data=[go.Candlestick(
    x=stock_data["交易日期"],
    open=stock_data["Open"],
    high=stock_data["High"],
    low=stock_data["Low"],
    close=stock_data["Close"]
)])
fig.update_layout(title="股票K线走势", xaxis_title="交易日期", yaxis_title="价格")
fig.show()

内容的提问来源于stack exchange,提问作者Shreyansh Agrawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:06:05