Ich experimentiere mit Bokeh-Datentabelle, um sie anzuzeigen Daten eingebettet in eine Webseite. Es funktioniert ganz gut.
Gibt es eine Möglichkeit, den Tabelleninhalt aus der angezeigten Datentabelle zu speichern? Andere Bokeh-Diagramme verfügen über eine Symbolleiste für verschiedene Funktionen, einschließlich Speichern, aber die DataTable scheint nicht mitgeliefert zu werden. Ich weiß sehr wenig über Javascript oder Slickgrid, das in der Bokeh-Datentabelle verwendet wird. Und ich frage mich, ob es möglich ist.
Vielen Dank!
EDIT - Es scheint, dass meine ursprüngliche Frage nicht klar genug war. Hoffe, folgende Bilder können helfen, zu veranschaulichen:
Dem Bokeh-Plot sind Symbolleisten zugeordnet:
Die Datentabelle hat sie jedoch nicht standardmäßig und es werden auch keine 'tools'-Parameter verwendet:
Ist es möglich, der Datentabelle die Schaltfläche "Speichern" hinzuzufügen, damit die Person, die die Tabelle anzeigt, sie als tabulatorgetrennte oder CSV-Dateien herunterladen kann? Muss nicht unbedingt gleich aussehen, aber mit der gleichen Funktion zum Speichern.
2 Antworten
Es wäre schön, wenn bokeh eine Tool-Schaltfläche zum Speichern / Exportieren der Datentabelle in csv / txt / excel-Dateien bereitstellen würde. Wenn dies bereits der Fall ist, habe ich es noch nicht im Dokument gefunden.
In der Zwischenzeit besteht eine mögliche Antwort darin, das js-Array (das sich unter der Bokeh-Datentabelle befindet) mit nativem Javascript in CSV zu exportieren. Es wurde hier und beschrieben hier.
HINZUFÜGEN: Bokeh hat Rückrufe für die Verwendung von js. Eine einfache Beschreibung lautet hier. lese immer noch darüber ...
EDIT: Es ist wahrscheinlich schon eine Weile da, aber ich habe gerade ein Beispiel auf der Bokeh-Website für Speichern von CSV gesehen aus der Datentabelle.
Für diejenigen, die Probleme beim Anpassen oder Finden des Beispiels auf der Bokeh-Website haben oder nur sehr faul sind, erledigt der folgende Code die minimale Aufgabe:
from bokeh.models import ColumnDataSource, CustomJS
from bokeh.models.widgets import Button
from bokeh.io import show
source = ColumnDataSource({'list1':[0,1,2,3],'list2':[4,5,6,7]})
button = Button(label="Download", button_type="success")
javaScript="""
function table_to_csv(source) {
const columns = Object.keys(source.data)
const nrows = source.get_length()
const lines = [columns.join(',')]
for (let i = 0; i < nrows; i++) {
let row = [];
for (let j = 0; j < columns.length; j++) {
const column = columns[j]
row.push(source.data[column][i].toString())
}
lines.push(row.join(','))
}
return lines.join('\\n').concat('\\n')
}
const filename = 'data_result.csv'
filetext = table_to_csv(source)
const blob = new Blob([filetext], { type: 'text/csv;charset=utf-8;' })
//addresses IE
if (navigator.msSaveBlob) {
navigator.msSaveBlob(blob, filename)
} else {
const link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.download = filename
link.target = '_blank'
link.style.visibility = 'hidden'
link.dispatchEvent(new MouseEvent('click'))
}
"""
button.callback = CustomJS(args=dict(source=source),code=javaScript)
show(button)
Verwandte Fragen
Verknüpfte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.