Jestem nowy w bokeh i próbuję dowiedzieć się, co robi columnDataSource. Pojawia się w wielu miejscach, ale nie jestem pewien jego celu i sposobu działania. Czy ktoś może się oświetlić? Przepraszam, jeśli to głupie pytanie ...Cel columnDataSource w bokeh
Odpowiedz
ColumnDataSource to obiekt, w którym przechowywane są dane wykresu Bokeh. Możesz nie używać ColumnDataSource i podawać swój wykres bezpośrednio za pomocą słowników Python, ramek danych pand, itp., Ale w przypadku niektórych funkcji, takich jak wyświetlanie okienka z informacjami o danych, gdy użytkownik najedzie myszą na glify, będziesz zmuszony użyć ColumnDataSource inaczej okno wyskakujące nie będzie w stanie uzyskać danych. Inne zastosowania byłyby podczas przesyłania strumieniowego danych.
Możesz utworzyć ColumnDataSource ze słowników i ramek danych pandy, a następnie użyć ColumnDataSource do utworzenia glifów.
Czy możesz dodać mały przykład, jak zrobić to, co napisałeś w odpowiedzi? Powiedz szereg czasowy, w którym chcesz zobaczyć dane po najechaniu myszą nad wykresem – famargar
To powinno działać:
import pandas as pd
import bokeh.plotting as bp
from bokeh.models import HoverTool, DatetimeTickFormatter
# Create the base data
data_dict = {"Dates":["2017-03-01",
"2017-03-02",
"2017-03-03",
"2017-03-04",
"2017-03-05",
"2017-03-06"],
"Prices":[1, 2, 1, 2, 1, 2]}
# Turn it into a dataframe
data = pd.DataFrame(data_dict, columns = ['Dates', 'Prices'])
# Convert the date column to the dateformat, and create a ToolTipDates column
data['Dates'] = pd.to_datetime(data['Dates'])
data['ToolTipDates'] = data.Dates.map(lambda x: x.strftime("%b %d")) # Saves work with the tooltip later
# Create a ColumnDataSource object
mySource = bp.ColumnDataSource(data)
# Create your plot as a bokeh.figure object
myPlot = bp.figure(height = 600,
width = 800,
x_axis_type = 'datetime',
title = 'ColumnDataSource',
y_range=(0,3))
# Format your x-axis as datetime.
myPlot.xaxis[0].formatter = DatetimeTickFormatter(days='%b %d')
# Draw the plot on your plot object, identifying the source as your Column Data Source object.
myPlot.circle("Dates",
"Prices",
source=mySource,
color='red',
size = 25)
# Add your tooltips
myPlot.add_tools(HoverTool(tooltips= [("Dates","@ToolTipDates"),
("Prices","@Prices")]))
# Create an output file
bp.output_file('columnDataSource.html', title = 'ColumnDataSource')
bp.show(myPlot) # et voilà.
Jeśli jesteś zaznajomiony z R lub Pand 'DataFrame' obiektów The' ColumnDataSource' jest zasadniczo prostsza wersja tego. Jest zbiorem tablic danych (kolumn), do których można się odwoływać według nazw. Właściwa struktura wewnętrzna jest po prostu słownikiem, który odwzorowuje łańcuchy na listy/tablice. Jest to podstawowy sposób przenoszenia danych z Pythona do biblioteki przeglądarki BokehJS. – bigreddot