簡體   English   中英

當使用外部軸方法使用 mplfinance 庫對 plot 多個燭台圖表進行處理時,如何在燭台圖表內處理 plot 成交量?

[英]When using external axes method to plot multiple candlestick charts using mplfinance library, how to plot volume inside the candlestick chart?

我正在做的項目需要代碼 plot 使用 mplfinance 庫的幾個數字中的 300 多個燭台圖表。 我知道這只能使用外軸方法來完成,因為它提供了更多的靈活性並且理論上可以 plot 個無限圖表。

我正在使用的當前代碼如下,繪制的圖表如下所示:

import mplfinance as mpf

s = mpf.make_mpf_style(base_mpf_style='yahoo', rc={'font.size': 6})
fig = mpf.figure(figsize=(34, 13.2), style=s, tight_layout=True)

ax_p = fig.add_subplot(n_rows, n_cols, pos_price)
ax_v = fig.add_subplot(n_rows, n_cols, pos_vol, sharex=ax_p)

fig, ax_list = mpf.plot(resampled_df, type='candle', ax=ax_p, volume=ax_v, show_nontrading=False,
                     datetime_format='%a %d-%m-%y', xrotation=0, returnfig=True)

我的代碼繪制的數百張圖表中的 6 個示例圖表的屏幕截圖:

在此處輸入圖像描述

上面代碼繪制的兩個圖表的截圖如下: 在此處輸入圖像描述

如您所見,成交量圖表繪制在燭台圖表下方的單獨圖表中。 我很難找到將交易量移動到燭台圖表的解決方案,mplfinance 文檔問題 114中有一篇類似的帖子解釋了如何執行此操作......但我發現新人很難理解像我一樣的圖書館。

如果您能發布詳細的代碼來執行此操作,將不勝感激!

2021 年 2 月 12 日更新:

我根據@Daniel 的建議修改了代碼,使用add_axes()而不是add_subplot() ,現在繪制多個圖表時,交易量位於燭台圖表的底部。 美麗的。 答案被接受。

在此處輸入圖像描述

ax_intra_day_candle = fig.add_axes([x_pos, y_pos, ax_width, ax_height])
ax_intra_day_candle.set_title(title)
ax_intra_day_volume = fig.add_axes([x_pos, y_pos - ax_vol_height, ax_width, ax_vol_height], sharex=ax_intra_day_candle)
mpf.plot(intra_day_df, type='candle', ax=ax_intra_day_candle, volume=ax_intra_day_volume, show_nontrading=False,
                 datetime_format='%a %m-%d', xrotation=0)

我將假設您的要求是讓交易量和燭台共享 與此圖像類似的相同 x 軸。

最簡單的方法是使用fig.add_axes() (而不是fig.add_subplot()

通過這種方式,您可以准確控制每個軸在圖中的位置。 您可以在此處的 mplfinance 代碼中看到這一點。

基本思想是,您指定每個 Axes object占總圖的位置,指示 Axes 的左下角以及它的寬度和高度

當您希望兩個 Axes 對象接觸且它們之間沒有空間時,您可以相應地指定位置和寬度/高度,以便下部 Axes 的頂部和上部 Axes 的底部完全相遇。

因此,例如,要將兩個大小相同的 Axes 完全堆疊在一起,假設在圖的左上象限中,您將擁有:

# ax = fig.add_axes([left,bottom,width,height])

ax1 = fig.add_axes([0.05,0.75,0.5,0.25])
ax2 = fig.add_axes([0.05,0.50,0.5,0.25])
  • 左側的 0.05 空間為 y 軸標簽留出了空間。
  • ax1 從底部向上四分之三 (0.75) 開始,向右延伸一半 (0.5),高度為 0.25(將其帶到圖的最頂部)。
  • ax2 從底部開始向上一半 (0.50),向右延伸一半 (0.5),高度為 0.25 ,正好到達 ax1 的最底部

高溫高壓


這是一個更具體的示例,以及結果。 請注意蠟燭圖和交易量 plot 一起僅占據圖的左上象限

fig = mpf.figure(figsize=(8,8),style='yahoo')

ax1 = fig.add_axes([0.05,0.75,0.5,0.25])
ax2 = fig.add_axes([0.05,0.50,0.5,0.25])

mpf.plot(df,type='candle',ax=ax1,volume=ax2)
mpf.show()

在此處輸入圖像描述

不需要這么長的代碼使用下面的代碼假設你有體積和數據使用 mplfinance 在圖表中繪制

mpf.plot(數據,type='candle',style='yahoo',volume=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM