编辑:我的所有问题都是因为我的类别值中包含冒号。显然你的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轴由字符串组成,但是当它们是日期时间/时间戳时,一切正常。
答案 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)
)