是否可以自定义panel.pane.Audio元素? 我试图传递诸如width或height之类的参数:
pn_audio = pn.pane.Audio(audio_data,sample_rate=sps,width=800)
但作为bokeh应用程序启动后无效。
以下是一些可用的代码:
import numpy as np
import holoviews as hv
import holoviews.plotting.bokeh
from holoviews import opts
import panel as pn
from bokeh.application import Application
from bokeh.application.handlers.function import FunctionHandler
from bokeh.server.server import Server
import socket
hostname = socket.gethostname()
IPAddr = socket.gethostbyname(hostname)
def generate_audio():
sps = 25600 # Samples per second
duration = 10 # Duration in seconds
modulator_frequency = 2.0
carrier_frequency = 120.0
modulation_index = 2.0
time = np.arange(sps*duration) / sps
modulator = np.sin(2.0 * np.pi * modulator_frequency * time) * modulation_index
carrier = np.sin(2.0 * np.pi * carrier_frequency * time)
waveform = np.sin(2. * np.pi * (carrier_frequency * time + modulator))
waveform_quiet = waveform * 0.3
waveform_int = np.int16(waveform_quiet * 32767)
return waveform_int,sps
def modify_doc(doc):
audio_data,sps = generate_audio()
hv_curve = hv.Curve( audio_data).opts(width=800)
pn_curve = pn.panel(hv_curve)
pn_audio = pn.pane.Audio(audio_data,sample_rate=sps)
# pn_txt = pn.widgets.TextInput(name='A widget',value='A string')
plot = pn.Column(*[pn_curve,pn_audio])
doc.add_root(plot.get_root())
return doc
app = Application(FunctionHandler(modify_doc))
server = Server(app,address=IPAddr,allow_websocket_origin=['{}:5006'.format(IPAddr)],port=5006)
server.start()
print('Opening Bokeh application on {}'.format(IPAddr))
server.io_loop.add_callback(server.show,"/")
server.io_loop.start()
我从命令行开始应用程序
python start_bokeh_server.py
目标是使音频元素与上图一样宽。 现在看来bokeh app
关于如何完成此工作的任何想法,而无需深入探讨面板的javascript部分? 预先感谢。