mapper.coffee | |
---|---|
Setup Bokeh Module | if this.Bokeh
Bokeh = this.Bokeh
else
Bokeh = {}
this.Bokeh = Bokeh
Collections = Continuum.Collections
safebind = Continuum.safebind
HasParent = Continuum.HasParent
BokehView = Continuum.ContinuumView
HasProperties = Continuum.HasProperties
class Bokeh.LinearMapper extends HasParent |
XY View state - handles mapper functionality along 2 axes | initialize : (attrs, options) ->
super(attrs, options)
@data_range = options.data_range
@viewstate = options.viewstate
@screendim = options.screendim #height or width
@register_property('scalestate', @_get_scale, true) |
if height/width changes, updated mapper | @add_dependencies('scalestate', @viewstate, @screendim) |
if range limits change, update | @add_dependencies('scalestate', @data_range,
['start', 'end'])
_get_scale : () ->
screendim = @viewstate.get(@screendim)
scale_factor = @viewstate.get(@screendim)
scale_factor = scale_factor/(@data_range.get('end')-@data_range.get('start'))
offset = -(scale_factor * @data_range.get('start'))
return [scale_factor, offset]
v_map_screen : (datav) ->
[scale_factor, offset] = @get('scalestate')
for data, idx in datav
datav[idx] = scale_factor * data + offset
return datav
map_screen : (data) ->
[scale_factor, offset] = @get('scalestate')
return scale_factor * data + offset
map_data : (screen) ->
[scale_factor, offset] = @get('scalestate')
return (screen - offset) / scale_factor
class DiscreteColorMapper extends HasProperties
type : 'DiscreteColorMapper'
_get_factor_map : () =>
domain_map = {}
for val, index in @get_obj('data_range').get('values')
domain_map[val] = index
return domain_map
_get_scale : () =>
return d3.scale.ordinal().domain(_.values(@get('factor_map')))
.range(@get('colors'))
dinitialize : (attrs, options) ->
super(attrs, options)
@register_property('factor_map', @_get_factor_map, true)
@add_dependencies('factor_map', this, 'data_range')
@register_property('scale', @_get_scale, true)
@add_dependencies('scale', this, ['colors', 'factor_map'])
map_screen : (data) ->
@get('scale')(@get('factor_map')[data]);
DiscreteColorMapper::defaults = _.clone(DiscreteColorMapper::defaults)
_.extend(DiscreteColorMapper::defaults
,
colors : [
"#1f77b4", "#aec7e8",
"#ff7f0e", "#ffbb78",
"#2ca02c", "#98df8a",
"#d62728", "#ff9896",
"#9467bd", "#c5b0d5",
"#8c564b", "#c49c94",
"#e377c2", "#f7b6d2",
"#7f7f7f", "#c7c7c7",
"#bcbd22", "#dbdb8d",
"#17becf", "#9edae5"
],
data_range : null
)
class DiscreteColorMappers extends Continuum.Collection
model : DiscreteColorMapper
if not Continuum.Collections.DiscreteColorMapper
Continuum.Collections.DiscreteColorMapper = new DiscreteColorMappers
|