使用 datashade/holoviews/Bokeh 创建子图的一般表示法是使用“+”表示法:
plot = plot1 + plot2 + plot3
但是,我正在尝试像使用 Matplotlib 一样在 for 循环中生成绘图。在 Seaborn 中,我可以这样做来创建子图,同时通过数据框递增:
fig, axes = plt.subplots(nrows=len(DF_cols), ncols=1, figsize=(10,10), sharex = True)
count = 0
for i in DF_cols:
sns.lineplot(data=df[i], label=i, ax=axes[count])
count += 1
return fig, axes
如何将我下面用于 Datashade/Holoviews 的方法转换为更自动化的过程?
c1 = hv.Curve(df['T'])
c2 = hv.Curve(df['A'])
c3 = hv.Curve(df['B'])
c4 = hv.Curve(df['C'])
plot1 = dynspread(datashade(c1))
plot2 = dynspread(datashade(c2))
plot3 = dynspread(datashade(c3))
plot4 = dynspread(datashade(c4))
plot = (plot1 + plot2 + plot3 + plot4).cols(1)
plot
我最初的方法是使用创建自定义字符串来模仿正常的 Datashade 表示法并在其上运行 exec() ,但这在使用内部函数时不起作用或最终遇到其他错误。