Есть ли способ визуализации данных временных рядов таким образом, чтобы по оси X я получал тики в формате год-месяц в python? - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь построить данные о цене закрытия акций для каждого дня, но на оси 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

Ответы [ 3 ]

1 голос
/ 01 июля 2019

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

    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 голос
/ 01 июля 2019

Просто скрыть это пандами * Функция 1001 *

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

0 голосов
/ 01 июля 2019

Вам нужно использовать 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()
...