Matplotlib去除蜡烛图中缺失数据的空白部分

4
我创建了一个程序来生成蜡烛图,但是我遇到了问题。我的数据类型是股票,因此只有工作日才有数据。

所以在绘制时,蜡烛图之间会有空隙。

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)

1
DataFormatter旨在显示连续的日期范围,因此最好在绘制x轴时不使用它。 - Martin Evans
你应该在代码中包含示例数据,以便人们可以测试他们的解决方案。 - Keatinge
3个回答

2
你可以设置xticks为连续数字(0,1,2,3...一直到您想要绘制的蜡烛数量),然后设置xticklabels为实际日期以获得更好的可视化效果。请参见我在此问题中的答案,了解详细实现方法。"最初的回答"。

0

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)

欢迎来到SO,我们感谢您的贡献!请在您的答案中添加更多的解释。 - B--rian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接