Как организовать даты на графике - PullRequest
0 голосов
/ 07 мая 2020

У меня проблема с моим кодом, я хотел иметь график со средними значениями (moyenne в моем коде) и enveloppes, которые учитывают все даты, но когда я сгенерировал свой код, даты не были дезорганизованы и enveloppes не приняли во внимание все даты.

Вот код:

def question8(ticker, start_date, end_date, source, pourcentage):
    PROJET = sqlite3.connect('projet.db')
    cursor_PROJET = PROJET.cursor()

    target_price = "{}_price".format(source)

    query = ''' SELECT open_price, close_price, high_price, low_price, date
                FROM Candlesticks 
                JOIN Companies ON Companies.id=Candlesticks.company_id
                WHERE ticker="{}" AND date>="{}" AND date<="{}"
            '''.format(ticker, start_date, end_date )

    candlesticks = pd.read_sql_query(query, PROJET)

    candlesticks.date = pd.to_datetime(candlesticks.date)
    candlesticks.loc[:,"date"] = candlesticks.date.dt.strftime("%d-%m-%y")    

    somme_prix = 0
    for prix in candlesticks[target_price]:
        somme_prix = somme_prix + prix

    moyenne = somme_prix / len(candlesticks[target_price])

    enveloppe_up = moyenne + moyenne * pourcentage
    enveloppe_down = moyenne - moyenne * pourcentage

    moyennes = []
    enveloppes_up = []
    enveloppes_down = []

    for i in range(0, len(candlesticks["date"])):
        moyennes.append(moyenne)
        enveloppes_up.append(enveloppe_up)
        enveloppes_down.append(enveloppe_down)

    fig, ax = plt.subplots(figsize=(14, 8))

    sns.lineplot(x="date", y=moyennes, label="Moyenne absolue", color="grey", data=candlesticks)
    sns.lineplot(x="date", y=enveloppes_up, label="Enveloppe up", color="red", data=candlesticks)
    sns.lineplot(x="date", y=enveloppes_down, label="Enveloppe down", color="green", data=candlesticks)

    ax.fill_between(candlesticks["date"], moyennes, enveloppes_up, color="red", alpha=0.1)
    ax.fill_between(candlesticks["date"], moyennes, enveloppes_down, 

color="green", alpha=0.1)

        ax.set_xlabel("Date")
        ax.set_ylabel("Prix")
        plt.xticks(rotation=45)

        plt.title("")

question8("AAPL", "2020-02-04", "2020-03-10", "open", 0.25)"

Пожалуйста, обратитесь к приложенному изображению, чтобы увидеть выходной график.

Ожидаемый результат графика

...