2016-01-24 14 views
7

के साथ डेटाफ्रेम का उपयोग करके बोके में टाइमसरीज मैं Pandas डेटाफ्रेम को DateTime कॉलम के साथ सालों और संख्यात्मक वाले प्लॉट के साथ बोके का उपयोग करने का प्रयास कर रहा हूं। यदि DateTime को x के रूप में निर्दिष्ट किया गया है, तो व्यवहार अपेक्षित है (x-axis में वर्ष)। हालांकि, अगर मैं का उपयोग DateTime कॉलम को डेटाफ्रेम की अनुक्रमणिका में बदलने के लिए उपयोग करता हूं और फिर को TimeSeries में निर्दिष्ट करता हूं तो मुझे एक्स-अक्ष में मिलीसेकंड में समय मिलता है। एक न्यूनतम उदाहरणइंडेक्स

import pandas as pd 
import numpy as np 
from bokeh.charts import TimeSeries, output_file, show 

output_file('fig.html') 
test = pd.DataFrame({'datetime':pd.date_range('1/1/1880', periods=2000),'foo':np.arange(2000)}) 
fig = TimeSeries(test,x='datetime',y='foo') 
show(fig) 

output_file('fig2.html') 
test = test.set_index('datetime') 
fig2 = TimeSeries(test,y='foo') 
show(fig2) 

क्या यह अपेक्षित व्यवहार या बग है? मैं दोनों दृष्टिकोणों के साथ एक ही तस्वीर की उम्मीद करता हूं।

चीयर्स !!

+0

यह मेरे लिए असंगत भी दिखता है: स्थिर bokeh.plotting एपीआई का उपयोग कर बराबर कोड अपेक्षित परिणाम अर्जित करता है। दिलचस्प बात यह है कि 'fig2 = TimeSeries (test, y =' foo ')' लाइन 'के बाद, 'test' को' डेटाटाइम 'डेटा के साथ एक इंडेक्स और' इंडेक्स 'नामक एक नया कॉलम शामिल करने के लिए बदल दिया गया है। यह आश्चर्य की बात है कि डेटा फ्रेम को साजिश करने से डेटा बदल जाएगा। – Jake

+0

अच्छी पकड़, मैंने ध्यान नहीं दिया था। मैंने अभी इसे [एक मुद्दा] के रूप में रिपोर्ट किया है (https://github.com/bokeh/bokeh/issues/3763)। – manu

उत्तर

0

बोके आंतरिक कारणों से एक सूचकांक जोड़ने के लिए प्रयुक्त होता था लेकिन हाल के संस्करणों (> = 0.12.x) के रूप में यह अब ऐसा नहीं करता है। यह भी ध्यान देने योग्य है कि bokeh.charts एपीआई को हटा दिया गया है और हटा दिया गया है।

import pandas as pd 
import numpy as np 
from bokeh.plotting import figure, output_file, show 
from bokeh.layouts import row 

output_file('fig.html') 

test = pd.DataFrame({'datetime':pd.date_range('1/1/1880', periods=2000),'foo':np.arange(2000)}) 

fig = figure(x_axis_type="datetime") 
fig.line(x='datetime',y='foo', source=test) 

test = test.set_index('datetime') 

fig2 = figure(x_axis_type="datetime") 
fig2.line(x='datetime', y='foo', source=test) 
show(row(fig, fig2)) 

enter image description here