диапазон оси морского побережья не соответствует диапазону данных в Python - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь создать простую диаграмму рассеяния (я создал несколько в прошлом), поскольку я хочу понять соотношение между билетами, созданными службой поддержки, и закрытыми билетами службы поддержки.Эти 2 функции являются временными метками, но когда я строю график, оси X и Y, по-видимому, имеют гораздо больший диапазон, чем необходимо, поскольку данные, которые у меня есть, идут с 2017 по 2019 год, а график представлен с 2000 по 2020 год. Я попытался изменитьот plt.xlim() до plt.xlim(2016,2020), но при этом получается график, на котором ось имеет значения, которые не имеют смысла (см. рисунок). Мой код выглядит следующим образом:

plt.figure(figsize=(10,5))
ax = sns.scatterplot(data=data, x=data['Created'], y=data['Closed'])

, и это даетследующий график:

enter image description here

, когда я пытаюсь изменить plt.xlim(), я получаю следующий график: enter image description here

и вот некоторые данные, которые я пытаюсь отобразить:

          Created                  Closed
13  2018-01-16 16:23:21     2018-01-21 16:23:55
14  2018-01-11 17:51:18     2018-01-16 17:55:15
15  2018-01-12 13:03:50     2018-01-22 14:01:12
16  2018-01-11 13:28:55     2018-01-21 15:11:04
17  2018-01-04 09:58:36     2018-01-09 10:01:34
18  2018-01-23 09:19:36     2018-02-22 15:00:06
20  2019-04-09 10:50:54     2019-04-14 10:56:27
21  2019-04-08 19:22:49     2019-04-14 14:25:26
22  2019-04-09 12:34:24     2019-04-15 14:37:47
23  2019-04-09 17:22:10     2019-04-17 17:00:20
24  2019-04-09 09:58:52     2019-04-17 11:30:13
25  2019-04-08 20:08:01     2019-04-09 22:01:30
26  2019-04-09 18:40:13     2019-04-10 22:26:45
27  2019-04-09 19:29:04     2019-04-15 10:00:48
28  2019-04-10 02:43:15     2019-04-15 02:46:54
29  2019-04-10 03:04:36     2019-04-15 03:07:27
30  2019-04-10 03:12:02     2019-04-15 03:14:33

Чтобы воспроизвести проблему, с которой я столкнулся, перед построением выполните следующую команду:

data['Created']=pd.to_datetime(data['Created'])
data['Closed']=pd.to_datetime(data['Closed'])

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

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

Проблема заключается в том, что когда вы делаете

plt.xlim(2016, 2020)

plt, задаете пределы для целых значений 2016 и 2020 годов, которые преобразуются в метку времени и будут составлять около 2000 наносекунд отвремя эпохи, иг

Timestamp('1970-01-01 00:00:00.000002020')

Вот почему вы больше не видите свои скаттеры.Вместо этого, передайте plt.xlim соответствующие метки времени:

plt.figure(figsize=(10,5))
ax = sns.scatterplot(data=data, x=data['Created'], y=data['Closed'])

plt.xlim(pd.to_datetime('2016-01-01'), # pd.to_datetime('2016') also works
        pd.to_datetime('2020-01-01'))
plt.show()

, и вы можете получить:

enter image description here

2 голосов
/ 23 мая 2019

Эта проблема известна в sns.scatterplot.Вы можете решить свою проблему по-разному, вот два из них:

Используйте простой график matplotlib и установите стиль линии и маркер:

sns.set()
fig,ax= plt.subplots(1,1,figsize=(10,5))
plt.plot(df['Created'], df['Closed'],linestyle='None', marker='o')

Или используйте ax.plot_date

sns.set()
fig,ax= plt.subplots(1,1,figsize=(10,5))
ax.plot_date(df['Created'], df['Closed'])

enter image description here

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