2016-04-19 7 views
6

में कॉलमडेटासोर्स का उद्देश्य मैं बोके के लिए नया हूं और यह पता लगाने की कोशिश कर रहा हूं कि कॉलमडेटा क्या करता है। यह कई जगहों पर दिखाई देता है लेकिन मैं इसके उद्देश्य से अनिश्चित हूं और यह कैसे काम करता है। क्या कोई रोशनी कर सकता है? क्षमा करें अगर यह एक मूर्ख सवाल है ...बोके

+2

आप आर या पांडा 'DataFrame' वस्तुओं के साथ परिचित हैं,' ColumnDataSource' मूल रूप से इस बात का एक सरल संस्करण है। यह डेटा (कॉलम) के सरणी का संग्रह है जिसे नामों से संदर्भित किया जा सकता है। वास्तविक आंतरिक संरचना केवल यही है: एक शब्दकोश जो स्ट्रिंग्स को सरणी/सरणी में मैप करता है। यह प्राथमिक तरीका है कि डेटा पाइथन से बोकेजेजेएस ब्राउज़र लाइब्रेरी में स्थानांतरित हो जाता है। – bigreddot

उत्तर

4

कॉलमडेटा स्रोत वह ऑब्जेक्ट है जहां बोके ग्राफ का डेटा संग्रहीत किया जाता है। आप ColumnDataSource का उपयोग न करने और अपने ग्राफ को सीधे पायथन शब्दकोश, पांडा डेटाफ्रेम इत्यादि के साथ फ़ीड करना चुन सकते हैं, लेकिन कुछ विशेषताओं के लिए जैसे पॉपअप विंडो डेटा जानकारी दिखाती है जब उपयोगकर्ता ग्लाइफ पर माउस को घुमाता है, तो आपको एक का उपयोग करने के लिए मजबूर होना पड़ता है 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à. 
संबंधित मुद्दे