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

从零创建带正方形网格的K线图,适配江恩工具的库选型咨询

带正方形网格的K线图实现与江恩工具库选择

一、从零创建带正方形网格的K线图

用Matplotlib+Pandas就能从零实现,核心是让坐标轴比例为1:1,这样网格自然就是正方形。以下是完整代码:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

# 生成示例K线数据(实际使用时可替换为真实行情数据)
data = pd.DataFrame({
    'Open': [30, 32, 31, 33, 35],
    'High': [32, 33, 32, 36, 37],
    'Low': [29, 31, 30, 32, 34],
    'Close': [32, 31, 33, 35, 36],
}, index=pd.date_range('2024-01-01', periods=5))

# 创建画布,关键设置:坐标轴比例为1:1
fig, ax = plt.subplots(figsize=(10, 10))
ax.set_aspect('equal')  # 让x、y轴单位长度一致,保证网格是正方形

# 逐根绘制K线
for idx_pos, (date, bar) in enumerate(data.iterrows()):
    # 确定K线颜色:收涨红,收跌绿
    color = 'crimson' if bar['Close'] >= bar['Open'] else 'forestgreen'
    # 绘制K线实体
    body_height = abs(bar['Close'] - bar['Open'])
    body_y = min(bar['Open'], bar['Close'])
    ax.add_patch(Rectangle((idx_pos - 0.3, body_y), 0.6, body_height, 
                          facecolor=color, edgecolor='black'))
    # 绘制上下影线
    ax.plot([idx_pos, idx_pos], [bar['Low'], bar['High']], color='black')

# 配置坐标轴
ax.set_xticks(range(len(data)))
ax.set_xticklabels(data.index.strftime('%Y-%m-%d'), rotation=45)
ax.set_ylabel('Price')
ax.set_title('K线图(正方形网格)')

# 添加正方形网格
ax.grid(True, linestyle='--', alpha=0.7)

plt.tight_layout()
plt.show()

如果用真实行情数据,建议把x轴换成交易日的序号(而非日期对象),这样更容易控制1:1的比例——因为日期轴的单位是时间,和价格轴的数值单位不好直接对齐,用序号作为x轴能更精准地实现正方形网格。

二、适合实现江恩工具的库选择

江恩45度角(时间=价格)、江恩正方形需要精准的坐标控制和自定义图形绘制能力,各库的适配性如下:

Bokeh → 最优选择

Bokeh的底层绘图API非常灵活,完全支持自定义直线、多边形、圆形等几何图形,能精准绘制江恩角度线、正方形网格。同时它的交互式特性(缩放、拖拽)很适合调整江恩工具的位置,而且可以轻松设置1:1的坐标轴比例,完美匹配江恩“时间=价格”的核心逻辑。

Plotly → 次优选择

Plotly支持添加自定义形状(直线、矩形),能快速实现江恩工具的绘制,也支持坐标轴比例调整。它的优势是自带丰富的交互功能,文档和社区资源也很充足,但自定义程度略逊于Bokeh。

mplfinance → 不推荐

mplfinance是专门做K线快速绘制的封装库,内置功能都是针对标准K线的,自定义几何图形的能力极差,很难精准控制江恩工具的位置和比例,不适合做这类需求。

bqplot → 仅限Jupyter环境

bqplot是Jupyter生态下的交互式绘图库,支持自定义标记和线条,也能控制坐标轴比例,但生态成熟度远不如Bokeh和Plotly,文档和案例较少,遇到问题很难找到解决方案。

cufflinks是Plotly的上层封装,主打简化金融绘图,但进一步限制了自定义能力,几乎无法实现复杂的江恩几何工具。

总结:优先选Bokeh;如果追求快速上手的交互式效果,选Plotly;静态绘图的话,用Matplotlib也能实现,但交互性差。

内容的提问来源于stack exchange,提问作者Alan Wong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:22:43