Есть данные в txt документе разделенные с помощью символов(, ; ( ) ). Циклом for по строкам ищу нужное имя, выбираю первые значения графика (1-ая и единственная свеча). Далее с данными рисую график (с подставными значениями все работало). На выходе у меня:
Код:
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: []
Как эту черную мазню решить, не знаю. Помогите пожалуйста.