要創建可供用戶下載或導出的報告或圖表數據,您可以使用Bokeh的導出功能。以下是一個簡單的示例代碼,演示如何使用Bokeh創建一個圖表,并提供下載按鈕以將圖表數據導出為CSV文件:
from bokeh.plotting import figure, output_file, show
from bokeh.models import ColumnDataSource, Button
from bokeh.layouts import column
from bokeh.io import output_file
import pandas as pd
# 創建數據
data = {'x': [1, 2, 3, 4, 5],
'y': [6, 7, 2, 4, 5]}
df = pd.DataFrame(data)
# 創建ColumnDataSource
source = ColumnDataSource(df)
# 創建圖表
p = figure(title="Simple Line Plot", x_axis_label='x', y_axis_label='y')
p.line('x', 'y', source=source)
# 創建下載按鈕
button = Button(label="Download CSV")
button.callback = CustomJS(args=dict(source=source), code="""
const data = source.data;
const filetext = 'x,y\\n';
for (let i = 0; i < data['x'].length; i++) {
const currRow = [data['x'][i].toString(), data['y'][i].toString()].join(',');
filetext = filetext.concat(currRow, '\\n');
}
const blob = new Blob([filetext], { type: 'text/csv;charset=utf-8;' });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = 'data.csv';
link.click();
""")
# 輸出到HTML文件
output_file("plot.html")
# 顯示圖表和下載按鈕
show(column(p, button))
運行上述代碼后,將會生成一個包含圖表和下載按鈕的HTML文件。當用戶點擊下載按鈕時,將會自動下載包含圖表數據的CSV文件。
您還可以根據需要定制下載功能,以實現更復雜的數據導出需求。希望這個示例能夠幫助您創建可供用戶下載或導出的報告或圖表數據。