неточные сюжетные запонки - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь создать графики, используя запонки, но они кажутся неточными, или, лучше сказать, ось у, кажется, не в порядке.

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

                  time
pos_slot    crane_gkey  
C1   319    85 days 09:29:11
     320    91 days 00:55:00
     329    100 days 21:15:00
     330    47 days 02:00:00
     331    0 days 11:25:00
     333    9 days 13:35:00
     334    3 days 01:15:00
     335    0 days 00:10:00
     336    0 days 05:00:00
     337    0 days 05:00:00
     338    2 days 21:10:00
     339    0 days 12:15:00
     345    9 days 22:50:00
     353    1 days 12:17:28
     362    1 days 08:05:00
     363    0 days 15:50:00
     369    1 days 08:05:00
     406    9 days 20:10:00
     407    12 days 22:05:00
     408    7 days 14:15:00

это продолжается для нескольких значений pos_slot. Это группа, которую я создал из большой таблицы.я использую следующее для создания графика

df1_bct_pos_ctimes3 = df1_bct_pos_ctimes.unstack(level = -2)
df1_bct_pos_ctimes3.iplot(kind = 'scatter')

и получаю следующий график enter image description here

И как вы можете видеть из данных, плор делаетвыглядит не совсем точно, и ось y, похоже, испорчена

теперь, если я запустил запонки на столе, не расставляя их, и посмотрю на C1 для pos_slot, я получу:

код:

df1_bct_pos_ctimes.iplot(kind = 'scatter')

enter image description here

, и это, кажется, точно отображает значения в таблице.

Также как дополнительный вопрос, как мненастроить метки осей, чтобы их было легче понять?

Спасибо.

РЕДАКТИРОВАТЬ: похоже, что изменение времени на общее количество секунд решило проблему.Я все еще хотел бы знать, почему эта проблема произошла.Спасибо.

1 Ответ

0 голосов
/ 14 июля 2018

Я попытался воссоздать dataframe и аналогичный error в первом plot в вопросе.На этом графике кажется, что iplot() видит time column как string.Поэтому значения на y-axis не соответствуют ожидаемым.(Jupyter Notebook 5.0.0, Python 3.6.6)

Импорт библиотек

import datetime
from datetime import date
from datetime import timedelta
import pandas as pd
import numpy as np
from plotly import __version__
%matplotlib inline

import plotly.offline as pyo
import plotly.graph_objs as go
from plotly.offline import iplot

import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot 
init_notebook_mode(connected=True)

init_notebook_mode(connected=True)
cf.go_offline()

Создание примеров данных

a = [319, 320,329,330,331,333,334,335,336,337,338,339,345,353,362,363,369,406,407,408]
b = ['C1']*len(a)
time = ['85 days 09:29:11', '91 days 00:55:00', '100 days 21:15:00', '47 days 02:00:00',
        '0 days 11:25:00', '9 days 13:35:00', '3 days 01:15:00', '0 days 00:10:00',
        '0 days 05:00:00', '0 days 05:00:00', '2 days 21:10:00', '0 days 12:15:00',
        '9 days 22:50:00', '1 days 12:17:28', '1 days 08:05:00', '0 days 15:50:00',
        '1 days 08:05:00', '9 days 20:10:00', '12 days 22:05:00', '7 days 14:15:00'
       ]

df = pd.DataFrame({'b':b, 'a':a, 'time':time})
df['time'] = df['time'].apply(pd.Timedelta)
df.head(2)

Создатьстолбец, в котором время преобразуется в строку

df['str_time'] = str(df.time)
df.dtypes

Создать график: время в формате строки

(Примечание: оси X и Yпо сравнению с вопросом. Здесь время теперь рассматривается как категория. Хотя формат отличается от вопроса.)

df[['a', 'str_time']].iplot(kind = 'scatter')

enter image description here

Создание графика: время в формате даты и времени

df[['a', 'time']].iplot(kind = 'scatter')

enter image description here

...