2016-04-19 13 views
6

Ben bokeh için yeni ve columnDataSource ne yaptığını anlamaya çalışıyorum. Pek çok yerde görünür ama amacından ve nasıl çalıştığından emin değilim. Birisi aydınlatabilir mi? Bu aptalca bir soru ise özür dileriz ...Dizin sütunDataSource amacı

+2

Eğer R veya Pandalar 'DataFrame' nesnelerle tanıyorsanız,' ColumnDataSource' temelde bu daha basit bir versiyonudur. İsimlerle ifade edilebilen veri dizileri (sütunlar) topluluğudur. Gerçek iç yapı sadece şudur: dizeleri listeler/dizilerle eşleyen bir sözlük. Verilerin python'dan BokehJS tarayıcı kitaplığına taşınması birincil yoldur. – bigreddot

cevap

4

ColumnDataSource, bir Bokeh grafiğin verilerinin depolandığı nesnedir. Bir ColumnDataSource kullanmamayı ve grafiğinizi doğrudan Python sözlükleri, pandalar veri çerçeveleri vb. Ile beslemeyi tercih edebilirsiniz, ancak kullanıcı fare glifler üzerinde fareyi tuttuğunda veri bilgilerini gösteren bir açılır pencere olması gibi belirli özellikler için, bir ColumnDataSource aksi halde açılır pencere verileri alamayacaktır. Veri akışı yapılırken diğer kullanımlar olacaktır.

Sözlük ve pandalar veri tabanlarından ColumnDataSource oluşturabilir ve ardından glifleri oluşturmak için ColumnDataSource kullanabilirsiniz.

+1

Lütfen cevapta yazdıklarınızı nasıl yapacağınıza dair küçük bir örnek ekleyebilir misiniz? Grafiğin üstünde fareyi gezdirirken verileri görmek istediğiniz bir zaman dizisi söyleyin – famargar

1

Bu çalışması gerekir:

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à.