Дневной подсвечник Matplotlib для нескольких дней неправильно строится - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть python код для построения внутридневных данных на графике с использованием Matplotlib,

def plot(df):
    mpl.style.use('default')
    df['date'] = [x[:17]+'00' for x in df['date'].tolist()]
    data =  [tuple(x) for x in df.to_records(index=False)]
    ohlc_data = []
    for line in data:
        print(line)
        ohlc_data.append((dates.datestr2num(line[0]), np.float64(line[1]), np.float64(line[2]), np.float64(line[3]), np.float64(line[4])))
    fig, ax1 = plt.subplots()
    fig.set_size_inches(17, 10)
    candlestick_ohlc(ax1, ohlc_data, width = 0.5/(24*60), colorup = 'g', colordown = 'r', alpha = 0.8)
    ax1.xaxis.set_major_formatter(dates.DateFormatter('%d:%H:%M:%S'))
    ax1.xaxis.set_major_locator(ticker.MaxNLocator(10))
    plt.xticks(rotation = 30)
    plt.grid()
    plt.xlabel('Date')
    plt.ylabel('Price')
    plt.tight_layout()
    plt.show()

При печати данных за один день, например,

                   date    Open    High     Low   Close
0   2020-02-11 09:15:00  370.50  371.70  369.05  371.70
1   2020-02-11 09:20:00  371.50  372.20  371.30  371.85
2   2020-02-11 09:25:00  371.70  373.45  371.70  373.20
3   2020-02-11 09:30:00  373.45  374.35  373.20  373.55
4   2020-02-11 09:35:00  373.70  373.75  373.00  373.70
5   2020-02-11 09:40:00  373.65  373.70  373.00  373.40
6   2020-02-11 09:45:00  373.30  373.60  373.00  373.40
7   2020-02-11 09:50:00  373.25  374.00  373.20  374.00
8   2020-02-11 09:55:00  373.80  375.50  373.80  375.45
9   2020-02-11 10:00:00  375.45  376.15  374.55  374.80
10  2020-02-11 10:05:00  374.80  375.40  374.65  375.20
11  2020-02-11 10:10:00  375.05  375.20  374.15  374.75
12  2020-02-11 10:15:00  374.65  374.90  373.80  373.95
13  2020-02-11 10:20:00  373.85  374.25  373.55  374.00
14  2020-02-11 10:25:00  373.95  374.30  373.30  373.55

, они отображаются правильно, но при использовании данные за несколько дней, например,

                   date    Open    High     Low   Close
0   2020-02-10 15:05:00  367.80  368.20  367.45  368.00
1   2020-02-10 15:10:00  368.00  368.25  367.25  368.25
2   2020-02-10 15:15:00  368.05  369.85  368.05  369.40
3   2020-02-10 15:20:00  369.40  369.45  368.60  368.75
4   2020-02-10 15:25:00  368.75  369.05  368.50  369.00
5   2020-02-11 09:15:00  370.50  371.70  369.05  371.70
6   2020-02-11 09:20:00  371.50  372.20  371.30  371.85
7   2020-02-11 09:25:00  371.70  373.45  371.70  373.20
8   2020-02-11 09:30:00  373.45  374.35  373.20  373.55
9   2020-02-11 09:35:00  373.70  373.75  373.00  373.70
10  2020-02-11 09:40:00  373.65  373.70  373.00  373.40
11  2020-02-11 09:45:00  373.30  373.60  373.00  373.40
12  2020-02-11 09:50:00  373.25  374.00  373.20  374.00
13  2020-02-11 09:55:00  373.80  375.50  373.80  375.45
14  2020-02-11 10:00:00  375.45  376.15  374.55  374.80
15  2020-02-11 10:05:00  374.80  375.40  374.65  375.20
16  2020-02-11 10:10:00  375.05  375.20  374.15  374.75
17  2020-02-11 10:15:00  374.65  374.90  373.80  373.95
18  2020-02-11 10:20:00  373.85  374.25  373.55  374.00
19  2020-02-11 10:25:00  373.95  374.30  373.30  373.55

не будут отображаться должным образом, я думаю, что ошибка в функции dates.datestr2num, но не может найти решение. У кого-нибудь есть решение для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...