0

尝试添加图像和价格标签并按时添加更多空间,看起来 ylim= 处理了这一点,但是当我添加它时,我的整个图表消失了。

    market_colors = mpf.make_marketcolors(
        base_mpf_style="charles"
    )
    rc = {
        "axes.labelcolor": "none",
        "axes.spines.bottom": True,
        "axes.spines.left": False,
        "axes.spines.right": False,
        "axes.spines.top": False,
        "font.size": 10,
    }
    styles = mpf.make_mpf_style(
        base_mpf_style="nightclouds",
        marketcolors=market_colors,
        gridstyle="",
        rc=rc
    )

    filledShape = {
        "y1": df['Close'].values,
        "facecolor": "#2279e4"
    }

    (mpf.plot(df, type='line',
              title='Test',
              linecolor='white',
              style=styles,
              volume=True,
              figsize=(8, 6),
              figscale=0.5,
              fill_between=filledShape, tight_layout=True,
              scale_padding={'left': 1, 'top': 5, 'right': 1, 'bottom': 2}
              ))
4

2 回答 2

1

我知道在 matplotlib 图上显示图像的三种技术:

  1. 轴.imshow()
  2. 图.figimage()
  3. 将图像放入AnnotationBbox

在使用 mplfinance 方面,我会说技术一,调用Axes.imshow()可能是最简单的:

步骤1:

对于上述所有三种技术,当您调用mpf.plot()set kwarg时returnfig=True

fig axlist = mpf.plot(df,...,returnfig=True)

这将使您能够访问 mplfinance Figure 和 Axes 对象

第2步:

现在在您想要图像/徽标的位置创建一个新的 Axes 对象:

# Note: [left,bottom,width,height] are in terms of fraction of the Figure.
# For example [0.05,0.08,0.10,0.06] means:
#  the lower/left corner of the Axes will be located: 
#    5% of the way in from the left
#    8% down from the top,
#  and the Axes will be
#    10% of the Figure wide and
#    6% of the Figure high.

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

第 3 步:

读入图片:

import Image
im = Image.open('image_file_name.png')

第4步:

在新创建的 Axes 上调用 imshow(),并转动轴线:

logo_axes.imshow(im)
logo_axes.axis('off')

第 5 步:

由于returnfig=True导致 mplfinance显示该图,请致电mpf.show()

mpf.show()
于 2021-10-27T04:08:50.050 回答
0

我不确定这个答案是否会对您有所帮助,因为我不确定您要添加什么样的图像。我假设您想添加公司徽标或类似的东西,所以我做了一些研究并找到了您是否可以向 mpf 添加水印的答案我将此答案用作指南,并将stackoveflow.com上使用的图标添加到图表中。但是,不可能将它们添加到轴上,所以我不得不将它们添加到无花果中。我已更改样式以添加图像。

img = plt.imread('./data/se-icon.png')

market_colors = mpf.make_marketcolors(
        base_mpf_style="charles"
    )
rc = {
    "axes.labelcolor": "none",
    "axes.spines.bottom": True,
    "axes.spines.left": False,
    "axes.spines.right": False,
    "axes.spines.top": False,
    "font.size": 10,
}
styles = mpf.make_mpf_style(
    base_mpf_style="yahoo",# nightclouds
    marketcolors=market_colors,
    gridstyle="",
    rc=rc
)

filledShape = {
    "y1": df['Close'].values,
    "facecolor": "#2279e4"
}

fig, axes = mpf.plot(df, type='line',
                     title='Test',
                     linecolor='white',
                     style=styles,
                     volume=True,
                     figsize=(8, 6),
                     figscale=0.5,
                     fill_between=filledShape,
                     tight_layout=True,
                     scale_padding={'left': 1, 'top': 5, 'right': 1, 'bottom': 2},
                     returnfig=True
)

#axes[0].imshow(img)
#height = img.shape[1]

fig.figimage(img, 0, fig.bbox.ymax - height*1.5)
plt.show()

在此处输入图像描述

于 2021-10-27T04:06:06.777 回答