2016-08-01 81 views
2

我試圖避免使用ColumnDataSource,而不是將熊貓數據框列直接傳遞給散景圖。如何從散景柱提取數據數據源

不久,我不得不實現一個需要在ColumnDataSource中有數據的HoverTool。所以,我開始使用ColumnDataSource。

現在,我正在創建一個盒子註釋,我不得不使用我的數據中某個列的最大值來定義盒子的頂部邊框。

我能做到這一點很容易地使用熊貓:

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

但我無法弄清楚如何提取從ColumnDataSource最大。

有沒有辦法從中提取最大值,或者我的方法是否一切都錯了?

+0

對不起,你在問''top = flowers.loc [flowers''species'] =='setosa','petal_width']。max()[0]'? – EdChum

+0

@EdChum我可以從熊貓數據框中提取最大值。我只是想弄清楚如何從散景ColumnDataSource這是散景用來存儲數據的對象做同樣的事情: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']))