AjaxDataSource
ベースクラス: bokeh.models.sources.WebSource
bokeh.models.sources.WebSource
列のデータソースは,REST端点のAjaxを呼び出すことで埋めることができる.
♪the AjaxDataSource 既存のREST APIを使用して動的に更新可能な独立文書(すなわち、Bokehサーバによってサポートされていない)を作成したい場合、これは特に有用である。
REST APIの応答は .data 標準的属性 ColumnDataSource すなわち、値配列のJSON辞書に名前をマッピングする:
.data
ColumnDataSource
{ 'x' : [1, 2, 3, ...], 'y' : [9, 3, 2, ...] }
あるいは、rest APIが異なるフォーマットを返す場合、 CustomJS REST応答をBokehフォーマットに変換するためのコールバックを提供することができる方法は、 adapter このデータソースの属性。
CustomJS
adapter
初期データは指定することで data 属性です。当を与える. FactorRange 中の列であっても data `空だよ。
data
FactorRange
完全な例については、参照されたい examples/howto/ajax_source.py
属性タイプ: Instance () CustomJS )
Instance
BokehのJavaScriptコールバックに適応するためにオリジナルJSON応答を調整する ColumnDataSource フォーマットです。
提供される場合、このコールバックは、JSONデータを受信した直後に実行されるが、データソース内のデータを追加または置換する前に実行される。♪the CustomJS コールバック受け取ります AjaxDataSource として cb_obj 元のJSON応答を受信することを cb_data.response それがそうです。コールバックコードは1つ戻るべきです data ポークに適用される物体は ColumnDataSource (すなわち、文字列名のデータ配列へのマッピング)。
cb_obj
cb_data.response
content_type
属性タイプ: String
String
Ajax要求の“contentType”パラメータを設定します。
property type: ColumnData ( String , Seq ( Any ) )
ColumnData
Seq
Any
列名をデータシーケンスにマッピングする.列は、例えば、Pythonリストやタプル、NumPy配列などであってもよい。
また,Pandas DataFramesやGroupByオブジェクトから.Data属性を設定することも可能である.これらの場合,行為と対象を渡す ColumnDataSource 初期化器です。
data_url
その中からデータのURLを抽出する.
http_headers
property type: Dict ( String , String )
Dict
Ajax要求に設定するHTTPヘッダを指定します。
例:
ajax_source.headers = { 'x-my-custom-header': 'some value' }
if_modified
属性タイプ: Bool
Bool
含まれているかどうか If-Modified-Since サーバへのAJAX要求中のヘッダ.サーバがこのヘッダをサポートしている場合、前回の要求以来の新しいデータのみを返す。
If-Modified-Since
js_event_callbacks
property type: Dict ( String , List ( Instance ( CustomJS ) ) )
List
イベント名のリストへのマッピング CustomJS 返電します。
通常,この属性を直接修正すべきではなく,使用すべきである Model.js_on_event 方法:
Model.js_on_event
callback = CustomJS(code="console.log('tap event occurred')") plot.js_on_event('tap', callback)
js_property_callbacks
属性名のリストへのマッピング CustomJS コールバックは、文書作成時にBoehJS端に設定されます。
通常,この属性を直接修正すべきではなく,使用すべきである Model.js_on_change 方法:
Model.js_on_change
callback = CustomJS(code="console.log('stuff')") plot.x_range.js_on_change('start', callback)
max_size
属性タイプ: Int
Int
データ列の最大サイズ.新たに抽出すると列が大きくなります max_size そして、より早いデータを破棄して空間を空けます。
method
属性タイプ: Enum (列挙(POST,GET))
Enum
Ajax要求のためのHTTPメソッド(GETまたはPOST)の指定
mode
属性タイプ: Enum (入れ替え·追加)
新しいデータを既存のデータに追加するかどうか(最大 max_size )、または既存のデータを完全に置換します。
name
このモデルのユーザが提供する任意の名前.
文書を検索して特定のBokehモデルを検索する際には,この名前が有用である可能性がある.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
注釈
提供された任意の名前に対して一意保証または他の条件を強制的に実行することはなく、Bokehもいかなる理由でもその名前を直接使用することはない。
polling_interval
データソースのポーリング間隔(ミリ秒)を更新する.
selected
属性タイプ: Instance () Selection )
Selection
1つの例です Selection これは,このオブジェクト上で選択されたインデックスを示す. DataSource それがそうです。これは読むだけの属性ですこのオブジェクトの属性を変更して選択を変更することしかできません(例えば、 selected.indices )。
DataSource
selected.indices
selection_policy
属性タイプ: Instance () SelectionPolicy )
SelectionPolicy
1つの例です SelectionPolicy これは選択をどのように設定するかを決定する。
subscribed_events
属性タイプ: List () String )
Pythonは購読しているイベントリストをコールバックします。このモデルに対して、これはBokehJSからPythonに返されるイベントのセットです。
tags
属性タイプ: List () Any )
このモデルに付加されるユーザが提供する任意の値のオプションリスト。
特定のBokehモデルを検索するために文書を検索する際に、このデータは有用である可能性がある:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
あるいは必要なメタデータをアクセス可能なモデルに付加する便利な方法でしかありません CustomJS ダイヤルして待つ.
提供されたいかなるラベルに対しても一意保証または他の条件を強制的に実行することはなく、Bokehもいかなる理由でもこれらのラベルを直接使用することはない。
__init__
呼び出し時に使用される単一のパラメータがdictまたは pandas.DataFrame これは、暗黙的に“data”属性とみなされる。
pandas.DataFrame
add
新しいデータ列をデータソースに追加する.
data (seq) -- 追加する新しいデータ
name (str, optional) -- 使用する列名。提供されていない場合は、“Series#”のフォーマットの名前を生成してください
使用の列名
str
apply_theme
アプリケーションのセットは、デフォルト値のテーマ値ではなく使用されるが、アプリケーションセット値はカバーされない。
入力された辞書はそのまま保持し,他の事例と共有してメモリを節約することができる(したがって呼び出し方和 HasProps インスタンスはそれを修正すべきである).
HasProps
property_values (dict) -- デフォルト値の代わりにテーマ値を使用します
なし
dataspecs
全員の名前を集める DataSpec 属性です。
DataSpec
この方法は いつも クラス階層構造を遍歴し,任意の親クラスで定義された属性を含む.
名前または名前 DataSpec 特性
set[str]
dataspecs_with_props
辞書を集めて全員の名前をマッピングします DataSpec 属性は関連する属性に付加される.
名前と名前のマッピング DataSpec 特性
dict[str, DataSpec]
equals
モデルの構造は平等である.
other (HasProps) -- 比較するもう一つの例は
属性が構造的に等しいならばTrue,そうでなければFalseとなる.
from_df
1つを作ることができます dict 1列のパンダの柱 DataFrame 作成に適しています ColumnDataSource それがそうです。
dict
DataFrame
data (DataFrame) -- 変換するデータ
ディクト! [文字列,np.array]
from_groupby
1つを作ることができます dict 1列のパンダの柱 GroupBy 作成に適しています ColumnDataSource それがそうです。
GroupBy
生成されたデータは実行されます describe この群の中にあります。
describe
data (Groupby) -- 変換するデータ
js_link
2つのBokehモデル属性をJavaScriptを用いてリンクする.
これは、CustomJSコールバックを追加して、1つのBokehモデル属性が値を変更するときに別のBokehモデル属性を更新するプロセスを簡略化することができる便利な方法である。
attr (str) -- このモデル上のBokeh属性の名前
other (Model) -- Self.attrにリンクされたBokehモデル
other_attr (str) -- 上の属性 other リンクがつながっている
other
attr_selector (Union[int, str]) -- 購読可能表中の項目をリンクするためのインデックス attr
attr
バージョン1.1での追加
ValueError --
サンプル
このコードには js_link :
select.js_link('value', plot, 'sizing_mode')
以下と同等である.
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
また,範囲スライダの左側をattr_selectorを用いて描画のx_rangeに付加する:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
これは以下のようなものです
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
js_on_change
付加する. CustomJS 任意のBoehJSモデルイベントのコールバック.
BokehJS側では,モデル属性の変更イベントの形式は "change:property_name" それがそうです。便宜上,このメソッドに渡されるイベント名もモデル上の属性の名前であれば, "change:" 自動:
"change:property_name"
"change:"
# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
しかし,属性変更イベントに加えて,他のタイプのイベントに応答することも可能である.例えば、データがストリーミングされる限り ColumnDataSource 使用、使用 "stream" 源上の事件:
"stream"
source.js_on_change('streaming', callback)
layout
lookup
見つかる PropertyDescriptor クラス上のBokeh属性に対して,属性名を与える.
PropertyDescriptor
name (str) -- 検索する属性の名前
名前の属性の記述子 name
on_change
このオブジェクトには,以下の場合にトリガするコールバックを追加する. attr 変化する。
attr (str) -- このオブジェクトの属性名
*callbacks (callable) -- 登録するコールバック関数
widget.on_change('value', callback1, callback2, ..., callback_n)
patch
特定の位置のデータソース列を効率良く更新する
もし更新だけが必要なら ColumnDataSource この方法は、データセット全体を送信することなく、サブセットのみを効率的に更新するために使用されてもよい。
この方法には、適用されるパッチ変更を記述するタプルリストに列名をマッピングする辞書が渡されるべきである。列中の単一の項を完全に置き換えるためには、タプルは以下の形式を採用すべきである。
(index, new_value) # replace a single column value # or (slice, new_values) # replace several column values
インデックスまたはスライス上の値は、対応する新しい値に置き換えられる。
列の値が他の配列またはリスト(例えば、画像またはパッチ字形)であれば、“サブ領域”を修復することもできる。この場合、タプルの第1の要素は、その第1の要素がCDSパッチ内の配列項のインデックスであり、その後続要素が配列項の整数インデックスまたはスライスであるべきである。
# replace the entire 10th column of the 2nd array: +----------------- index of item in column data source | | +--------- row subindex into array item | | | | +- column subindex into array item V V V ([2, slice(None), 10], new_values)
2次元NumPy配列のリストがあると仮定すると,上のパッチはほぼ以下のとおりである.
data = [arr1, arr2, ...] # list of 2d arrays data[2][:, 10] = new_data
受け入れられるスライスとデータタイプにはいくつかの制限がある。
Negative start, stop, or step values for slices will result in a ValueError.
start
stop
step
ValueError
一枚のシートの中で start > stop 1つの問題を引き起こすことになります ValueError
start > stop
一次元または二次元サブ項を修復する際には,サブ項はNumPy配列でなければならない.
新しい価値は flattened one-dimensional array サイズが合います。
patches (dict[str, list[tuple]]) -- 列ごとのパッチリスト
以下の例では,カラム全体をどのように補修するかを示す。この場合には
source = ColumnDataSource(data=dict(foo=[10, 20, 30], bar=[100, 200, 300])) patches = { 'foo' : [ (slice(2), [11, 12]) ], 'bar' : [ (0, 101), (2, 301) ], } source.patch(patches)
この操作の後 source.data そうなるでしょう
source.data
dict(foo=[11, 12, 30], bar=[101, 200, 301])
より全面的な完全例については、参照されたい examples/howto/patch_app.py それがそうです。
properties
このような上の属性名を収集する.
この方法は (オプション) クラス階層構造を遍歴し,任意の親クラスで定義された属性を含む.
with_bases (bool, optional) -- 結果に親クラスで定義された属性が含まれているかどうか.(デフォルト値:TRUE)
属性名
properties_containers
このようなすべてのコンテナ属性の名前を収集する.
容器属性名
properties_with_refs
このクラスにも引用されているすべての属性の名前を収集する.
引用の属性を持つ名前
properties_with_values
属性名をその値にマッピングした辞書を収集する.
直列化不可能な属性をスキップし、属性値は、一般に属性から読み出される値とはやや異なる可能性がある“直列化”フォーマットを採用し、この方法は、オブジェクトインスタンスを可逆的に再構成するために必要な情報を返すことを目的とする。
include_defaults (bool, optional) -- オブジェクト作成以来明示的に設定されていない属性が含まれているかどうか。(デフォルト値:TRUE)
属性名からその値へのマッピング
query_properties_with_values
クエリの属性値 HasProps 述語を持つインスタンス.
query (callable) -- 属性記述子を受け取ってTrueまたはFalseの呼び出し可能関数を返す
include_defaults (bool, optional) -- ユーザが明示的に設定していない属性(デフォルト値:true)が含まれているかどうか
適合属性の属性名と値のマッピング
references
すべてに戻る Models この対象は引用されている.
Models
remove
データの列を削除します。
name (str) -- 削除する列の名前
列名が存在しなければ警告を発する.
remove_on_change
この対象からコールバックを削除する
select
このオブジェクトおよびそのすべての参照において、所与のセレクタに一致するオブジェクトがクエリされる。
selector (JSON-like) --
配列番号. [模型]
select_one
このオブジェクトおよびそのすべての参照において、所与のセレクタに一致するオブジェクトがクエリされる。複数のオブジェクトが見つかれば,エラーを引き起こす.単一のマッチングオブジェクトを返し、何も見つからない場合は、NONEを返す:パラメータセレクタ::タイプセレクタ:JSONに類似している
模型
set_from_json
JSONからこのオブジェクトの属性値を設定する.
name -- (Str):設定する属性の名前
json -- (json-value):設定する属性の値
models (dict or None, optional) -- モデルIDからモデルへのマッピング(デフォルト値:なし)更新する属性も参照する値を持つ場合には,このオプションが必要となる.
setter (ClientSession or ServerSession or None, optional) -- これはBokehアプリケーションの“ブーメラン”の更新を阻止するためのものです。Bokehサーバアプリケーションのコンテキストでは,入力された属性更新は,更新を実行するセッションを用いてアノテーションを行う.この値は、更新によってトリガされた任意の後続の変更通知によって伝播される。セッションは、イベント設定器自身と比較し、自身からの任意の更新を抑制することができる。
set_select
指定された属性/値を有する所与のセレクタに一致するオブジェクトが更新される。
updates (dict) --
stream
新たな追加データのみを用いてデータソース列を効率良く更新する.
更新中のデータ列が必要な場合、この方法は、データセット全体を再送することなく、新しいデータのみを効率的に送信することができる。
new_data (dict[str, seq]) -- 列名を各列に付加する新しいデータシーケンスにマッピングする。データソースのすべての列は new_data 同じ長さの付加データである.
new_data
rollover (int, optional) -- 最大列サイズは,その最大列サイズを超えて列の先頭のデータを破棄し始める.Noneの場合、列は無界成長(デフォルト:None)を継続します。
source = ColumnDataSource(data=dict(foo=[], bar=[])) # has new, identical-length updates for all columns in source new_data = { 'foo' : [10, 20], 'bar' : [100, 200], } source.stream(new_data)
themed_values
すべてのテーマが提供するカバーを得る。
結果は属性名から値までの辞書形式で返されるか,または None 主題がこのインスタンスの任意の値をカバーしていない場合。
None
DICTやNONE
to_df
このデータソースをパンダに変換します DataFrame それがそうです。
to_json
この対象属性を返す辞書は,“JSONタイプ”(文字列,数字,ブール値,無,辞書,リスト)のみを含む.
他のオブジェクトへの参照は“refs”(オブジェクトIDとタイプ情報のみ)に系列化されるため,逆直列化プログラムはそれらの他のオブジェクトの完全な属性を単独で持つ必要がある.
対応のない from_json() 逆直列化オブジェクトは、通常、文書コンテキストで行われるからである(文書は引用を解析できるので)。
from_json()
ほとんどの場合、文書全体を直列化して逆直列化することが望ましい。
include_defaults (bool) -- デフォルト値から変更されていない属性が含まれているかどうか
to_json_string
このオブジェクト属性をコードするJSON文字列を返す.
他のオブジェクトへの参照は参照(オブジェクトIDとタイプ情報のみ)に系列化されるため,逆直列化プログラムはそれらの他のオブジェクトの完全な属性を単独で持つ必要がある.
対応のない from_json_string() 逆直列化オブジェクトは、通常、文書コンテキストで行われるからである(文書は引用を解析できるので)。
from_json_string()
trigger
unapply_theme
すべてのトピック値を削除し、デフォルト値を復元します。
update
与えられたキーワードパラメータに基づいてオブジェクトの属性を更新する.
以下の内容は等価である.
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
update_from_json
JSON属性辞書から対象の属性を更新する.
json_attributes -- (json-dict):更新する属性と値
column_names
このデータソース内の名前リスト.
document
♪the Document このモデルは添付されています None )
Document
struct
このモデルのBokehプロトコル“構造”,すなわち以下の形式の辞書:
{ 'type' : << view model name >> 'id' : << unique model id >> }
他にもあるかもしれません subtype フィールド(このモデルがサブタイプである場合)。
{ "adapter": null, "content_type": "application/json", "data": {}, "data_url": null, "http_headers": {}, "id": "15829", "if_modified": false, "js_event_callbacks": {}, "js_property_callbacks": {}, "max_size": null, "method": "POST", "mode": "replace", "name": null, "polling_interval": null, "selected": { "id": "15831" }, "selection_policy": { "id": "15830" }, "subscribed_events": [], "tags": [] }
CDSView
ベースクラス: bokeh.model.Model
bokeh.model.Model
ビューを ColumnDataSource 行式サブセットを表す.
filters
属性タイプ: List () Instance () Filter ))
Filter
ビューに含まれるフィルタリスト.
source
属性タイプ: Instance () ColumnarDataSource )
ColumnarDataSource
♪the ColumnDataSource このビューに関連する.列の長さを決定するために用いられる.
{ "filters": [], "id": "15849", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "source": null, "subscribed_events": [], "tags": [] }
ベースクラス: bokeh.models.sources.ColumnarDataSource
bokeh.models.sources.ColumnarDataSource
列名をシーケンスまたは配列にマッピングする.
♪the ColumnDataSource Bokehの基本データ構造である.多くのグラフやデータテーブルなどは ColumnDataSource それがそうです。
もし ColumnDataSource 初期値設定項は、以下のいずれかのパラメータであってもよい単一のパラメータを使用して呼び出される。
1本の巨漢. dict 文字列名は、リスト、配列などの値系列にマッピングされる。
data = {'x': [1,2,3,4], 'y': np.ndarray([10.0, 20.0, 30.0, 40.0])} source = ColumnDataSource(data)
ColumnDataSource 作成のみ data それがそうです。法如を用いる. ColumnDataSource(copy.deepcopy(data)) もし別の人から ColumnDataSource.data 独立した対象を保持しなければならない.
ColumnDataSource(copy.deepcopy(data))
ColumnDataSource.data
パンダ1頭. DataFrame 客体.
source = ColumnDataSource(df)
この場合、CDSは DataFrame それがそうです。もし DataFrame 複数のレベルが列挙されており、下線(例えば、LEVEL_0_COL_LEVEL_1_COL)を用いてスティッチングを行う。の索引です。 DataFrame 拡大されていくことになります Index もしそれが1つなら MultiIndex そして使用します reset_index それがそうです。インデックスが命名された場合、結果は同名の列となり、インデックスが命名された場合、結果はLEVEL_0_NAME_LEVEL_1_NAMEとなる。 MultiIndex それがそうです。もし Index 名前もないし、ない MultiIndex 名前を合成/決定することはできません reset_index 関数は索引列に名前を付ける index あるいは、あるいは level_0 もしその名前が index 使えません。
Index
MultiIndex
reset_index
index
level_0
パンダ1頭. GroupBy 客体.
group = df.groupby(('colA', 'ColB'))
この場合、CDSは、呼び出し結果に対応する列を有することになる group.describe() それがそうです。♪the describe 方法は、統計的メトリック値のための列、例えば mean そして count すべての未グループ化のための元の列。CDS列は、元の列名と計算されたメトリック値とを連結して形成される。例えばもし1つが DataFrame 列がある. 'year' そして 'mpg' それがそうです。そして通ります df.groupby('year') CDSに設定すると次のような列になります 'mpg_mean'
group.describe()
mean
count
'year'
'mpg'
df.groupby('year')
'mpg_mean'
もし GroupBy.describe その結果、命名されたインデックス列があれば、CDSも同名の列を有することになる。ただし、インデックス名(または MultiIndex )はい。 None CDSには共通名があります index 索引に使う。
GroupBy.describe
この適応能力に注意してください GroupBy 対象はパンダとのご利用のみとなっております >=0.20.0 それがそうです。
>=0.20.0
与えられたすべての列という暗黙的な仮定があります ColumnDataSource それらはいつでも同じ長さを持っている。したがって、一般的により望ましい方法は更新だ。 .data 属性は“一度にすべて完了”である.
{ "data": {}, "id": "15857", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "selected": { "id": "15859" }, "selection_policy": { "id": "15858" }, "subscribed_events": [], "tags": [] }
ベースクラス: bokeh.models.sources.DataSource
bokeh.models.sources.DataSource
データソースタイプの基本クラスは、列フォーマットにマッピングすることができる。
これは,Bokehモデルタイプの階層構造の組織を支援するための抽象基底クラスである. 単独インスタンス化は無駄である.
{ "id": "15868", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "selected": { "id": "15870" }, "selection_policy": { "id": "15869" }, "subscribed_events": [], "tags": [] }
データソースタイプの基本クラス。
{ "id": "15878", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "selected": { "id": "15879" }, "subscribed_events": [], "tags": [] }
GeoJSONDataSource
geojson
属性タイプ: JSON
JSON
印刷に用いる要素を含むGeoJSON.目下 GeoJSONDataSource 一つしか処理できない FeatureCollection あるいは…。 GeometryCollection それがそうです。
FeatureCollection
GeometryCollection
{ "geojson": null, "id": "15886", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "selected": { "id": "15888" }, "selection_policy": { "id": "15887" }, "subscribed_events": [], "tags": [] }
ServerSentDataSource
受信サーバから送信されたイベント終端で列のデータソースを埋め込むことができる.
{ "adapter": null, "data": {}, "data_url": null, "id": "15897", "js_event_callbacks": {}, "js_property_callbacks": {}, "max_size": null, "mode": "replace", "name": null, "selected": { "id": "15899" }, "selection_policy": { "id": "15898" }, "subscribed_events": [], "tags": [] }
WebSource
ベースクラス: bokeh.models.sources.ColumnDataSource
bokeh.models.sources.ColumnDataSource
データURLから更新可能なWeb列データソースの基本クラス.
この基本クラスは通常単独でインスタンス化することはできない.
{ "adapter": null, "data": {}, "data_url": null, "id": "15912", "js_event_callbacks": {}, "js_property_callbacks": {}, "max_size": null, "mode": "replace", "name": null, "selected": { "id": "15914" }, "selection_policy": { "id": "15913" }, "subscribed_events": [], "tags": [] }