Matplotlib删除烛台的空间以查找缺失的数据

时间:2016-06-16 07:35:47

标签: python matplotlib candlestick-chart

我创建了一个生成烛台图表的程序,我遇到了问题。我的数据类型是库存,所以它只有工作日的数据。

所以在我绘制之后,它在烛台之间有空格。

result image

如何删除这些?

这是我的绘图仪功能代码:

ohlc = []
date = []
while (loop < candleLength) :
    date.append(dateToFloat(stockData['date'][loop]))
    append = date[loop], stockData['open'][loop], stockData['high'][loop], stockData['low'][loop], stockData['close'][loop]
    ohlc.append(append)
    loop += 1

fig = plt.figure()
ax = plt.subplot2grid((1,1), (0,0))

candlestick_ohlc(ax, ohlc, width=0.66, colorup='#4dff4d', colordown='#ff471a')


for label in ax.xaxis.get_ticklabels():
    label.set_rotation(45)

ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
ax.xaxis.set_major_locator(mondays)
ax.grid(True)

3 个答案:

答案 0 :(得分:1)

您可以设置xticks个连续数字(0、1、2、3 ...最多为要绘制的蜡烛数),然后设置xticklabels实际日期以实现更好的可视化。请参阅我对此question的回答以获取详细的实现。

答案 1 :(得分:0)

点击此链接:How do I plot only weekdays using Python's matplotlib candlestick?

这应该回答你的问题。我也在我的代码中使用它。

答案 2 :(得分:0)

尝试将其添加到您的代码中。

def mydate(x,pos):
    try:
        return mdates[int(x)].strftime('%Y-%m-%d')
    except IndexError:
        return ''

ax.xaxis.set_major_formatter(ticker.FuncFormatter(mydate))

赞:

import matplotlib.ticker as ticker

ohlc = []
date = []
while (loop < candleLength) :
    date.append(dateToFloat(stockData['date'][loop]))
    append = date[loop], stockData['open'][loop], stockData['high'][loop], stockData['low'][loop], stockData['close'][loop]
    ohlc.append(append)
    loop += 1

fig = plt.figure()
ax = plt.subplot2grid((1,1), (0,0))

candlestick_ohlc(ax, ohlc, width=0.66, colorup='#4dff4d', colordown='#ff471a')


for label in ax.xaxis.get_ticklabels():
    label.set_rotation(45)


def mydate(x,pos):
    try:
        return mdates[int(x)].strftime('%Y-%m-%d')
    except IndexError:
        return ''

ax.xaxis.set_major_formatter(ticker.FuncFormatter(mydate))

ax.xaxis.set_major_locator(mondays)
ax.grid(True)