Я пытаюсь добавить текст к графику временных рядов, сделанному с боке. Я прочитал этот пост и все еще не могу понять это правильно.
Координаты глифа боке с x_axis_type 'datetime'
Я пытаюсь построить текст в последней точке [-1] индекса временного ряда. Вот пример кода:
import pandas as pd
import numpy as np
from datetime import datetime
from bokeh.plotting import output_notebook, figure, show
output_notebook()
# generate randome walks
n=100
df = pd.DataFrame({'date': pd.date_range('12/1/2015', periods=n, freq='D'),
'A' : (np.random.random(n) - 0.5).cumsum(),
'B' : (np.random.random(n) - 0.5).cumsum(),
'C' : (np.random.random(n) - 0.5).cumsum(),})
df.set_index('date', inplace=True)
items = ['A', 'B', 'C']
colors = ['red', 'green', 'blue']
# make a figure
p = figure(x_axis_type='datetime', width=900, height=500)
for item, color in zip(items, colors):
# plot the lines
p.line(df.index, df[item], color=color, legend=item)
# plot text at the last point in the time series
p.text(x=df.index[-1].timestamp(), y=df[item][-1], text=item)
p.legend.orientation = "top_left"
p.yaxis.minor_tick_out=0
show(p)
Когда я запускаю это, я получаю NaN, построенный 1 января 1970 года (начало эпохи). Места значений Y кажутся в порядке.
Ошибка:
ОШИБКА: C:\Miniconda3\lib\site-packages\bokeh\validation\check.py:E-1001 (BAD_COLUMN_NAME): Glyph ссылается на имя несуществующего столбца: A [рендерер: GlyphRenderer, ViewModel:GlyphRenderer, ref _id: 0173aa55- 4343-4c86-a414-69a0777e3178]
Любые идеи о том, как заставить это работать?
text=item
оценивается какtext="A"
. Боке последовательно интерпретирует строковые значения как имена столбцов в источнике данных столбца. Но вы не добавили столбец с именем"A"
в источник данных для глифа. Если вы действительно хотите, чтобы текст читался буквально, просто"A"
, попробуйтеtext=dict(value="A")
. Если вместо этого вы хотите, чтобы данные из столбца"A"
были в вашемDataFrame
, вам нужно создать свой собственныйColumnDataSource
. Видеть. например, github.com/bokeh/bokeh/ блоб/мастер/примеры/график/файл/ - person bigreddot   schedule 01.12.2015