How to make color the wick portion of a candlestick stick using matplotlib?

后端 未结 2 1075
清歌不尽
清歌不尽 2021-01-28 07:21

I\'m looking to make the wick portion of a candlestick stick black using matplotlib? I couldn\'t find any mention of it in the documentation, but I\'ve seen pictoral examples sh

2条回答
  •  春和景丽
    2021-01-28 08:16

    As Paul says, A MCVE would assist people in helping you greatly.

    However - just having a quick glance at the source code for the candlestick plotting in matplotlib shows that it uses the colorup/colordown parameter for both the candle and the wick.

    So in order to get them to be different colours you will most likely need to reimplement the method and/or monkey patch the base implementation.

    So in your plotting module, use something along the lines of:

    from matplotlib.lines import Line2D
    from matplotlib.patches import Rectangle
    
    
    def blackwickcandlestick(ax, quotes, width=0.2, colorup='k', colordown='r',
                             alpha=1.0, ochl=True):
    
        OFFSET = width / 2.0
    
        lines = []
        patches = []
        for q in quotes:
            if ochl:
                t, open, close, high, low = q[:5]
            else:
                t, open, high, low, close = q[:5]
    
            if close >= open:
                color = colorup
                lower = open
                height = close - open
            else:
                color = colordown
                lower = close
                height = open - close
    
            vline = Line2D(
                xdata=(t, t), ydata=(low, high),
                color='k',      # This is the only line changed from the default implmentation
                linewidth=0.5,
                antialiased=True,
            )
    
            rect = Rectangle(
                xy=(t - OFFSET, lower),
                width=width,
                height=height,
                facecolor=color,
                edgecolor=color,
            )
            rect.set_alpha(alpha)
    
            lines.append(vline)
            patches.append(rect)
            ax.add_line(vline)
            ax.add_patch(rect)
        ax.autoscale_view()
    
        return lines, patches
    
    
    import matplotlib.finance as mpl_finance
    
    mpl_finance._candlestick = blackwickcandlestick
    

    Then elsewhere in this module you can use the mpl_finance.candlestick_ohlc(...) plotting functions.

提交回复
热议问题