matplotlib 绘制阴影较厚的蜡烛

6ojccjat  于 2023-02-23  发布在  其他
关注(0)|答案(2)|浏览(154)

我需要创建一个基本上是烛台图的图,但我需要上下阴影与主体一样粗,而不是典型的线条。我想我可以用matplotlib绘制它,但我不知道如何操作。我尝试用mplfinance,但没有办法定义阴影的厚度。
你知道吗?原始数据集是yfinance的典型数据集,一个包含日期时间和"open","close","high","low"列的索引。
谢谢你的支持。

xuo3flqw

xuo3flqw1#

这实际上*可能是*可能的mplfinance,但我不完全确定。
看一看the "widths" tutorial,通读整个教程,确保你理解所有变量是如何相互作用的。也就是说,根据你的问题,我猜你最感兴趣的部分(大约3/4的页面)是“手动定制蜡烛,ohlc,音量和线宽”。
查看**增加candle_linewidth和/或减少candle_width**是否有帮助。
您是否可以发布一个绘图示例,说明您希望蜡烛的确切外观?我不能说我曾经见过灯芯(阴影)与蜡烛主体宽度相同的烛台图表。

这就是您想要做的吗?

fruv7luv

fruv7luv2#

下面是一个起始代码,您可以使用box_widthcolors等。我使variable names变得相当明显:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import FancyBboxPatch
from matplotlib.patches import BoxStyle
from matplotlib.lines import Line2D

number_of_candles = 13 # 30minute candles;
box_width = 1.0
off_set = box_width / 2
OHLC_grouped_into_candlesticks = np.zeros([number_of_candles, 4], dtype=float)
Open, High, Low, Close, fancy_box_padding, lines, boxes = 0, 1, 2, 3, 0.0005, [], []
ax = plt.subplot(1, 1, 1)
for indexing_candlesticks in range(number_of_candles):
    top_of_box = np.max([OHLC_grouped_into_candlesticks[indexing_candlesticks, Open], OHLC_grouped_into_candlesticks[indexing_candlesticks, Close]])
    bottom_of_box = np.min([OHLC_grouped_into_candlesticks[indexing_candlesticks, Open], OHLC_grouped_into_candlesticks[indexing_candlesticks, Close]])
    if OHLC_grouped_into_candlesticks[indexing_candlesticks, Close] >= OHLC_grouped_into_candlesticks[indexing_candlesticks, Open]:
        box_color, box_face_color = color_green, color_green_alpha
    else:
        box_color, box_face_color = color_red, color_red_alpha
    low_candlestick = Line2D(xdata=(indexing_candlesticks, indexing_candlesticks), ydata=(OHLC_grouped_into_candlesticks[indexing_candlesticks, Low], bottom_of_box), color=box_color, linewidth=1.0, antialiased=True, zorder=3)
    high_candlestick = Line2D(xdata=(indexing_candlesticks, indexing_candlesticks), ydata=(top_of_box, OHLC_grouped_into_candlesticks[indexing_candlesticks, High]), color=box_color, linewidth=1.0, antialiased=True, zorder=3)
    candlestick = FancyBboxPatch(xy=(indexing_candlesticks - off_set, bottom_of_box), width=box_width, height=np.absolute(top_of_box - bottom_of_box), facecolor=box_color, edgecolor=box_color, zorder=3, boxstyle=BoxStyle("round", pad=fancy_box_padding))
    candlestick.set_alpha(candlesticks_alpha)
    lines.append(low_candlestick)
    lines.append(high_candlestick)
    boxes.append(candlestick)
    ax.add_line(low_candlestick)
    ax.add_line(high_candlestick)
    ax.add_patch(candlestick)
plt.show()

相关问题