如何在散景图上将x轴设置为日期时间?

Wil*_*hes 26 python pandas ipython-notebook bokeh

我正在使用带有ipython笔记本的散景.

我想使用包含日期时间的pandas DataFrame在散景中绘制折线图:

import pandas as pd
from datetime import datetime as dt
from bokeh.io import output_notebook
from bokeh.charts import Bar, Line, show

df = pd.DataFrame(data=[1,2,3],
                  index=[dt(2015, 1, 1), dt(2015, 1, 2), dt(2015, 1, 3)],
                  columns=['foo'])

output_notebook()
show(Line(df))
Run Code Online (Sandbox Code Playgroud)

但是,散景使用微秒!为什么是这样?我如何解决它?

线的散景图

Emm*_*uel 76

从散景0.12.3开始,您现在可以:

p = figure(..., x_axis_type='datetime', ...)
Run Code Online (Sandbox Code Playgroud)

  • 有人在这里请提出这个答案!在对某些代码进行重大修改之后,需要有一种方法来提升更相关的答案!将我的咆哮移动到meta :) (2认同)
  • 如果这是从 pandas 列数据类型自动推断出来的,那就太好了。 (2认同)

eur*_*i10 32

这可以吗 ?

在此输入图像描述

import pandas as pd
from math import pi
from datetime import datetime as dt
from bokeh.io import output_file
from bokeh.charts import show
from bokeh.models import DatetimeTickFormatter
from bokeh.plotting import figure

df = pd.DataFrame(data=[1,2,3],
                  index=[dt(2015, 1, 1), dt(2015, 1, 2), dt(2015, 1, 3)],
                  columns=['foo'])
p = figure(plot_width=400, plot_height=400)
p.line(df.index, df['foo'])
p.xaxis.formatter=DatetimeTickFormatter(
        hours=["%d %B %Y"],
        days=["%d %B %Y"],
        months=["%d %B %Y"],
        years=["%d %B %Y"],
    )
p.xaxis.major_label_orientation = pi/4
output_file('myplot.html')
show(p)
Run Code Online (Sandbox Code Playgroud)


jsi*_*ell 5

FWIW,自问题首次发布以来,默认行为已更改。原始代码现在产生:

代码的结果