我目前正在尝试概述不同日期的数据图。为了获得对数据的良好感觉,我想将相关的图绘制在一起。这意味着我想在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次,我现在要做的,但这不仅效率低,而且在查看我的代码时也会伤到我的眼睛。我希望有人能为我的问题找到更优雅的解决方案。
编辑:使代码可运行
答案 0 :(得分:0)
这是不可能的。散景图(或一般的散景对象)不得在布局中重复使用。