Как добавить ось X на графике? - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь построить некоторые данные, но я не знаю, как я могу добавить значения даты на оси X на моем графике.Вот мой код:

import pandas as pd
import numpy as np

%matplotlib inline
%pylab inline
import matplotlib.pyplot as plt
pylab.rcParams['figure.figsize'] = (15, 9)
df["msft"].plot(grid = True) 

enter image description here

Описание изображения - это график, но на оси абсцисс есть только цифры, но я ищу даты для появления наось х.Даты находятся в столбце даты в фрейме данных.

Вот как выглядит фрейм данных:

                  date  msft  nok  aapl  ibm  amzn
1  2018-01-01 09:00:00   112    1   143  130  1298
2  2018-01-01 10:00:00   109   10   185  137  1647
3  2018-01-01 11:00:00    98   11   146  105  1331
4  2018-01-01 12:00:00    83    3   214  131  1355

Можете ли вы предложить некоторую помощь по тому, что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Ваш столбец date - это просто еще один столбец для панд, вы должны сообщить программе, что вы хотите построить график для этого конкретного.Один из способов - построить график в этой колонке:

from matplotlib import pyplot as plt
import pandas as pd
#load dataframe
df = pd.read_csv("test.txt", delim_whitespace=True)
#convert date column to datetime object, if it is not already one
df["date"] = pd.to_datetime(df["date"])

#plot the specified columns vs dates
df.plot(x = "date", y = ["msft", "ibm"], kind = "line", grid = True)
plt.show()

Чтобы узнать больше вариантов панд, пожалуйста, посмотрите документацию .

Другим способом было бы установить date в качестве индекса кадра данных.Тогда вы можете использовать свой подход:

df.set_index("date", inplace = True)
df[["msft", "ibm"]].plot(grid = True) 
plt.show()

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

0 голосов
/ 23 мая 2018

Один из способов сделать это - функция set_xticklabels, хотя ответ г-на Т - правильный путь

ax = plt.subplot(111)
df["msft"].plot(grid = True)
ax.set_xticklabels(df['date'])
plt.xticks(np.arange(4))

с предоставленными данными:

set_xticklabels

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...