3

我正在使用 matplotlib 绘制烛台图。

[Q] 默认设置显示贯穿开合框的高低柱。我希望开低框位于“上方”线,这样我只能看到 high-max(open,close) 和 min(open,close)-low 作为线。那可能吗?如何?

我回答了我自己的问题,如果它对其他人有帮助,我会将我的发现与原始问题一起发布。

做到这一点的唯一方法是重写烛光() 函数以绘制两条线而不是一条线。我有一些我正在使用的示例代码来执行此操作。总是很高兴听到更好的方法来做同样的事情。

def fooCandlestick(ax, quotes, width=0.5, colorup='k', colordown='r', 
                   alpha=1.0):
    OFFSET = width/2.0

    lines = []
    boxes = []
    for q in quotes:
        t, op, cl, hi, lo = q[:5]

        box_h = max(op, cl)
        box_l = min(op, cl)
        height = box_h - box_l

        if cl>=op:
            color = colorup
        else:
            color = colordown

        vline_lo = Line2D(
            xdata=(t, t), ydata=(lo, box_l),
            color = 'k',
            linewidth=0.5,
            antialiased=True,
        )
        vline_hi = Line2D(
            xdata=(t, t), ydata=(box_h, hi),
            color = 'k',
            linewidth=0.5,
            antialiased=True,
        )
        rect = Rectangle(
            xy = (t-OFFSET, box_l),
            width = width,
            height = height,
            facecolor = color,
            edgecolor = color,
        )
        rect.set_alpha(alpha)
        lines.append(vline_lo)
        lines.append(vline_hi)
        boxes.append(rect)
        ax.add_line(vline_lo)
        ax.add_line(vline_hi)
        ax.add_patch(rect)
    ax.autoscale_view()

    return lines, boxes

[Q] matplotlib 是否支持设置蜡烛的宽度以及每个烛台之间的间距?

谢谢。

4

1 回答 1

1

我不确定间距,但是:

  • alpha您可以使用kwarg将框的透明度设置为candlestick. 1应该是不透明的。
  • 您可以使用widthkwarg 设置宽度,不确定单位是什么,只需使用它们即可。

例如:

candlestick(ax, quotes, width=0.5, alpha=1.0)

啊,这个答案在两者之间添加了空数据作为增加烛台间间距的技巧: https ://stackoverflow.com/a/9713447/1730674

于 2013-03-21T03:14:54.827 回答