weixin_59094960 2024-02-20 19:07 采纳率: 55.6%
浏览 51
已结题

python中用mplfinance如何做到多股同列?

我想将两个股票的数据做成K线图并保存在同一张图片中

大概是这个样子:

img

用mplfinance库做出的框架代码是这样的:

import pandas as pd
import mplfinance as mpf
import matplotlib.pyplot as plt

# 模拟两个股票的数据
data_stock_a = pd.DataFrame({
    'Open': [100, 101, 102, 103, 102.5],
    'High': [101, 102, 103, 104, 103],
    'Low': [99, 100, 101, 102, 101.5],
    'Close': [101, 102, 103, 102.5, 102],
    'Volume': [1000, 1100, 1200, 1150, 1250]
}, index=pd.date_range(start='2023-01-01', periods=5))

data_stock_b = pd.DataFrame({
    'Open': [200, 201, 202, 203, 202.5],
    'High': [201, 202, 203, 204, 203],
    'Low': [199, 200, 201, 202, 201.5],
    'Close': [201, 202, 203, 202.5, 202],
    'Volume': [2000, 2100, 2200, 2150, 2250]
}, index=pd.date_range(start='2023-01-01', periods=5))


# 创建两个子图的布局
fig, axs = plt.subplots(nrows=2, ncols=1, figsize=(10, 8))
# 在第一个子图上绘制第一个股票的蜡烛图和交易量图
mpf.plot(data_stock_a, type='candle', volume=True, ax=axs[0])
# 在第二个子图上绘制第二个股票的蜡烛图和交易量图
mpf.plot(data_stock_b, type='candle', volume=True, ax=axs[1])
# 调整子图之间的间距
plt.tight_layout()
# 显示图表
plt.show()

然后就报错了:

img

我之前已经试过,不是多股同列的情况下,是能够正常运行的,不知为何这里不能显示成交量。请问我该如何修改代码?图片风格尽量与我所发的K线图一样,均线MA5用虚线。

或者用mplfinance库无法实现的话用其他库亦可,能够达到目的就行了,谢谢

  • 写回答

20条回答 默认 最新

  • Java毕设王 2024-02-21 14:35
    关注
    获得1.50元问题酬金

    引用讯飞星火
    你可以尝试使用以下代码来绘制两个股票的K线图并保存在同一张图片中:

    import pandas as pd
    import mplfinance as mpf
    import matplotlib.pyplot as plt
    
    # 模拟两个股票的数据
    data_stock_a = pd.DataFrame({
        'Open': [100, 101, 102, 103, 102.5],
        'High': [101, 102, 103, 104, 103],
        'Low': [99, 100, 101, 102, 101.5],
        'Close': [101, 102, 103, 102.5, 102],
        'Volume': [1000, 1100, 1200, 1150, 1250]
    }, index=pd.date_range(start='2023-01-01', periods=5))
    
    data_stock_b = pd.DataFrame({
        'Open': [200, 201, 202, 203, 202.5],
        'High': [201, 202, 203, 204, 203],
        'Low': [199, 200, 201, 202, 201.5],
        'Close': [201, 202, 203, 202.5, 202],
        'Volume': [2000, 2100, 2200, 2150, 2250]
    }, index=pd.date_range(start='2023-01-01', periods=5))
    
    # 创建两个子图的布局
    fig, axs = plt.subplots(nrows=2, ncols=1, figsize=(10, 8))
    
    # 在第一个子图上绘制第一个股票的蜡烛图和交易量图
    mpf.plot(data_stock_a, type='candle', volume=axs[0], mav=(5, 'd'), ax=axs[0])
    axs[0].legend(['Volume'])
    
    # 在第二个子图上绘制第二个股票的蜡烛图和交易量图
    mpf.plot(data_stock_b, type='candle', volume=axs[1], mav=(5, 'd'), ax=axs[1])
    axs[1].legend(['Volume'])
    
    # 调整子图之间的间距
    plt.tight_layout()
    
    # 显示图表
    plt.show()
    

    这段代码将会绘制两个股票的K线图,并将它们保存在同一张图片中。同时,均线MA5用虚线表示。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 创建了问题 2月20日