2016-08-01 1 views
2

Я пытался избежать использования ColumnDataSource, и вместо этого я проходил столбцы dataframe pandas непосредственно на графиках Bokeh.Как извлечь данные из Bokeh ColumnDatasource

Вскоре, хотя мне пришлось реализовать HoverTool, который требует наличия данных в ColumnDataSource. Итак, я начал использовать ColumnDataSource.

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

я могу сделать это легко с помощью панд:

low_box = BoxAnnotation(
    top=flowers['petal_width'][flowers['species']=='setosa'].max(), 
    fill_alpha=0.1, fill_color='red') 

Но я не могу понять, как извлечь максимум из ColumnDataSource.

Есть ли способ извлечь из него максимальное значение, или мой подход не так в первую очередь?

+0

извините вы просите 'топ = flowers.loc [цветы [ 'видов'] == 'setosa', 'petal_width']. Макс() [0]'? – EdChum

+0

@EdChum Я могу извлечь максимум из рамки данных pandas. Я просто пытаюсь выяснить, как сделать то же самое с bokeh ColumnDataSource, который является объектом, который Bokeh использует для хранения данных: http://bokeh.pydata.org/en/0.10.0/docs/reference/models/sources .html # ColumnDataSource – multigoodverse

ответ

2

Объект ColumnDataSource имеет атрибут data, который вернет словарь python, используемый для создания объекта в первую очередь.

from bokeh.plotting import ColumnDataSource 

# define ColumnDataSource 
source = ColumnDataSource(
    data=dict(
     x=[1, 2, 3, 4, 5], 
     y=[2, 5, 8, 2, 7], 
     desc=['A', 'b', 'C', 'd', 'E'], 
    ) 
) 

# find max for variable 'x' from 'source' 
print(max(source.data['x']))