Hi @mshevelev
At least you can do it with Panel. And with Panel it will work no matter which library you are using for visualizing your dataframe.
You can use it in a notebook, served panel app or saved to a static .html file.
import panel as pn
import pandas as pd
import hvplot.pandas
from io import StringIO
pn.extension(design="fast")
data = {'x': [1, 2, 3, 4],
'y': [5, 6, 7, 8]}
df = pd.DataFrame(data)
sio = StringIO()
df.to_csv(sio, index=False)
sio.seek(0)
file_download = pn.widgets.FileDownload(sio, embed=True, filename='dataframe.csv', align="end")
plot = df.hvplot()
component = pn.Column(plot, file_download)
component.save("plot.html")
component.servable()
