我的数据框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)
答案 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
我怀疑