Dimpik
@Dimpik

Не получается построить график японские свечи в python с помощью matplotlib, как решить?

Есть данные в txt документе разделенные с помощью символов(, ; ( ) ). Циклом for по строкам ищу нужное имя, выбираю первые значения графика (1-ая и единственная свеча). Далее с данными рисую график (с подставными значениями все работало). На выходе у меня:
61f4b6535c057028220971.png

Код:
import datetime

import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
import os
import re
from matplotlib.dates import MONDAY, DateFormatter, DayLocator, WeekdayLocator
import fileinput

from mpl_finance import candlestick_ohlc

Time = ""
Open = 0.0;
High = 0.0;
Low = 0.0;
Close = 0.0;


Name = "3M"
Index = "1"
Days = 1

data = pd.DataFrame(columns = ["Time", "Open", "High", "Low", "Close"])

F = open(os.path.abspath(os.curdir) +"\\Name-Prices_Files\\" + str(Index) + ".txt", "r")

for line in F:
    if re.match(Name + ":.+", line) != None:

        Time = re.search(r"\d+/\d{2}/\d{2}-\d{2}:\d{2}", line).group(0)
        Open = re.search(r"[^\(]\d+\.\d[^;\)]", line).group(0)
        Open = re.sub(",", "", Open)
        High = re.search(r"\(\d+\.\d", line).group(0)
        High = re.sub("\(", "", High)
        Low = re.search(r"\d+\.\d\)", line).group(0)
        Low = re.sub("\)", "", Low)
        Close = re.search(r"\d+\.\d;", line).group(0)
        Close = re.sub(";", "", Close)
        Open = float(Open)
        High = float(High)
        Low = float(Low)
        Close = float(Close)

        data.append({"Time": Time, "Open": Open, "High": High, "Low": Low, "Close": Close}, ignore_index=True)


F.close()

data["Time"] = pd.to_datetime(data["Time"], errors = 'raise', format = "%Y/%m/%d-%H:%M")

mondays = WeekdayLocator(MONDAY)      
alldays = DayLocator()              
weekFormatter = DateFormatter('%b %d')
dayFormatter = DateFormatter('%d')


#data = data[(data["Time"] >= data["Time"].iloc[0]) & (data["Time"] <= data["Time"].iloc[len(data)-1])]

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(weekFormatter)
ax.xaxis.set_minor_formatter(dayFormatter)

candlestick_ohlc(ax, zip(mdates.date2num(data["Time"]),
                         data['Open'], data['High'],
                         data['Low'], data['Close']), width=0.5, colorup='#53c156', colordown='#ff1717')
ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')

fig.savefig(''+os.path.abspath(os.curdir)+'\\Graphs\\'+ Name +'.png', bbox_inches='tight')
print(data)
plt.close(fig)


Сам txt файл:

Apple:2021/12/11-20:35
3M:2021/12/11-20:37,100.8,(109.6,98.6),106.0;
Meta:2021/12/11-20:36

Вывод python:

Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Locator attempting to generate 4018 ticks ([10775.0, ..., 14792.0]), which exceeds Locator.MAXTICKS (1000).
Empty DataFrame
Columns: [Time, Open, High, Low, Close]
Index: []

Как эту черную мазню решить, не знаю. Помогите пожалуйста.
  • Вопрос задан
  • 353 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы