неправильное построение участка морского дна по осям X из панд - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь построить линейный график в seaborn со значениями для оси y и датами для оси x, поступающими из кадра данных pandas.

Когда я создаю линейный график без преобразования столбца даты в объект datetime, онставит даты в неправильном порядке.Когда я конвертирую столбец даты в формат datetime, он дает странные метки x и показывает только 5 дат.

df = pd.read_csv("dddd.csv")
df["date"] = pd.to_datetime(df["date"])
df = df.sort_values(["date"])
ax = sns.lineplot(y=df["google"],x=df["date"],color="red",data=df)

plt.show()

Я хочу просто построить данные с метками x, поскольку даты имеют их в порядке,Вот некоторые примеры данных.

25-03-2019  -100
26-03-2019  -66.66666667
27-03-2019  -80
28-03-2019  -87.08333333
29-03-2019  -88.88888889
30-03-2019  -86.28526646
31-03-2019  -87.5
01-04-2019  -87.87878788
02-04-2019  -82.92682927
03-04-2019  -84.09090909
04-04-2019  -84.7826087
05-04-2019  -85.71428571
06-04-2019  -81.30677848
07-04-2019  -81.98051948
08-04-2019  -82.14285714
09-04-2019  -78.46153846
10-04-2019  -76.05633803
11-04-2019  -75
12-04-2019  -75
13-04-2019  -80
14-04-2019  -83.33333333
15-04-2019  -83.33333333
16-04-2019  -77.77777778
17-04-2019  -68
18-04-2019  -54.70085471
19-04-2019  -64.70588235
20-04-2019  -66.66666667

1 Ответ

0 голосов
/ 30 апреля 2019

Несмотря на то, что этот вопрос, скорее всего, является дубликатом, вот несколько объяснений:

  1. Без преобразования в datetime ваша ось x неупорядочена, потому что python не понимает, что значения являются датами. Здесь он, вероятно, рисует галочку для каждой точки, потому что не знает, как вписать «16-04-2019» в непрерывном масштабе. (Попробуйте построить массив строк на оси X в качестве сравнения).

  2. Если вы делаете , конвертируете в datetime, seaborn и панды достаточно умны, чтобы заметить, что ваши даты образуют непрерывную шкалу. Поскольку ticklabels будет перекрываться при рисовании всех из них, он пропускает некоторые из них и вместо этого рисует галочки.

Вы можете повлиять на местоположение с помощью ax.set_ticks(locations), их стиль с помощью ax.tick_params(rotation=90, horizontal_alignment='left') или их метки с помощью ax.set_xticklabels(labels). (ключевые слова в качестве примера).

Вы также можете использовать

import matplotlib.dates ad md

locs = md.YearLocator() # Locations for yearly ticks
format = md.MajorFormatter('%B %Y') # Format for labels

для доступа к функциям форматирования и ax.set_major_locator / formatter для применения их к вашему графику.

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

ax.set_xticks(df["Date"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...