如何用散景显示对数刻度的直方图?

时间:2017-02-13 16:25:27

标签: histogram bokeh

问题全在标题中。我正在尝试使用从bokeh.charts导入的直方图对象,但无法弄清楚如何以对数比例显示它。在我的特定情况下,我需要以对数刻度显示x轴和y轴。

2 个答案:

答案 0 :(得分:4)

好吧似乎有可能有对数刻度。但是,我应该使用绘图API而不是使用图表API:

import numpy as np
from bokeh.plotting import figure, show, output_notebook

output_notebook()

# generate random data from a powerlaw
measured = 1/np.random.power(2.5, 100000)

hist, edges = np.histogram(measured, bins=50)

p = figure(title="Power law (a=2.5)", x_axis_type="log", y_axis_type='log')
p.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:], line_color=None)

show(p)

enter image description here

感谢bigreddot提供另一个问题的帮助!

答案 1 :(得分:1)

请注意,@ famagar的上述解决方案不适用于最新版本的散景(仅使用0.12.14进行了尝试 - 请参阅this issue)。

问题是对数刻度cannot properly handle zeros

要解决这个问题,必须将bottom参数置于某个非零值。 例如,要获得与上图bottom=1中相同的结果:

p.quad(top=hist, bottom=1, left=edges[:-1], right=edges[1:], line_color=None)