Я пытаюсь построить данные о цене закрытия акций для каждого дня, но на оси x я не получаю метки на xtick вместо формата год-месяц

Я попытался взять столбцы «Дата» и «Цена закрытия» в отдельном кадре данных, а затем попытался построить их.

У меня есть датафрейм, похожий на этот

Date        Close Price
2017-05-15  912.20
2017-05-16  894.70
2017-05-17  887.05
2017-05-18  871.35
2017-05-19  852.40
df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
plt.title('Trend in last two years')
plt.ylabel('Close Price') # add y-label
plt.xlabel('Date') # add x-label

plt.show()

the output should have xtick in year-month format
0
the_learning_child 1 Июл 2019 в 09:02

3 ответа

Лучший ответ

Просто скрыть это с помощью функции панды to_datetime()

df_sorted['Date'] = pd.to_datetime(df_sorted['Date'])
df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
plt.title('Trend in last two years')
plt.ylabel('Close Price') # add y-label
plt.xlabel('Date') # add x-label

plt.show()

enter image description here

1
ilja 1 Июл 2019 в 07:01

Если вы хотите, чтобы галочки отображались только один раз в месяц, попробуйте следующее:

    import matplotlib.dates as mdates

    df_sorted['Date'] = pd.to_datetime(df_sorted['Date'])

    ax = df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
    plt.title('Trend in last two years')
    plt.ylabel('Close Price') # add y-label
    plt.xlabel('Date') # add x-label

    months = mdates.MonthLocator()
    ax.xaxis.set_major_locator(months)
    ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))

    plt.show()

enter image description here

1
Wolf A 1 Июл 2019 в 07:37

Вам нужно использовать DateFormatter, чтобы получить желаемый формат вывода. Попробуйте это

        from matplotlib import dates

        df_sorted.Date = pd.to_datetime(df.Date)

        ax = df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
        plt.title('Trend in last two years')
        plt.ylabel('Close Price') # add y-label
        plt.xlabel('Date') # add x-label

        ax.set(xticks=df.Date.values)
        ax.xaxis.set_major_formatter(dates.DateFormatter("%Y-%m-%d"))
        plt.show()
0
Sa'ad Zarook 1 Июл 2019 в 06:37