Bokeh logarithmic scale for Bar chart

血红的双手。 提交于 2019-12-22 06:36:30

问题


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.


回答1:


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)  


来源:https://stackoverflow.com/questions/28006981/bokeh-logarithmic-scale-for-bar-chart

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!