Python Matplotlib删除烛台上缺失数据的空间

Python Matplotlib删除烛台上缺失数据的空间,python,matplotlib,candlestick-chart,Python,Matplotlib,Candlestick Chart,我创建了一个生成烛台图的程序,但我有一个问题。我的数据类型是stock,所以它只有一个工作日的数据 所以在我画出来之后,它在烛台之间有空间 我怎样才能去掉这些 这是我的绘图仪功能代码: ohlc = [] date = [] while (loop < candleLength) : date.append(dateToFloat(stockData['date'][loop])) append = date[loop], stockData['open'][loop],

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

所以在我画出来之后,它在烛台之间有空间

我怎样才能去掉这些

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

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)
ohlc=[]
日期=[]
而(循环<烛光长度):
date.append(dateToFloat(stockData['date'][loop]))
append=date[loop],stockData['open'][loop],stockData['high'][loop],stockData['low'][loop],stockData['close'][loop]
ohlc.追加(追加)
循环+=1
图=plt.图()
ax=plt.子图2Grid((1,1)、(0,0))
烛台(ax,ohlc,宽度=0.66,上色='4DF4D',下色='ff471a')
对于ax.xaxis.get_ticklabels()中的标签:
标签。设置旋转(45)
ax.xaxis.set\u major\u格式化程序(mdates.DateFormatter(“%Y-%m-%d”))
ax.xaxis.set\u major\u定位器(周一)
ax.grid(真)
查看此链接:


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

尝试将其添加到代码中

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)
将matplotlib.ticker导入为ticker
ohlc=[]
日期=[]
而(循环<烛光长度):
date.append(dateToFloat(stockData['date'][loop]))
append=date[loop],stockData['open'][loop],stockData['high'][loop],stockData['low'][loop],stockData['close'][loop]
ohlc.追加(追加)
循环+=1
图=plt.图()
ax=plt.子图2Grid((1,1)、(0,0))
烛台(ax,ohlc,宽度=0.66,上色='4DF4D',下色='ff471a')
对于ax.xaxis.get_ticklabels()中的标签:
标签。设置旋转(45)
def mydate(x,位置):
尝试:
返回mdate[int(x)].strftime(“%Y-%m-%d”)
除索引器外:
返回“”
ax.xaxis.set\u major\u格式化程序(ticker.FuncFormatter(mydate))
ax.xaxis.set\u major\u定位器(周一)
ax.grid(真)

您可以设置
xticks
序列号(0、1、2、3…最多为您要绘制的蜡烛数),然后设置
xticklabels
实际日期,以实现更好的可视化效果。有关详细的实现,请参阅我的答案。

数据格式化程序
旨在显示连续的日期范围,因此最好在不使用此选项的情况下绘制x轴。您应该在代码中包含示例数据,以便人们可以测试其解决方案欢迎使用so,我们感谢您的输入!请在你的回答中再加一些解释。