ストーリーおよびシーンを記述するために使用可能なモデルの作成および使用を簡略化および自動化するために、Bokehは、属性および属性混合のセットを提供する。属性クラスは,大量の有用なタイプ集合に自動検証と直列化を提供する.MixinとContainerクラスにより,モデルクラスに属性を容易に一括追加することができる.
Bokehモデルに属性タイプを提供する
属性は,自動直列化,検証,文書を提供するために,Bokehモデル上のクラス属性に割り当てることができるオブジェクトである.
本稿では,以下の部分に分類する.
概要
基本属性
容器属性
データ仕様属性
助っ人
特殊な属性
検証のみの属性
検証制御
モジュールには多くの属性タイプが定義されています例えば Int 整数値を表すために Seq シーケンス(例えば、リストまたはタプルなど)を表す。属性を組み合わせることもできます Seq(Float) 一連の浮動小数点値を表す.
Int
Seq
Seq(Float)
たとえば,以下では整数,文字列,リストを含むモデルを定義する. [ブイ.ブイ] 属性:
class SomeModel(Model): foo = Int bar = String(default="something") baz = List(Float, help="docs for baz prop")
図に示すように、属性は、属性タイプとしてのみ宣言されてもよく、例えば、 foo = Int この場合,属性は新たなModelオブジェクト上で自動的にインスタンス化される.あるいは、この属性をクラス上でインスタンス化し、デフォルト値およびヘルプ文字列を使用して構成することができる。
foo = Int
初期値設定項目にキーワードパラメータを指定することで、このような属性を初期化することができる:
m = SomeModel(foo=10, bar="a str", baz=[1,2,3,4])
インスタンス上の属性を設定することによって、以下の動作を実行することもできる。
m.foo = 20
属性を誤ったタイプの値に設定しようとすると ValueError 例外的な場合:
ValueError
>>> m.foo = 2.3 Traceback (most recent call last): << traceback omitted >> ValueError: expected a value of type Integral, got 2.3 of type float
属性を持つモデルは自分をどのように直列化するかを知っており,BoehJSは理解できる.また,使用中のSphinx拡張は,属性に関する任意のヘルプ文字列を容易かつ自動的に抽出することができる bokeh.sphinxext モジュールです。
Angle
浮動小数点角値を受け取る.
Angle 相等しい. Float 意味的により意味的に提供されています
Float
default (float or None, optional) -- この属性から作成された属性のデフォルト値(デフォルト値:なし)
help (str or None, optional) -- この属性の文書文字列それは自動的に bokeh_prop Spinx文書を生成する際の拡張子.(デフォルト値:なし)
serialized (bool, optional) -- この属性から作成された属性が直列化に含まれるべきかどうか(デフォルト:true)
readonly (bool, optional) -- この属性から作成された素性が読み専用であるかどうか.(デフォルト値:FALSE)
Any
すべての値を受け取る。
♪the Any 属性は何の検証や変換も実行しない.
default (obj or None, optional) -- この属性から作成された属性のデフォルト値(デフォルト値:なし)
例を引く
>>> class AnyModel(HasProps): ... prop = Any() ... >>> m = AnyModel() >>> m.prop = True >>> m.prop = 10 >>> m.prop = 3.14 >>> m.prop = "foo" >>> m.prop = [1, 2, 3]
AnyRef
すべての値を受け入れて引用を強制的に発見する。
Auto
文字列“AUTO”のみを受け付けます。
“自動”行動に構成できる属性には非常に有用である.
この属性は通常 Either 財産です。
Either
>>> class AutoModel(HasProps): ... prop = Either(Float, Auto) ... >>> m = AutoModel() >>> m.prop = 10.2 >>> m.prop = "auto" >>> m.prop = "foo" # ValueError !! >>> m.prop = [1, 2, 3] # ValueError !!
Bool
ブール値を受ける。
>>> class BoolModel(HasProps): ... prop = Bool(default=False) ... >>> m = BoolModel() >>> m.prop = True >>> m.prop = False >>> m.prop = 10 # ValueError !!
Byte
全数字節値(0−255)が受け入れられる。
>>> class ByteModel(HasProps): ... prop = Byte(default=0) ... >>> m = ByteModel() >>> m.prop = 255 >>> m.prop = 256 # ValueError !! >>> m.prop = 10.3 # ValueError !!
Color
色の値を様々な方法で受け取る。
色については、命名色と“#”で始まる16進数値がサポートされているので、文字列値を受信すると、147個のSVG命名色のうちの1つである場合、または“#”で始まる場合、値として解釈されるという解釈がある。
3タプルが提供された場合、RGB(0..255)とみなされる。4タプルが提供された場合、RGBA(0..255)とみなされ、alphaは0と1の間の浮動小数点数とみなされる。(これはHTML 5 Canvas APIに従う。)
>>> class ColorModel(HasProps): ... prop = Color() ... >>> m = ColorModel() >>> m.prop = "firebrick" >>> m.prop = "#a240a2" >>> m.prop = (100, 100, 255) >>> m.prop = (100, 100, 255, 0.5) >>> m.prop = "junk" # ValueError !! >>> m.prop = (100.2, 57.3, 10.2) # ValueError !!
Complex
複数の浮動小数点値を受け取る.
default (complex or None, optional) -- この属性から作成された属性のデフォルト値(デフォルト値:なし)
DashPattern
線引き仕様を受ける。
線の表示パターンを記述する。 DashPattern 値は、様々な方法で指定することができる:
列挙:“実線”,“破折番号”,“一点鎖線”,“一点鎖線”,“破折号”
整数のタプルまたはリスト。 HTML5 Canvas dash specification style それがそうです。なお、整数リストが奇数個の要素を有する場合、コピーされ、複製されたリストが新しいブレークスルー番号リストとなることに留意されたい。
破線が閉じていること(実線)を示すには,空リスト[]を指定してください.
Date
受理日時(ただし日時を受け付けない)値.
Datetime
日時値を受け取る。
他の属性タイプによる系列受信値.
例:
>>> class EitherModel(HasProps): ... prop = Either(Bool, Int, Auto) ... >>> m = EitherModel() >>> m.prop = True >>> m.prop = 10 >>> m.prop = "auto" >>> m.prop = 10.3 # ValueError !! >>> m.prop = "foo" # ValueError !!
Enum
列挙からの値を受け取る.
エニュメレーションの最初の値はデフォルト値として使われています default キーワードパラメータを用いる.
default
見 bokeh.core.enums より多くの情報を得ることができます
浮動小数点値を受け取る。
>>> class FloatModel(HasProps): ... prop = Float() ... >>> m = FloatModel() >>> m.prop = 10 >>> m.prop = 10.3 >>> m.prop = "foo" # ValueError !!
FontSize
Image
画像ファイルタイプ、例えば、PNG、JPEG、TIFF等を受け付ける。
この属性は、以下のように構成することができる。
ロードする文字列ファイル名 PIL.Image.open
PIL.Image.open
RGB(A)NumPy配列は,PNGに変換する.
A PIL.Image.Image 客体.
PIL.Image.Image
いずれの場合も、画像データはBase 64符号化文字列にシーケンス化される。
Instance
事例としての値を受け取る HasProps それがそうです。
HasProps
符号付き整数値を受け取る.
default (int or None, optional) -- この属性から作成された属性のデフォルト値(デフォルト値:なし)
>>> class IntModel(HasProps): ... prop = Int() ... >>> m = IntModel() >>> m.prop = 10 >>> m.prop = -200 >>> m.prop = 10.3 # ValueError !!
Interval
与えられた間隔に含まれる値を受け取る.
interval_type (numeric property) -- numeric types for the range, e.g. Int, Float
start (number) -- この範囲の最小許容値。値が小さい start 検証ミスを招きます。
start
end (number) -- 範囲の最大許容値。値が大きい end 検証ミスを招きます。
end
>>> class RangeModel(HasProps): ... prop = Range(Float, 10, 20) ... >>> m = RangeModel() >>> m.prop = 10 >>> m.prop = 20 >>> m.prop = 15 >>> m.prop = 2 # ValueError !! >>> m.prop = 22 # ValueError !! >>> m.prop = "foo" # ValueError !!
JSON
JSON文字列の値を受け取ります。
BoehJSはこの値を ひも. JSONの内容が含まれています。つまり、あなたは使用しなければなりません JSON.parse 値をJavaScriptハッシュに伸張する.
JSON.parse
default (string or None, optional) -- この属性から作成された属性のデフォルト値(デフォルト値:なし)
MarkerType
MinMaxBounds
範囲のための(最小、最大)境界タプルを受け入れる。
境界はタプル形式で提供されています (min, max) したがって、あなたの範囲が増大するか減少するかにかかわらず、第1の項は範囲の最小値であるべきであり、第2の項は最大値であるべきである。最小値>最大値を設定すると ValueError それがそうです。
(min, max)
境界を設定することで、必要に応じて描画を許可することができません。描画の一端のみを制約したい場合には,minまたはmaxを設定することができる. None 例: DataRange1d(bounds=(None, 12))
None
DataRange1d(bounds=(None, 12))
NonNegativeInt
非負整数を受け取る.
Percent
浮動小数点100%比を受け入れます
Percent Alphaの値や範囲などを指定するためには非常に有用である可能性があり,意味的にも意味がある.
>>> class PercentModel(HasProps): ... prop = Percent() ... >>> m = PercentModel() >>> m.prop = 0.0 >>> m.prop = 0.2 >>> m.prop = 1.0 >>> m.prop = -2 # ValueError !! >>> m.prop = 5 # ValueError !!
PositiveInt
正の整数を受け取る。
RGB
色を受ける。RGB値。
Regex
与えられた正規表現にマッチする文字列を受け取る.
>>> class RegexModel(HasProps): ... prop = Regex("foo[0-9]+bar") ... >>> m = RegexModel() >>> m.prop = "foo123bar" >>> m.prop = "foo" # ValueError !! >>> m.prop = [1, 2, 3] # ValueError !!
Size
非負値を受け入れる。
>>> class SizeModel(HasProps): ... prop = Size() ... >>> m = SizeModel() >>> m.prop = 0 >>> m.prop = 10e6 >>> m.prop = -10 # ValueError !! >>> m.prop = "foo" # ValueError !!
String
文字列の値を受け取る.
>>> class StringModel(HasProps): ... prop = String() ... >>> m = StringModel() >>> m.prop = "foo" >>> m.prop = 10.3 # ValueError !! >>> m.prop = [1, 2, 3] # ValueError !!
Struct
構造に属する値を受け取る.
TimeDelta
TimeDelta値を受け取る.
Array
NumPy配列の値を受け取る.
ColumnData
Python辞書として適切なPython辞書を受け入れます data 対象の属性 ColumnDataSource それがそうです。
data
ColumnDataSource
この種類は Dict これは,NumPy配列である列の符号化を効率的に扱う.
Dict
Python辞書値を受け取ります。
デフォルト値が入力される場合、この属性の新しい使用のたびに、その値の浅い表のコピーが使用される。
List
Pythonリストの値を受け取ります。
RelativeDelta
時間増分値のRelativeDelta判定を受ける.
リスト、メタデータ、配列などの非文字列順序の値列を受け取る。
Tuple
Pythonタプルの値を受け取ります。
AngleSpec
A DataSpec 属性は、数値固定値を受け取り、角度単位を格納するために関連する単位属性を提供する。
DataSpec
単位の受信可能値は "rad" そして "deg" それがそうです。
"rad"
"deg"
ColorSpec
A DataSpec 属性、その属性を受け入れる Color 固定値。
♪the ColorSpec 属性は,まず文字列の値を色として解釈することを試みる.そうでなければ、文字列値はフィールド名として解釈される。例:
m.color = "#a4225f" # value (hex color string) m.color = "firebrick" # value (named CSS color string) m.color = "foo" # field (named "foo")
この自動解釈はDICTフォーマットで上書きすることもできますし、使用することもできます field() 機能:
field()
m.color = { "field": "firebrick" } # field (named "firebrick") m.color = field("firebrick") # field (named "firebrick")
DataDistanceSpec
A DataSpec データ空間距離の数値固定値を受け入れる属性であって、関連する単位属性も提供する属性であって、前記属性報告 "data" 一つの単位として。
"data"
属性の基底クラスは,これらの属性は固定値または引用を受ける ColumnDataSource それがそうです。
多くのBokehモデルは、ユーザがそれを単一の固定値に設定することを望むか、またはデータソース内のある列から値をとることを望む可能性がある属性を有する。具体例としては、1つの字形があることを考慮してください x 位置の属性。例えば、描画されたすべての字形を同じ位置に設定することが望ましいかもしれません x=10 それがそうです。以下のことを書くだけで便利です。
x
x=10
glyph.x = 10
あるいは、データソースの“圧力”列に応じて、描画可能な各フォントには異なる位置があるはずである。この例ではこう書きたいと思います
glyph.x = "pressure"
ポーク! DataSpec 属性(およびサブクラス)は,このような表現の単純さと整合性を提供する.結局のところ全ての DataSpec 属性解析は辞書値であり,使用可能である "value" 鍵、または1つ "field" キーは,具体的にはその設定方式に依存する.
"value"
"field"
glyph.x = 10 # => { 'value': 10 } glyph.x = "pressure" # => { 'field': 'pressure' }
ブラウザがこれらの下位辞書辞書の値を受信すると、BokehJSはそれらを解釈し、正しい予期される操作を行うことを知っている(すなわち、ここでは、 x=10 フォントを使用したり x “圧力”の欄からの座標)。このように,ユーザの立場から見ると,これら2つの用例はいずれも異なる処理を行うことなく容易にPythonで表現することができる.
注目すべきは DataSpec フォーマットの正しい辞書値を使用して属性を直接設定することもできます:
glyph.x = { 'value': 10 } # same as glyph.x = 10 glyph.x = { 'field': 'pressure' } # same as glyph.x = "pressure"
場合によっては、属性を辞書に直接設定することが有用である可能性がある。例えばいくつかは DataSpec サブクラスはもう一つ追加されました "units" 辞書の鍵です。このキーは通常自動的に設定されるが,辞書フォーマットは必要に応じて上書きする直接機構を提供する.また、 DataSpec はい一つあります。 "transform" 任意の固定値またはフィールド値を使用する前に、任意の固定値またはフィールド値に適用すべきクライアント変換を指定するキー。例えば皆さんは Jitter 変換して x 価値:
"units"
"transform"
Jitter
glyph.x = { 'value': 10, 'transform': Jitter(width=0.4) }
Note that DataSpec is not normally useful on its own. Typically, a model will define properties using one of the subclasses such as NumberSpec or ColorSpec. For example, a Bokeh model with x, y and color properties that can handle fixed values or columns automatically might look like:
NumberSpec
y
color
class SomeModel(Model): x = NumberSpec(default=0, help="docs for x") y = NumberSpec(default=0, help="docs for y") color = ColorSpec(help="docs for color") # defaults to None
DistanceSpec
A DataSpec 属性,その属性は引用を受ける ColumnDataSource また、関連する単位属性も提供されて単位情報を格納する。単位の受信可能値は "screen" そして "data" それがそうです。
"screen"
FontSizeSpec
A DataSpec 属性は,その属性はフォントサイズの固定値を受け取る.
♪the FontSizeSpec 属性は,まず文字列値をフォントサイズ(すなわち有効なCSS長さ値)と解釈することを試みる.そうでなければ、文字列値はフィールド名として解釈される。例:
m.font_size = "13px" # value m.font_size = "1.5em" # value m.font_size = "foo" # field
すべての有効CSS長さ単位の完全なリストは、ここで見つけることができる:
Https://drafts.csswg.org/css-value/#Length
MarkerSpec
A DataSpec 属性は,その属性はタグタイプを固定値として受け取る.
♪the MarkerSpec 属性は,まず文字列の値をタグタイプとして解釈することを試みる.そうでなければ、文字列値はフィールド名として解釈される。例:
m.font_size = "circle" # value m.font_size = "square" # value m.font_size = "foo" # field
A DataSpec 数値と日時固定値の属性を受け取る.
デフォルトの場合,日付と日時値はただちに紀元以来のミリ秒数に変換される.日時値の処理は、以下のパラメータを渡すことで無効にすることができます accept_datetime=False それがそうです。
accept_datetime=False
デフォルトの場合,timedelta値はただちに絶対ミリ秒に変換される.時間増分値の処理は、以下のパラメータを渡すことで無効にすることができる accept_timedelta=False
accept_timedelta=False
Timedelta値は絶対ミリ秒と解釈される.
m.location = 10.3 # value m.location = "foo" # field
PropertyUnitsSpec
A DataSpec 属性は、数値固定値を受け取り、単位情報を格納するために関連するUnits属性を提供する。
ScreenDistanceSpec
A DataSpec スクリーン空間距離の数値固定値を受け入れる属性であって、関連する単位属性も提供する属性であって、前記属性報告 "screen" 一つの単位として。
StringSpec
A DataSpec 文字列の固定値の属性を受け取る
許容可能な固定値およびフィールド名はともに文字列であるため、これらの可能性を明示的に除去する必要がある場合がある。デフォルトの場合、文字列の値はフィールドと解釈されるが、 value() 関数を使用して、文字列を値として解釈すべきである:
value()
m.title = value("foo") # value m.title = "foo" # field
UnitsSpec
A DataSpec 属性は、当該属性が数値固定値を受け取り、関連するセル値を直列化する。
expr
Bokehの“expr”仕様を明示的に返す便利な関数 DataSpec 財産です。
expression (Expression) -- 対象の計算式 DataSpec 財産です。
transform (Transform, optional) -- 適用する変換(デフォルト値:なし)
{ "expr": expression }
dict
注釈
この関数を含むのは完全性のためである.デフォルトの場合、属性仕様の文字列値はフィールド名と解釈される。
field
Bokehの“field”仕様を明示的に返すための便利な関数 DataSpec 財産です。
name (str) -- 参照するデータソースフィールドの名前 DataSpec 財産です。
{ "field": name }
value
Bokehの“value”仕様を明示的に返す便利な関数 DataSpec 財産です。
val (any) -- 属性が指定する固定値. DataSpec 財産です。
{ "value": name }
デフォルトの場合、属性仕様の文字列値はフィールド名と解釈される。テキスト属性を使用して固定値を指定する場合、この関数は特に有用である。
# The following will take text values to render from a data source # column "text_column", but use a fixed value "16px" for font size p.text("x", "y", text="text_column", text_font_size=value("16px"), source=source)
Include
Bokehモデルには“混合”属性集合が含まれる.
見 bokeh.core.property_mixins もっと細かいことを知っています。
Override
派生モデルにおけるBokeh属性の属性をカバーする.
Bokeh Modelをサブクラス化する際には,クラス上の属性ではなく,属性自体の何らかの属性を変更する必要がある可能性がある.これは使用することで Override 級友たち。
現在のところ Override 書き換えにしか使えない default 属性の値。
default (obj) -- サブクラス上のこの属性のデフォルト値
以下のクラス定義を考慮してください。
from bokeh.model import Model from bokeh.properties import Int, Override class Parent(Model): foo = Int(default=10) class Child(Parent): foo = Override(default=20)
親クラスは整数属性を持つ foo デフォルト値は10です。サブクラスは以下のコードを用いる:
foo
foo = Override(default=20)
指定する foo サブクラスのインスタンスでは、属性は20であるべきである:
>>> p = Parent() >>> p.foo 10 >>> c = Child() >>> c.foo 20
PandasDataFrame
Pandas DataFrame値を受け取る.
この属性は、“Accept”節のようなタイプ検証をサポートするためにのみ使用される。それ自体は直列化不可能であり,Bokehモデルに直接追加することはあまり役に立たない.
PandasGroupBy
デフォルトの場合,Bokeh属性は値に対してタイプ検証を行う.これは、PythonとJavaScriptの間で交換される任意のデータの一貫性を確保し、ユーザがエラータイプの値を設定しようとしたときに詳細かつ即時的なフィードバックを提供するのに役立ちます。しかし、このようなタイプのチェックはいくつかのオーバヘッドを発生させる。場合によっては、性能を向上させるためには、特定の位置で検証を完全にオフにする必要がある可能性がある。以下のAPIは、いつタイプ検証が行われるかを制御するために使用され
validate
制御BOKEH属性の検証
コンテキストマネージャとして使用することも、通常の呼び出し可能なものとしても使用することができる
value (bool) -- 検証すべきかどうか
with validate(False): # do no validate while within this block pass validate(False) # don't validate ever
参考
validation_on() :検証状態のチェック
validation_on()
without_property_validation() :機能装飾器
without_property_validation()
without_property_validation
プロパティ検証は、更新コール中にオフになります
@without_property_validation def update(attr, old, new): # do things without validation
validate :コンテキストマネージャは、より細粒度の制御を実現