2016-08-01 4 views
2

私はColumnDataSourceの使用を避けようとしていましたが、代わりにpandasデータフレーム列をBokehプロットに直接渡していました。Bokeh ColumnDatasourceからデータを抽出するには

すぐに私はColumnDataSourceのデータを持つことが必要なHoverToolを実装しなければなりませんでした。ですから、私は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私はパンダのデータフレームから最大値を抽出することができます。私はBokehがデータを格納するために使用するオブジェクトであるBokeh 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'])) 
関連する問題