bokeh.models.ranges

Models for describing different kinds of ranges of values in different kinds of spaces (e.g., continuous or categorical) and with options for “auto sizing”.

class DataRange(**kwargs)

Bases: bokeh.models.ranges.Range

A base class for all data range types. DataRange is not generally useful to instantiate on its own.

names

property type: names:List(String)

A list of names to query for. If set, only renderers that have a matching value for their name attribute will be used for autoranging.

renderers

property type: renderers:List(Instance(Renderer))

An explicit list of renderers to autorange against. If unset, defaults to all renderers on a plot.

JSON Prototype
{
  "callback": null,
  "id": "df5e9727-9d1f-4c7f-a1cf-30d6190dfa3b",
  "name": null,
  "names": [],
  "renderers": [],
  "tags": []
}
class DataRange1d(*args, **kwargs)

Bases: bokeh.models.ranges.DataRange

An auto-fitting range in a continuous scalar dimension. The upper and lower bounds are set to the min and max of the data.

bounds

property type: bounds:MinMaxBounds(Auto, Tuple(Float, Float))

The bounds that the range is allowed to go to - typically used to prevent the user from panning/zooming/etc away from the data.

By default, the bounds will be None, allowing your plot to pan/zoom as far as you want. If bounds are ‘auto’ they will be computed to be the same as the start and end of the DataRange1d.

Bounds are provided as a tuple of (min, max) so regardless of whether your range is increasing or decreasing, the first item should be the minimum value of the range and the second item should be the maximum. Setting min > max will result in a ValueError.

If you only want to constrain one end of the plot, you can set min or max to None e.g. DataRange1d(bounds=(None, 12))

default_span

property type: default_span:Float

A default width for the interval, in case start is equal to end.

end

property type: end:Float

An explicitly supplied range end. If provided, will override automatically computed end value.

flipped

property type: flipped:Bool

Whether the range should be “flipped” from its normal direction when auto-ranging.

follow

property type: follow:Enum(‘start’, ‘end’)

Configure the data to follow one or the other data extreme, with a maximum range size of follow_interval.

If set to "start" then the range will adjust so that start always corresponds to the minimum data value (or maximum, if flipped is True).

If set to "end" then the range will adjust so that end always corresponds to the maximum data value (or minimum, if flipped is True).

If set to None (default), then auto-ranging does not follow, and the range will encompass both the minimum and maximum data values.

follow cannot be used with bounds, and if set, bounds will be set to None.

follow_interval

property type: follow_interval:Float

If follow is set to "start" or "end" then the range will always be constrained to that:

abs(r.start - r.end) <= follow_interval

is maintained.

range_padding

property type: range_padding:Float

A percentage of the total range size to add as padding to the range start and end.

start

property type: start:Float

An explicitly supplied range start. If provided, will override automatically computed start value.

JSON Prototype
{
  "bounds": null,
  "callback": null,
  "default_span": 2.0,
  "end": null,
  "flipped": false,
  "follow": null,
  "follow_interval": null,
  "id": "fab6c482-5b29-403a-9ac0-cd38d438af19",
  "name": null,
  "names": [],
  "range_padding": 0.1,
  "renderers": [],
  "start": null,
  "tags": []
}
class FactorRange(*args, **kwargs)

Bases: bokeh.models.ranges.Range

A range in a categorical dimension.

In addition to supplying factors keyword argument to the FactorRange initializer, you can also instantiate with the convenience syntax:

FactorRange("foo", "bar") # equivalent to FactorRange(factors=["foo", "bar"])

Note

FactorRange may be renamed to CategoricalRange in the future.

bounds

property type: bounds:Either(Auto, List(String), List(Int))

The bounds that the range is allowed to go to - typically used to prevent the user from panning/zooming/etc away from the data.

Unlike Range1d and DataRange1d, factors do not have an order and so a min and max cannot be provied in the same way. bounds accepts a list of factors, that constrain the displayed factors.

By default, bounds are None, allows unlimited panning or zooming.

If bounds='auto', bounds will be the same as factors and the plot will not be able to pan or zoom beyond the first and last items in factors.

If you provide a list, then only the factors that are in that list will be displayed on the plot and the plot will not pan or zoom outside the first and last items in the shortened factors list. Note the order of factors is the defining order for your plot.

Values of bounds that are not in factors are acceptable and will simply have no impact on the plot.

Examples:

Auto behavior:

x_range = FactorRange(factors=[“apples”, “dogs”, “peaches”, “bananas”, “pigs”], bounds=’auto’)

The plot will display all the factors and you will not be able to pan left of apples or right of pigs.

Constraining behavior:

x_range = FactorRange(factors=[“apples”, “dogs”, “peaches”, “bananas”, “pigs”], bounds=[“apples”, “bananas”, “peaches”])

The plot will display the chart with only the factors [“apples”, “peaches”, “bananas”] (in that order) and the plot will not pan left of apples or right of bananas.

factors

property type: factors:Either(List(String), List(Int))

A list of string or integer factors (categories) to comprise this categorical range.

offset

property type: offset:Float

An offset to the (synthetic) range (default: 0)

Note

The primary usage of this is to support compatibility and integration with other plotting systems, and will not generally of interest to most users.

JSON Prototype
{
  "bounds": null,
  "callback": null,
  "factors": [],
  "id": "e823bcec-7888-44a3-a9ab-c00ce0395c81",
  "name": null,
  "offset": 0,
  "tags": []
}
class Range(**kwargs)

Bases: bokeh.model.Model

A base class for all range types. Range is not generally useful to instantiate on its own.

callback

property type: callback:Instance(Callback)

A callback to run in the browser whenever the range is updated.

JSON Prototype
{
  "callback": null,
  "id": "41eac142-bd9b-4390-be9d-5dd6536430b6",
  "name": null,
  "tags": []
}
class Range1d(*args, **kwargs)

Bases: bokeh.models.ranges.Range

A fixed, closed range [start, end] in a continuous scalar dimension.

In addition to supplying start and end keyword arguments to the Range1d initializer, you can also instantiate with the convenience syntax:

Range(0, 10) # equivalent to Range(start=0, end=10)
bounds

property type: bounds:MinMaxBounds(Auto, Tuple(Float, Float), Tuple(Datetime, Datetime))

The bounds that the range is allowed to go to - typically used to prevent the user from panning/zooming/etc away from the data.

If set to 'auto', the bounds will be computed to the start and end of the Range.

Bounds are provided as a tuple of (min, max) so regardless of whether your range is increasing or decreasing, the first item should be the minimum value of the range and the second item should be the maximum. Setting min > max will result in a ValueError.

By default, bounds are None and your plot to pan/zoom as far as you want. If you only want to constrain one end of the plot, you can set min or max to None.

Examples:

Range1d(0, 1, bounds=’auto’) # Auto-bounded to 0 and 1 (Default behavior) Range1d(start=0, end=1, bounds=(0, None)) # Maximum is unbounded, minimum bounded to 0
end

property type: end:Either(Float, Datetime, Int)

The end of the range.

start

property type: start:Either(Float, Datetime, Int)

The start of the range.

JSON Prototype
{
  "bounds": null,
  "callback": null,
  "end": 1,
  "id": "1961c856-3c52-4bf3-ab43-8fc813710586",
  "name": null,
  "start": 0,
  "tags": []
}