四分之一与日志轴在散景

时间:2017-10-16 14:05:48

标签: python visualization bokeh

当数字为figure.quad()时,是否可以使用y_axis_type='log'?我能够绘制日志变换的四元组。我还能够在对数轴上绘制具有相同值的线。但是当我尝试在对数轴上绘制四边形时,我得到一个空白的数字。我使用散景0.12.9。下面是一些带有预期输出的测试代码......

from bokeh.io import export_png
from bokeh.layouts import gridplot
from bokeh.plotting import figure
import numpy as np

N = 50
left = np.arange(N)
right = np.arange(1, N+1)
bottom = np.zeros(N)
top = 100 * np.sin(np.pi*left/N)**2 + 1 

fig_args = dict(width=400, height=400, tools="")

f1 = figure(**fig_args, title='Quad')
f1.quad(left=left, right=right, top=top, bottom=bottom, line_color='black')

f2 = figure(**fig_args, title='Quad of Logs')
f2.quad(left=left, right=right, top=np.log10(top), bottom=bottom, line_color='black')

f3 = figure(**fig_args, y_axis_type='log', title='Line w/Log Axis')
f3.line(left, top)

f4 = figure(**fig_args, y_axis_type='log', title='Quad w/Log Axis')
f4.quad(left=left, right=right, top=top, bottom=bottom, line_color='black')

lout = gridplot([f1, f2, f3, f4], ncols=2)
export_png(lout, 'test.png')

enter image description here

1 个答案:

答案 0 :(得分:2)

仍有未解决的问题需要确定如何最好地使Bokeh在对数标度中处理零点。从纯粹的数学观点来看,它们没有多大意义。有一些可行的实用方法,但尚未实施。但是,如果您提供明确的方向,则可以获得所需的绘图。您可以使用0以外的其他内容作为bottom值,明确设置y_range

f4 = figure(**fig_args, y_axis_type='log', title='Quad w/Log Axis', y_range=(1, 200))
f4.quad(left=left, right=right, top=top, bottom=0.000000001, line_color='black')

产生此图像:

enter image description here