3

ローソク足チャートを描画するためにmatplotlibを使用しています。

[Q] デフォルト設定では、開閉ボックスを通過する高低バーが表示されます。オープンローボックスをラインの「上」に配置して、high-max(open,close) と min(open,close)-low のみをラインとして表示することをお勧めします。それは可能ですか?どのように?

私は自分の質問に答えて、他の人に役立つ場合は元の質問で私の発見を投稿しています。

これを行う唯一の方法は、candletsick() 関数を書き直して、1 本ではなく 2 本の線を描画することです。これを行うために使用しているサンプルコードがいくつかあります。同じことを行うためのより良い方法を聞くことは常に幸せです.

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

間隔についてはわかりませんが、次のようになります。

  • alphakwargを使用してボックスの透明度をに設定できますcandlestick1不透明にする必要があります。
  • widthkwargを使用して幅を設定できます。ユニットが何であるかわからない場合は、それらを試してみてください。

例えば:

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

ああ、この回答は、キャンドルスティック間の間隔を広げるためのハックとして、間に空のデータを追加します: https ://stackoverflow.com/a/9713447/1730674

于 2013-03-21T03:14:54.827 に答える