2016-03-10 155 views
1

爲什麼我用datetime系列將我的數據繪製爲x軸,它被解釋爲datetime值,但錯誤的是:我的2016時間被解釋爲1970-1-1之後的毫秒, 1。代碼:在bokeh.charts.Area中的日期時間x軸

from __future__ import absolute_import, division, print_function 
from __future__ import unicode_literals 

from datetime import datetime 
import pandas as pd 
from bokeh.charts import Area, show, output_file 

df = pd.DataFrame() 
df['date'] = [datetime(2016, 1, 1), datetime(2016, 1, 2), datetime(2016, 1, 3)] 
df['v1'] = [1, 2, 3] 
df['v2'] = [4, 4, 3] 

p = Area(df, x='date', y=['v1', 'v2'], title="Area Chart", 
     legend="top_left", xscale='datetime', stack=True, 
     xlabel='time', ylabel='values') 

output_file("area.html", title="Area Chart") 
show(p) 

Area chart screenshot

有沒有一種方法可以讓我得到bokeh.charts.Area認識我datetime數據,還是我來構建自己使用figure()的情節?

其他數據:背景虛化0.11.1關於Python 2.7

+1

這非常奇怪,並且可能會在您的環境條件下出現問題。我已經嘗試過與散景'0.11.1'和當前的'master'分支與bokeh python 2和3的例子,但沒有能夠重現問題。我建議打開一個問題,並提供有關您的平臺和環境的更多信息。 –

+0

你說得對,我的本地設置有些腥意。在我的家用電腦上,我也無法重現這個問題。根據分辨率的不同,回答自己或刪除問題。 –

+0

@FabioPliger:我解決了這個問題。我正在使用''pip install -e .'',如果它存在的話,那就有重新使用' .egg-info'目錄的尷尬。所以,如果你更新你的依賴關係,那麼就會被忽略。如果你想發佈並回答,我會接受它。 –

回答

2

問題是from __future__ import unicode聲明*卸下固定的問題行了。

核心問題是x='date'關鍵字參數必須是字節。否則,散景無法在數據框中找到密鑰。它在這種情況下不會顯示警告或錯誤,它只是默默地用一個數字索引(0,1,2,3)代替它,數字索引被日期軸解釋爲毫秒。


*遺漏了原來的問題,因爲同樣的問題也出現在剩餘的.egg-info目錄一些點子混淆之後。