Bokeh-datetime x_range:' ValueError,无法识别的范围输入'

时间:2018-02-08 17:05:39

标签: python pandas datetime bokeh

我的数据框public static Fraction[] generateFractionArray (int maxDenominator) { Fraction[] fractionsToReturn = new Fraction[maxDenominator]; int numeratorForAllFractions = 1; for(int denom = 1; denom <= maxDenominator; denom++) { fractionsToReturn[denom - 1] = new Fraction(numeratorForAllFractions, denom); } return fractionsToReturn; } 如下所示:

df2

所有值都是字符串类型。我似乎无法将日期识别为日期并绘制在堆积条形图的x轴上。这是我最近的徒劳尝试:

DATE       | STATUS
2018-02-01     A
2018-02-02     A
2018-02-02     B
..
2018-02-05     B

提前感谢。

编辑:错误为import pandas as pd from bokeh.io import curdoc import numpy as np from bokeh.models import ColumnDataSource, HoverTool,DatetimeTickFormatter from bokeh.core.properties import value from bokeh.plotting import figure #prepare x axis df2['DATE']=pd.to_datetime(df2['DATE']) Months=df2["DATE"].tolist() Months=list(set(Months)) #remove duplicates IBs=df2["STATUS"].tolist() IBs=list(set(IBs)) #pivot dataframe #df2["DATE"]=df2["DATE"].str.strip() #trim values in column df2=df2.pivot_table(index=['DATE'],columns=['STATUS'], aggfunc=len) df2=df2.reset_index() df2=df2.fillna(0) #replace nans with 0 #add plot source=ColumnDataSource(data=df2) p= figure(x_range= df2["DATE"], plot_width=700, plot_height=400, x_axis_type='datetime', x_axis_label='Month', y_axis_label='count') p.xaxis[0].formatter = DatetimeTickFormatter(days="%Y/%m/%d") p.vbar_stack(IBs, x='DATE', width=0.9, source=source, legend=[value(x) for x in IBs]) curdoc().add_root(p)

2 个答案:

答案 0 :(得分:1)

我有同样的问题,只是想出了问题所在(至少在我的情况下)。

基本上,无论你传递给x_range的对象是什么,它都必须是可迭代的,只包含字符串类型元素。

因此,转换df2["DATE"]的元素&#39;在传入x_range之前键入str。

p = figure(x_range=df2["DATE"], ...)  # df2["DATE"] = list(map(str, df['score']))

答案 1 :(得分:0)

部分修复:从x_range删除参数figure(),但我的条消失了

我怀疑我的酒吧因为这个而消失了: categorical y-axis and datetime x-axis with Bokeh vbar plot

我怀疑