当数字为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')
答案 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')
产生此图像: