TimeSeries作为与Bokeh的箱子图

时间:2015-06-30 01:29:38

标签: python bokeh

编辑:我的所有问题都是因为我的类别值中包含冒号。显然你的x / y值不能有冒号!

我正在尝试制作能够显示某些传感器健康状况的盒子图。

1 =好 0 =坏

x轴:传感器ID y轴:时间戳

我正在使用python&散景,我希望结果看起来像: http://bokeh.pydata.org/en/latest/docs/gallery/unemployment.html

但在我的情况下,x轴是时间戳而不是一个月。

如何为此数据设置ColumnDataSource,使其具有作为X轴的时间序列,并将所有值1显示为绿色,将0显示为红色?

编辑:使用第一个建议中的代码,情节仍然没有显示任何内容。

source = ColumnDataSource(data=dict(sensor=sensor, timestamp=timestamp,
                                    color=color, status=status))    
p = figure()
p.rect("timestamp", "sensor", 1, 1, source=source, color="color", line_color=None)

编辑2:显然你必须为figure()对象指定一个x_range和y_range,否则就不会绘制任何内容。

持续的问题是让情节显示日期时间对象,我不确定散景可以处理。如果我的x轴由字符串组成,但是当它们是日期时间/时间戳时,一切正常。

1 个答案:

答案 0 :(得分:1)

我假设您的数据位于以下格式的数据框中:

timestamp sensor1 sensor2
t1        1       0
t2        0       1

然后从该示例修改相应的代码部分,您将执行此操作

timestamp = list(data['timestamp'])
sensor = ['sensor1','sensor2']
colors = ["red", "green"]

# Set up the data for plotting. We will need to have values for every
# pair of year/month names. Map the rate to a color.
sensor= []
timestamp= []
color = []
status = []
for y in timestamp:
    for m in sensor:
        sensor.append(m)
        timestamp.append(y)
        sensor_status = data[m][y]
        status.append(sensor_status)
        color.append(colors[sensor_status])

source = ColumnDataSource(
    data=dict(sensor=sensor, timestamp=timestamp, color=color, status=status)
)