Python Bokeh:在gridplot中多次绘制相同的图表

时间:2016-01-21 09:53:00

标签: python bokeh

我目前正在尝试概述不同日期的数据图。为了获得对数据的良好感觉,我想将相关的图绘制在一起。这意味着我想在gridplot命令中多次使用相同的图。然而我注意到的是,当我多次使用相同的图表时,它只会在最终的.html文件中显示一次。我解决这个问题的第一个尝试是对图表使用copy.deepcopy,但这会产生以下错误:

RuntimeError: Cannot get a property value 'label' from a LineGlyph instance before HasProps.__init__

我的方法如下:

from bokeh.charts import Line, output_file, show, gridplot
import pandas as pd
output_file('test.html')
plots = []

df = pd.DataFrame([[1,2], [3,1], [2,2]])
print(df)
df.columns = ['x', 'y']
for i in range(10):
    plots.append(Line(df, x='x', y='y', title='Forecast: ' + str(i),
                 plot_width=250, plot_height=250))

plot_matrix = []
for i in range(len(plots)-1, 2, -1):
    plot_matrix.append([plots[i-3], plots[i-2], plots[i]])
p = gridplot(plot_matrix)
show(p)

其结果是一个带有网格图的html页面,其中包含大量缺失的图形。每个图形都精确显示一次(而不是需要的3次),这使我认为网格图不喜欢我多次使用同一个对象。一个明显的解决方案是简单地将每个图形作为一个不同的对象创建3次,我现在要做的,但这不仅效率低,而且在查看我的代码时也会伤到我的眼睛。我希望有人能为我的问题找到更优雅的解决方案。

编辑:使代码可运行

1 个答案:

答案 0 :(得分:0)

这是不可能的。散景图(或一般的散景对象)不得在布局中重复使用。