Python: Разброс цвета по столбцу даты и времени с боке - PullRequest
0 голосов
/ 30 сентября 2019

С помощью Bokeh я пытаюсь раскрасить цвета значениями даты и времени и создать цветовую шкалу со шкалой даты и времени.

(что-то вроде этого):

Origin pro Graph

Образец временных рядов:

    Date                Rate    Level
    01/01/2019 08:59    38.3    -19.7
    02/01/2019 09:04    39.1    -21
    01/01/2019 09:09    40.7    -31
    01/01/2019 09:14    42.1    -15
    01/01/2019 09:19    43.6    -14
    01/01/2019 09:24    46.8    -19.7

Я пыталсячтобы построить Rate = f (Уровень):

cwd=os.getcwd()
delimit_file=','
fichier = 'qsv1.csv'

qsv = pd.read_csv(fichier,delimiter=delimit_file, encoding = 'ISO-8859-1')
qsv['Date'] =  pd.to_datetime(qsv['Date'], format='%Y/%m/%d %H:%M')


p = figure(x_axis_type="datetime", plot_width=800, plot_height=500,)

source = ColumnDataSource(qsv)


exp_cmap = LinearColorMapper(palette="Viridis256", 
                             low = min(qsv["Date"]), 
                             high = max(qsv["Date"]))

p.circle("Rate", "Level", source=source, line_color=None,
        fill_color={"field":"Date", "transform":exp_cmap})
#p.line("Date", "QS_conv", source=source, color='navy', legend='moyenne glissante')

bar = ColorBar(color_mapper=exp_cmap, location=(0,0))
p.add_layout(bar, "left")

show(p)

Но я получаю:

ValueError: expected a value of type Real, got 2019-01-01 00:04:00 of type Timestamp

Кто-то знает, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Спасибо, это работает путем преобразования даты и времени в мс

qsv['actualDateTime'] = qsv['Date'].astype(np.int64) / int(1e6)

exp_cmap1 = LinearColorMapper(palette="Viridis256", 
                             low = min(qsv['actualDateTime']), 
                             high = max(qsv['actualDateTime']))

p1.circle("Debit, "Niveau", source=source, line_color=None,
        fill_color={"field":"actualDateTime", "transform":exp_cmap1})

bar1 = ColorBar(color_mapper=exp_cmap1, location=(0,0), formatter=DatetimeTickFormatter(days=["%d/%m/%y"]), label_standoff=12)
0 голосов
/ 30 сентября 2019

Пожалуйста, всегда включайте полную трассировку стека, а не только одну строку. Предположительно, это сообщение от настройки, например,

low = min(qsv["Date"])

Свойства конфигурации линейного преобразователя цвета не ожидают ничего, кроме простых чисел. Базовыми единицами даты и времени в Боке являются миллисекунды с начала эпохи , поэтому вам следует преобразовать значения даты и времени перед передачей в преобразователь цвета.

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