ts1 = TimeSeries(
xyvalues1, index='Time', legend=True,
title="RSSI and PER", tools=TOOLS, xscale='datetime', xlabel = 'time', ylabel='Rx Power (dB)', width = 1800, height = 300)
ts2 = TimeSeries(
xyvalues2, index='Time', legend=True,
title="EVM", tools = TOOLS, xscale='datetime', xlabel = 'time', ylabel='EVM (dB)', width = 1800, height= 300)
ts2.x_range = ts1.x_range
ts2.y_range = ts1.y_range
在上面的代码中,如何指定ts1和ts2的行宽?
答案 0 :(得分:1)
这是一个很好的问题。由于Stack Overflow不是跟踪此类改进和讨论的最佳位置,我建议您在bokeh github项目中向bokeh mailing list或open an issue打开此类问题或讨论: - )
在一些first discussions关于该接口的问题中,在bokeh.charts接口(例如TimeSeries)中添加对stile Charts的支持的想法已经出现了一些。但是现在(对于散景0.8.2)它还不支持。我相信它可以在不久的将来成为bokeh.charts的一部分,但由于它仍然是非常实验性的,我们首先关注的是让这个界面“正确”。
处理渲染器创建图表的图表的特定部分未公开,因此您不能只告诉TimeSeries您想要的行宽,但您可以创建自己的TimeSeries构建器和工厂函数来执行您想要的操作。像这样的东西(:
from bokeh.charts._builder import create_and_build
from bokeh.charts.builder.timeseries_builder import TimeSeriesBuilder
from bokeh.models import ColumnDataSource, DataRange1d, GlyphRenderer, Range1d
from bokeh.models.glyphs import Line
from bokeh.charts.utils import chunk, cycle_colors
class CustomTSBuilder(TimeSeriesBuilder):
def _yield_renderers(self):
"""Use the line glyphs to connect the xy points in the time series.
Takes reference points from the data loaded at the ColumnDataSource.
"""
self._duplet = list(chunk(self._attr, 2))
colors = cycle_colors(self._duplet, self.palette)
for i, (x, y) in enumerate(self._duplet, start=1):
glyph = Line(x=x, y=y, line_color=colors[i - 1], line_width=3)
renderer = GlyphRenderer(data_source=self._source, glyph=glyph)
self._legends.append((self._groups[i-1], [renderer]))
yield renderer
def CustomTimeSeries(values, index=None, xscale='datetime', **kws):
return create_and_build(
CustomTSBuilder, values, index=index, xscale=xscale, **kws
)
注意:请注意,此代码适用于当前版本,但在将来的开发版或官方版本中可能不受支持。