散景:绘制大型数据集

时间:2018-09-06 18:48:31

标签: python bokeh

我正在尝试构建一个与range_tool.py示例非常相似的图 https://bokeh.pydata.org/en/latest/docs/gallery/range_tool.html

我没有使用日期时间数据,而是有两个列表,每个列表的长度超过40,000个数据点。

示例列表:

b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] phred = [17, 16, 6, 15, 6, 7, 6, 7, 9, 11, 16, 13, 9, 11, 12, 13, 6, 12, 13, 7] 我想绘制b vs p并获得与上述链接相同的图像可视化效果。 目的是查看phr在b上的分布。 下面的代码返回了一个图形,但是我想更好地可视化phr的变化性,我不确定tweek的设置,所以看起来更像上面的示例。

from bokeh.io import show
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, RangeTool
from bokeh.plotting import figure

p = figure(plot_height=300, plot_width=800, tools="", toolbar_location=None, x_range=(0, 50000))

p.line(b, phred)
p.yaxis.axis_label = 'phred score'

select = figure(plot_height=150, plot_width=800, y_range=p.y_range, y_axis_type=None, tools="", toolbar_location=None)

range_rool = RangeTool(x_range=p.x_range)
range_rool.overlay.fill_color = "navy"
range_rool.overlay.fill_alpha = 0.2

select.line(b, phred)
select.ygrid.grid_line_color = None
select.add_tools(range_rool)
select.toolbar.active_multi = range_rool

show(column(p, select))

这是我的图

bokeh plot

2 个答案:

答案 0 :(得分:1)

您正在使用“ p”作为图形和一个数据列表的名称!

您必须传递列表对象,而不是将其名称作为字符串传递。

尝试:

b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
c = [17, 16, 6, 15, 6, 7, 6, 7, 9, 11, 16, 13, 9, 11, 12, 13, 6, 12, 13, 7]
p.line(b, c)

答案 1 :(得分:0)

玩转之后,我发现了一个简单的解决方法,可以更好地看到数据在第1行中

将图的第一个x_range设置为较小的数字 x_range=(0, 2000)

此设置改善了情节 improved bokeh plot

如果有人对如何查看此类可变数据有任何建议,请分享