除非有另一个p,否则不绘制线段

2024-04-25 01:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我可能错过了这里显而易见的,但我和博克有一个非常奇怪的行为。

假设我有以下Pandas数据帧:

import pandas as pd

test = pd.DataFrame({'date': [pd.Timestamp('2014-11-24 17:18:28'),
                          pd.Timestamp('2014-11-24 17:18:38'),
                          pd.Timestamp('2014-11-24 17:18:48'),
                          pd.Timestamp('2014-11-24 17:19:21'),
                          pd.Timestamp('2014-11-24 17:19:41'),
                          pd.Timestamp('2014-11-24 17:19:49'),
                          pd.Timestamp('2014-11-24 17:19:59'),
                          pd.Timestamp('2014-11-24 17:25:43'),
                          pd.Timestamp('2014-11-24 17:25:53'),
                          pd.Timestamp('2014-11-24 17:25:58'),
                          pd.Timestamp('2014-11-24 17:26:08'),
                          pd.Timestamp('2014-11-24 17:26:18'),
                          pd.Timestamp('2014-11-24 17:26:28'),
                          pd.Timestamp('2014-11-24 17:26:31'),
                          pd.Timestamp('2014-11-24 17:26:39'),
                          pd.Timestamp('2014-11-24 17:26:43'),
                          pd.Timestamp('2014-11-24 17:26:53'),
                          pd.Timestamp('2014-11-24 17:27:01'),
                          pd.Timestamp('2014-11-24 17:27:06'),
                          pd.Timestamp('2014-11-24 17:27:09')],
                 'activity': ['occupied', 'occupied', 'sleep',
                             'sleep', 'sleep', 'occupied',
                             'sleep', 'occupied', 'occupied',
                             'sleep', 'sleep', 'occupied',
                             'occupied', 'sleep', 'occupied',
                             'occupied', 'occupied', 'occupied',
                             'occupied', 'occupied'],
                 'since': [pd.Timestamp('2014-11-24 17:18:28'),
                             pd.Timestamp('2014-11-24 17:18:38'),
                             pd.Timestamp('2014-11-24 17:18:48'),
                             pd.Timestamp('2014-11-24 17:18:58'),
                             pd.Timestamp('2014-11-24 17:18:58'),
                             pd.Timestamp('2014-11-24 17:19:49'),
                             pd.Timestamp('2014-11-24 17:19:59'),
                             pd.Timestamp('2014-11-24 17:20:06'),
                             pd.Timestamp('2014-11-24 17:20:06'),
                             pd.Timestamp('2014-11-24 17:25:58'),
                             pd.Timestamp('2014-11-24 17:26:08'),
                             pd.Timestamp('2014-11-24 17:26:18'),
                             pd.Timestamp('2014-11-24 17:26:28'),
                             pd.Timestamp('2014-11-24 17:26:31'),
                             pd.Timestamp('2014-11-24 17:26:39'),
                             pd.Timestamp('2014-11-24 17:26:39'),
                             pd.Timestamp('2014-11-24 17:26:39'),
                             pd.Timestamp('2014-11-24 17:26:39'),
                             pd.Timestamp('2014-11-24 17:26:39'),
                             pd.Timestamp('2014-11-24 17:26:39')]})
test.set_index('date', inplace=True)

现在我试着从中画出片段:

^{pr2}$

我得到以下数字:

Bad plot

现在,如果我在显示图形之前添加圆图,就可以了。

# p.segment...

p.circle(x=test.since,
     y=test.activity)

show(p)

Good plot


Tags: 数据testimportdataframepandasdateassleep
1条回答
网友
1楼 · 发布于 2024-04-25 01:25:13

我想您只缺少x_range实例化中的x_range关键字参数:

from bokeh.plotting import figure, show

p = figure(width=1000, height=400,
       title="Test",
       x_axis_label="Date", x_axis_type="datetime", 
   >  x_range=(test.index.min(), test.index.max()),
       y_axis_label="Activities", y_range=list(test.activity.unique()),
       tools="box_select,xpan,xwheel_zoom,reset,save")

p.segment(x0=test.since, y0=test.activity,
      x1=test.index, y1=test.activity)

show(p)

这样你就可以不用在绘图中添加一个圆字形了。在

也就是说,我仍然不知道为什么在添加segment()字形时它需要x_rangekwarg,而不是圆字形。在

相关问题 更多 >