在散景中的线性和对数刻度之间切换
Toggle between linear and log scale in bokeh
如何重新生成 this example 线性和对数刻度之间的切换?
背景:我是 Matplotlib 的长期用户,最近是 Bokeh 用户。
我开始使用 Bokeh 的主要原因之一是它提供的交互性。其中很大一部分是能够在绘图中的线性和对数刻度之间切换(这是我日常生活中真正需要的东西)。这个问题在 2015 年 here 得到了解决,当时没有明确的答案。
然而,2 年过去了,我想知道是否有一种方法可以包含 button/widget 以将 x 轴和 y 轴的线性比例尺更改为对数比例尺。如果没有,我确定有一种干净的方法可以以某种方式模拟该行为(无需并排绘制两个图)。
一个可能的解决方案是将线性图和对数图都放入选项卡中,例如:
from bokeh.plotting import figure, show
from bokeh.models.widgets import Tabs, Panel
panels = []
for axis_type in ["linear", "log"]:
fig = figure(x_axis_type=axis_type, y_axis_type=axis_type)
fig.scatter(x=[1,10,100,1000], y=[1,10,100,1000])
panel = Panel(child=fig, title=axis_type)
panels.append(panel)
tabs = Tabs(tabs=panels)
show(tabs)
或者,您可以将 bokeh.models.widgets.Button
与更改绘图范围的 CustomJS 回调连接起来,但上面的方法对我来说似乎更容易一些。
如何重新生成 this example 线性和对数刻度之间的切换?
背景:我是 Matplotlib 的长期用户,最近是 Bokeh 用户。 我开始使用 Bokeh 的主要原因之一是它提供的交互性。其中很大一部分是能够在绘图中的线性和对数刻度之间切换(这是我日常生活中真正需要的东西)。这个问题在 2015 年 here 得到了解决,当时没有明确的答案。
然而,2 年过去了,我想知道是否有一种方法可以包含 button/widget 以将 x 轴和 y 轴的线性比例尺更改为对数比例尺。如果没有,我确定有一种干净的方法可以以某种方式模拟该行为(无需并排绘制两个图)。
一个可能的解决方案是将线性图和对数图都放入选项卡中,例如:
from bokeh.plotting import figure, show
from bokeh.models.widgets import Tabs, Panel
panels = []
for axis_type in ["linear", "log"]:
fig = figure(x_axis_type=axis_type, y_axis_type=axis_type)
fig.scatter(x=[1,10,100,1000], y=[1,10,100,1000])
panel = Panel(child=fig, title=axis_type)
panels.append(panel)
tabs = Tabs(tabs=panels)
show(tabs)
或者,您可以将 bokeh.models.widgets.Button
与更改绘图范围的 CustomJS 回调连接起来,但上面的方法对我来说似乎更容易一些。