vectorbt icon indicating copy to clipboard operation
vectorbt copied to clipboard

AttributeError: module 'vectorbt.utils' has no attribute 'image'

Open mikolaje opened this issue 3 years ago • 1 comments

When I executed the demo code, it raised:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-62-10a25213349e> in <module>
     17     return img_np
     18 
---> 19 vbt.save_animation(
     20     gif_fname,
     21     ohlcv.index,

/Users/Shared/anaconda3/lib/python3.8/site-packages/vectorbt/utils/image_.py in save_animation(fname, index, plot_func, delta, step, fps, writer_kwargs, show_progress, tqdm_kwargs, to_image_kwargs, *args, **kwargs)
     74     with imageio.get_writer(fname, fps=fps, **writer_kwargs) as writer:
     75         for i in tqdm(range(0, len(index) - delta, step), disable=not show_progress, **tqdm_kwargs):
---> 76             fig = plot_func(index[i:i + delta], *args, **kwargs)
     77             if isinstance(fig, (go.Figure, go.FigureWidget)):
     78                 fig = fig.to_image(format="png", **to_image_kwargs)

<ipython-input-62-10a25213349e> in plot_func(index)
     13     histogram_np = imageio.imread(histogram.fig.to_image(format="png"))
     14     heatmap_np = imageio.imread(heatmap.fig.to_image(format="png"))
---> 15     img_np = vbt.utils.image.vstack_image_arrays(
     16         vbt.utils.image.vstack_image_arrays(ts_np, histogram_np), heatmap_np)
     17     return img_np

AttributeError: module 'vectorbt.utils' has no attribute 'image'

Here is the code:

gif_date_delta = 365
gif_step = 4
gif_fps = 5
gif_fname = 'dmac_heatmap.gif'

histogram.fig.update_xaxes(range=[-1, 5])

def plot_func(index):
    # Update figures
    update_figs(index[0], index[-1])
    # Convert them to png and then to numpy arrays
    ts_np = imageio.imread(ts_fig.to_image(format="png"))
    histogram_np = imageio.imread(histogram.fig.to_image(format="png"))
    heatmap_np = imageio.imread(heatmap.fig.to_image(format="png"))
    img_np = vbt.utils.image.vstack_image_arrays(
        vbt.utils.image.vstack_image_arrays(ts_np, histogram_np), heatmap_np)
    return img_np

vbt.save_animation(
    gif_fname, 
    ohlcv.index, 
    plot_func, 
    delta=gif_date_delta,
    step=gif_step,
    fps=gif_fps
)

mikolaje avatar Jan 23 '22 14:01 mikolaje

@mikolaje thanks for reporting. It must be vbt.utils.image_.vstack_image_arrays .

polakowo avatar Jan 23 '22 14:01 polakowo