如果我理解正确,你最担心的问题之一就是每日数据之间的间隔。
为了消除这些间隔,一种方法是人为地“平均分配”你的数据(但当然会失去任何日内时间指示)。
无论如何,以这种方式进行操作,你将能够获得类似于你提出的示例图表的图表。
以下是有注释的代码和结果图表。
import numpy as np
import matplotlib.pyplot as plt
import datetime
from matplotlib.finance import candlestick
from matplotlib.dates import num2date
data = np.loadtxt('finance-data.txt', delimiter=',')
ndays = np.unique(np.trunc(data[:,0]), return_index=True)
xdays = []
for n in np.arange(len(ndays[0])):
xdays.append(datetime.date.isoformat(num2date(data[ndays[1],0][n])))
data2 = np.hstack([np.arange(data[:,0].size)[:, np.newaxis], data[:,1:]])
fig = plt.figure(figsize=(10, 5))
ax = fig.add_axes([0.1, 0.2, 0.85, 0.7])
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.tick_params(axis='both', direction='out', width=2, length=8,
labelsize=12, pad=8)
ax.spines['left'].set_linewidth(2)
ax.spines['bottom'].set_linewidth(2)
ax.set_xticks(data2[ndays[1],0])
ax.set_xticklabels(xdays, rotation=45, horizontalalignment='right')
ax.set_ylabel('Quote ($)', size=20)
ax.set_ylim([177, 196])
candlestick(ax, data2, width=0.5, colorup='g', colordown='r')
plt.show()
![graph](https://i.imgur.com/bpvHM.png)