带有散景

时间:2016-11-16 21:05:05

标签: pandas bokeh

您好我正在尝试使用Bokeh创建时间序列图表。 我的数据看起来像这样,2列一个用于时间戳,实际上是当前时间,值和提供值的传感器

时间|价值|传感器

2011-05-03 17:45:35.177000 | 213.130005 |甲

2011-05-03 17:45:36.177000 | 208.83 |乙

2011-05-03 17:45:36.277000 | 212.629993 | ç

2011-05-03 17:45:45.317000 | 211.719999 |甲

2011-05-03 17:45:45.577000 | 203.549999 |乙

2011-05-03 17:45:48.177000 | 201.199999 |乙

2011-05-03 17:45:55.175000 | 199.439999 | ç

我对Bokeh来说是全新的 并且我不确定如何使用散景图在图表上独立渲染每个传感器的数据,类似于this

  • 我是否需要如示例中所示的pandas?
  • 如何使用pandas解析时间戳列,从示例中我只能看到pandas.parse_dates

1 个答案:

答案 0 :(得分:1)

1)你没有拥有来使用pandas,但这条路线让它更容易。
2)您只需使用pandas'to_datetime()函数(pandas docs reference

即可解析时间功能
from bokeh.plotting import figure, show
from bokeh.models import DatetimeTickFormatter
import pandas as pd
import csv

d = pd.read_csv("SO.txt", delimiter="|")
# Strip whitespace from spacing in column headers
d.columns = [val.strip() for val in d.columns.values] 
d["Time"] = pd.to_datetime(d["Time"], yearfirst=True)

unique_sensors = d["Sensor"].unique()
c = ["red","blue","green"]

fig = figure(x_axis_label="Time (Seconds)", y_axis_label="Value", title="Sample")

# Draw a line for each unique sensor value
for i, s in enumerate(unique_sensors):
    sdf = d.loc[d["Sensor"]==s]
    fig.line(x=sdf["Time"], y=sdf["Value"], legend=s, line_color=c[i], line_width=3.0)
fig.xaxis.formatter = DatetimeTickFormatter(hours=["%b %d %Y"],
                                            days=["%b %d %Y"],
                                            months=["%b %d %Y"],
                                            years=["%b %d %Y"])
show(fig)

但显然你需要你的色彩图来扩展你的问题所以我建议你看一下散景调色板(bokeh docs reference