@quartic/bokehjs
Version:
Interactive, novel data visualization
40 lines (31 loc) • 1.08 kB
text/coffeescript
import {BasicTickFormatter} from "./basic_tick_formatter"
import {TickFormatter} from "./tick_formatter"
import {logger} from "core/logging"
import * as p from "core/properties"
export class LogTickFormatter extends TickFormatter
type: 'LogTickFormatter'
{
ticker: [ p.Instance, null ]
}
initialize: (attrs, options) ->
super(attrs, options)
= new BasicTickFormatter()
if not ?
logger.warn("LogTickFormatter not configured with a ticker, using default base of 10 (labels will be incorrect if ticker base is not 10)")
doFormat: (ticks, loc) ->
if ticks.length == 0
return []
if ?
base = .base
else
base = 10
small_interval = false
labels = new Array(ticks.length)
for i in [0...ticks.length]
labels[i] = "#{base}^#{ Math.round(Math.log(ticks[i]) / Math.log(base)) }"
if (i > 0) and (labels[i] == labels[i-1])
small_interval = true
break
if small_interval
labels = .doFormat(ticks)
return labels