我想有一个"全屏"散景应用程序,带有绘图区域和使用选项卡的控件区域.
from bokeh.plotting import figure
from bokeh.io import show
from bokeh.layouts import row, widgetbox
from bokeh.models.widgets import Button, Panel, Tabs
tools_to_show = 'hover, box_zoom, save, reset, pan'
p = figure(tools=tools_to_show, output_backend = "webgl")
p.line([1, 2, 3, 4], [9, 5, 7, 6])
b_valid = Button(label="valid")
b_select = Button(label="select")
wbox1 = widgetbox(b_valid)
wbox2 = widgetbox(b_select)
tab1 = Panel(title="tab valid", child=wbox1)
tab2 = Panel(title="tab select", child=wbox2)
tabs = Tabs(tabs=[tab1, tab2])
my_plot = row(p, tabs, sizing_mode="stretch_both")
show(my_plot)
Run Code Online (Sandbox Code Playgroud)
尽管使用了sizing_mode ="stretch_both",但是选项卡中的小部件并未使用所有可用空间.
我试图在窗口小部件框中放置sizing_mode ="stretch_both",但没有成功.我也尝试使用sizing_mode ="scale_width",但是徒劳无功.
任何的想法 ?
我使用散景来绘制温度曲线,但在某些情况下,数据集非常大(> 500k 测量值)并且我对散景的用户体验滞后(事件与 output_backend="webgl")。所以我正在试验数据着色器以获得更快的渲染和更流畅的用户体验。
但是datashader给出的视觉效果没有bokeh的结果好看,datashader的结果有锯齿:
我通过以下代码获得了这种并排比较:
import pandas as pd
import datashader as ds
import datashader.transfer_functions as tf
from bokeh.plotting import figure
from bokeh.io import output_notebook, show
from bokeh.models import ColumnDataSource
from bokeh.layouts import row
import numpy as np
output_notebook()
# generate signal
n = 2000
start = 0
end = 70
signal = [np.sin(x) for x in np.arange(start, end, step=(end-start)/n)]
signal = pd.DataFrame(signal, columns=["signal"])
signal = signal.reset_index()
# create a bokeh plot
source = ColumnDataSource(signal)
p = figure(plot_height=300, plot_width=400, …Run Code Online (Sandbox Code Playgroud) 我想在双轴图上绘制一些数据,我在文档中找到了一个示例,但我需要动态范围 (DataRange1d),因为我的数据在可视化过程中会发生变化,我事先不知道它会是什么。
我的问题:两个 y 范围具有相同的缩放比例,并且锁定在一起:我无法仅缩小范围。
from numpy import pi, arange, sin, linspace
from bokeh.plotting import show
from bokeh.models import LinearAxis, Range1d, DataRange1d
from bokeh.models import Plot, Title, PanTool, WheelZoomTool
from bokeh.models import Circle, ColumnDataSource
# get some data
x = arange(-2*pi, 2*pi, 0.1)
y = sin(x)
y2 = linspace(0, 100, len(y))
# configure plot
p = Plot(title = Title(text="Titre"), x_range = DataRange1d(), y_range = DataRange1d())
p.add_tools(PanTool(), WheelZoomTool())
p.add_layout(LinearAxis(), "below")
p.add_layout(LinearAxis(), "left")
# add extra y range
p.extra_y_ranges = …Run Code Online (Sandbox Code Playgroud)