2016-04-19 4 views
6

Я новичок в bokeh и пытаюсь выяснить, что такое columnDataSource. Он появляется во многих местах, но я не уверен в его цели и как это работает. Может кто-нибудь осветить? Извините, если это глупый вопрос ...Назначение columnDataSource в bokeh

+2

Если вы знакомы с R или панды 'DataFrame' предметов,' ColumnDataSource' в основном более простой вариант этого. Это набор массивов данных (столбцов), на которые можно ссылаться именами. Фактическая внутренняя структура такова: словарь, который отображает строки в списки/массивы. Это основной способ переноса данных из python в библиотеку браузера BokehJS. – bigreddot

ответ

4

ColumnDataSource - это объект, в котором хранятся данные графа Боке. Вы можете не использовать ColumnDataSource и подавать свой график напрямую с помощью словарей Python, фреймов pandas и т. Д., Но для некоторых функций, таких как наличие всплывающего окна, отображающего информацию о данных, когда пользователь наводит курсор мыши на глифы, вы вынуждены использовать ColumnDataSource, иначе всплывающее окно не сможет получить данные. Другими видами использования могут быть потоковые данные.

Вы можете создать источник ColumnDataSource из словарей и фреймов данных pandas, а затем использовать ColumnDataSource для создания глифов.

+1

Не могли бы вы добавить крошечный пример того, как делать то, что вы написали в ответ? Произнесите временной ряд, где вы хотите видеть данные при наведении указателя мыши над графиком – famargar

1

Это должно работать:

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à. 
Смежные вопросы