Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bokeh logarithmic scale for Bar chart

I know that I can do logarithmic scales with bokeh using the plotting API:

p = figure(
    tools="pan,box_zoom,reset,previewsave",
    y_axis_type="log", y_range=[0.001, 10**22], title="log axis example",
    x_axis_label='sections', y_axis_label='particles'
)

However, I can't figure out how to get this to apply to high level charts such as Bokeh.charts.Bar. In general I'm having a lot of trouble grokking what to relationship is between a Chart and a figure. Can anyone point me to some documentation on this or explain how to modify things which are only exposed through figure and have them affect my Chart.

like image 205
Joe Doliner Avatar asked Jan 18 '15 03:01

Joe Doliner


1 Answers

I am specifically going to update the documentation describing the different Bokeh APIs this week, but for now, the three Bokeh APIs in increasing order of "level":

  • models interface: lowest level API, base serialization layer, must put everything together everything manually
  • glyphs interface (bokeh.plotting): mid-level API, easily create plots/figures centered around visual glyphs with attributes tied to data
  • charts interface (bokeh.charts): high level API for canned/schematic statistical charts, e.g. "BoxPlot" and "Histogram".

There is no particular relation between figure and the various chart functions, except that they both produces subclasses of Plot as output.

I am not sure it is currently possible to add a log axis to the Bar plot in "charts" interface (that would be a reasonable feature to add). However it would be simple to make a boxplot "by hand" using the middle "glyphs" interface using rect or quad glyphs. Here is a quick example:

from bokeh.plotting import figure, output_file, show

output_file("bars.html")

p = figure(title="log bar example", y_axis_type="log")

p.quad(
    bottom=0, top=[10**5, 10**8, 10**3], 
    left=[0, 2, 4], right=[1,3,5]
)

show(p)  
like image 177
bigreddot Avatar answered Oct 20 '22 11:10

bigreddot