2017-06-29 19 views
0

私は私のコードは正常に動作するようです年に1998「BokehUserWarning:ColumnDataSourceの列が同じ長さでなければなりません」

をすべての道をバックに到達するデータのかなり大きな量をプロットしようとしているが、実行していますエラーメッセージ「BokehUserWarningを:ColumnDataSourceの列が同じ長さでなければなりません」スロー:予想通り

import pandas as pd 
from bokeh.io import show, output_file, gridplot 
from bokeh.plotting import figure 

#Create dataframe 
df = pd.read_csv('/Users/macbook/Desktop/source.tab', names=[ 
'#','datesent','total','place'] delimiter='\t', header=None, encoding="ISO-8859-1") 

#Format date 
df['datesent'] = pd.to_datetime(df['datesent'], dayfirst=True) 

#Datamunging 
transactionssent = dict(pd.melt(df,value_vars=['datesent']).groupby('value').size())   
transactionssent_dataframe = pd.DataFrame.from_dict(transactionssent, orient= 'index')  
transactionssent_dataframe.columns = ['Number of sent transactions']       
transactionssent_dataframe.index.rename('Date of sending', inplace= True)       

#X- and Y-axis 
x = pd.bdate_range('2017-1-1', '2200-1-1') 
y = transactionssent_dataframe['Number of sent transactions'] 

#Bokeh object 
ts = figure(x_axis_type="datetime") 

#Show plot 
ts.line(x, y) 

output_file('/Users/macbook/Desktop/plot.html') 

すべての出力が実際にある

ここに私のコードです。エラーはどういう意味ですか?私は実際にデータフレームからColumndDataSourceオブジェクトを作成する必要がありますか? パンダのデータフレームをボーケプロット関数に直接渡すことは、私が望むグラフを得る良い方法です。パンダのデートフレームからボケプロットを作成するのがベストプラクティスですか?

答えて

2

xyシリーズの長さが異なると、検証エラーが発生するものとします。それが意味を成しているならば、出力はおそらく長い配列のオーバーハングしている部分を切り捨てているでしょう。

ColumnDataSourceを手動で作成する必要はありません(1つはlineのようなグリフメソッドに配列を渡すと内部的に作成されます)が、この状況を防ぐのに役立ついくつかのバリデーションがあります。

source = ColumnDataSource(dataframe) 
ts.line(x='x', y='y', source=source) 
+0

ありがとう:

あなたが経由してデータフレームから直接ColumnDataSourceを作成することができます。厄介な小さな警告がなくても、すべてうまく動作します。 –

関連する問題