12

the y axis ticks seem to be formatting numbers like 500000000 to 5.000e+8. Is there a way to control the display so that it displays as 500000000?

using python 2.7, bokeh 0.5.2

i m trying out the timeseries example at bokeh tutorials page

The tutorial plots 'Adj Close' against 'Date' but i'm plotting with 'Volume' against 'Date'

Amit
  • 149
  • 1
  • 1
  • 5
  • Here is the link to the code .. http://bokeh.pydata.org/tutorial/topical.html#timeseries I m using Volume in place of Adj Close – Amit Sep 04 '14 at 04:49
  • got around my problem by formatting before putting the data in the ColumnDataSource. this way, the hover text format can be controlled. But I still haven't been able to format the axis displays.. – Amit Sep 07 '14 at 03:58

2 Answers2

21

You can also use NumeralTickFormatter as used in the toy plot below. The other possible values in place of '00' are listed here.

import pandas as pd
import numpy as np
from bokeh.plotting import figure, output_file, show
from bokeh.models import NumeralTickFormatter

df = pd.DataFrame(np.random.randint(0, 90000000000, (10,1)), columns=['my_int'])
p = figure(plot_width=700, plot_height=280, y_range=[0,100000000000])
output_file("toy_plot_with_commas")

for index, record in df.iterrows():
    p.rect([index], [record['my_int']/2], 0.8, [record['my_int']], fill_color="red", line_color="black")

p.yaxis.formatter=NumeralTickFormatter(format="00")
show(p)
dux2
  • 1,770
  • 1
  • 21
  • 27
sharon
  • 4,406
  • 1
  • 17
  • 10
12

You have to add the option p.left[0].formatter.use_scientific = False to your code. In the timeseries tutorial, it'd be:

p1 = figure(title="Stocks")
p1.line(
    AAPL['Date'],
    AAPL['Adj Close'],
    color='#A6CEE3',
    legend='AAPL',
)

p1.left[0].formatter.use_scientific = False # <---- This forces showing 500000000 instead of 5.000e+8 as you want

show(VBox(p1, p2))
Marc Garcia
  • 3,287
  • 2
  • 28
  • 37