与这个问题类似,我对创建时间序列螺旋感兴趣。该解决方案不一定必须用R或使用ggplot来实现,但是似乎大多数解决方案都已经用R的ggplot来实现,其中少数使用Python,而一个在d3中。到目前为止,我的所有尝试都使用了R。与这个问题不同,我感兴趣的是显示特定范围的数据而不对数据进行量化/合并。也就是说,我想显示一个螺旋形的时间轴,显示特定事件的开始和结束时间,其中每个事件的theta- min和theta-max代表特定的时间点。
考虑以下旅行数据:
trip_start trip_stop dist 2017-04-01 17:42:00 2017-04-01 18:34:00 1.95 2017-04-01 18:42:00 2017-04-01 19:05:00 6.54 2017-04-02 01:09:00 2017-04-02 01:12:00 1.07 2017-04-02 01:22:00 2017-04-02 01:27:00 1.03 2017-04-02 08:17:00 2017-04-02 08:23:00 1.98 2017-04-02 11:23:00 2017-04-02 11:30:00 1.98 2017-04-02 15:44:00 2017-04-02 15:56:00 4.15 2017-04-02 16:29:00 2017-04-02 16:45:00 4.08 2017-04-03 10:24:00 2017-04-03 10:55:00 19.76 2017-04-03 14:01:00 2017-04-03 14:18:00 8.21 2017-04-03 14:25:00 2017-04-03 14:31:00 1.49 2017-04-03 14:45:00 2017-04-03 14:50:00 1.59 2017-04-03 15:44:00 2017-04-03 16:10:00 4.44 2017-04-03 16:14:00 2017-04-03 16:37:00 9.96 2017-04-03 16:40:00 2017-04-03 16:45:00 0.7 2017-04-03 17:15:00 2017-04-03 17:46:00 16.92 2017-04-03 17:56:00 2017-04-03 18:19:00 5.23 2017-04-03 18:42:00 2017-04-03 18:45:00 0.49 2017-04-03 19:02:00 2017-04-03 19:04:00 0.48 2017-04-04 07:24:00 2017-04-04 07:27:00 0.66 2017-04-04 07:30:00 2017-04-04 08:04:00 13.55 2017-04-04 08:32:00 2017-04-04 09:25:00 25.09 2017-04-04 13:32:00 2017-04-04 13:40:00 3.06 2017-04-04 13:52:00 2017-04-04 13:57:00 1.3 2017-04-04 14:55:00 2017-04-04 15:01:00 2.47 2017-04-04 18:40:00 2017-04-04 19:12:00 22.71 2017-04-04 22:16:00 2017-04-04 23:54:00 38.28 2017-04-04 23:59:00 2017-04-05 00:03:00 1.02 2017-04-05 11:04:00 2017-04-05 11:49:00 25.73 2017-04-05 12:05:00 2017-04-05 12:18:00 2.97 2017-04-05 15:19:00 2017-04-05 16:25:00 25.13 2017-04-05 16:38:00 2017-04-05 16:40:00 0.41 2017-04-05 18:58:00 2017-04-05 19:02:00 1.25 2017-04-05 19:13:00 2017-04-05 19:18:00 1.09 2017-04-05 19:25:00 2017-04-05 19:48:00 6.63 2017-04-06 10:01:00 2017-04-06 10:44:00 20.81 2017-04-06 13:22:00 2017-04-06 13:33:00 1.63 2017-04-06 20:58:00 2017-04-06 21:25:00 24.85 2017-04-06 21:32:00 2017-04-06 21:56:00 6.06 2017-04-07 10:55:00 2017-04-07 11:37:00 24.53 2017-04-07 17:14:00 2017-04-07 17:48:00 19.66 2017-04-07 17:57:00 2017-04-07 18:07:00 2.12 2017-04-08 20:57:00 2017-04-08 21:06:00 1.06 2017-04-08 21:23:00 2017-04-08 21:36:00 2.97 2017-04-09 08:14:00 2017-04-09 08:19:00 1.99 2017-04-09 11:40:00 2017-04-09 11:50:00 2.24 2017-04-09 11:50:00 2017-04-09 11:57:00 1.64 2017-04-09 16:29:00 2017-04-09 16:34:00 0.53 2017-04-09 16:43:00 2017-04-09 16:45:00 0.5 2017-04-09 17:46:00 2017-04-09 17:48:00 0.44 2017-04-09 17:53:00 2017-04-09 17:56:00 0.4 2017-04-09 21:33:00 2017-04-09 21:56:00 2.48 2017-04-09 21:57:00 2017-04-09 22:14:00 2.92 2017-04-09 22:22:00 2017-04-09 22:25:00 0.9 2017-04-10 10:37:00 2017-04-10 11:22:00 19.27 2017-04-10 16:12:00 2017-04-10 16:59:00 21.31 2017-04-11 11:14:00 2017-04-11 11:18:00 1.24 2017-04-11 11:21:00 2017-04-11 11:48:00 22.95 2017-04-11 18:24:00 2017-04-11 19:05:00 28.64 2017-04-11 19:21:00 2017-04-11 19:34:00 5.37 2017-04-12 11:00:00 2017-04-12 12:08:00 28.91 2017-04-12 14:03:00 2017-04-12 15:20:00 28.56 2017-04-12 20:24:00 2017-04-12 20:29:00 1.17 2017-04-12 20:32:00 2017-04-12 21:09:00 30.89 2017-04-13 01:37:00 2017-04-13 02:09:00 32.3 2017-04-13 08:08:00 2017-04-13 08:39:00 19.39 2017-04-13 10:53:00 2017-04-13 11:23:00 24.59 2017-04-13 18:56:00 2017-04-13 19:22:00 22.74 2017-04-14 01:06:00 2017-04-14 01:37:00 31.36 2017-04-14 01:48:00 2017-04-14 01:51:00 1.03 2017-04-14 12:08:00 2017-04-14 12:22:00 1.94 2017-04-14 12:29:00 2017-04-14 13:01:00 19.07 2017-04-14 16:17:00 2017-04-14 17:03:00 19.74 2017-04-14 17:05:00 2017-04-14 17:32:00 3.99 2017-04-14 21:57:00 2017-04-14 22:02:00 1.98 2017-04-15 01:46:00 2017-04-15 01:49:00 1.07 2017-04-15 01:56:00 2017-04-15 01:58:00 1.03 2017-04-15 07:13:00 2017-04-15 07:15:00 0.45 2017-04-15 07:19:00 2017-04-15 07:21:00 0.41 2017-04-15 15:54:00 2017-04-15 16:05:00 1.94 2017-04-15 22:23:00 2017-04-15 22:26:00 0.86 2017-04-15 22:46:00 2017-04-15 22:47:00 0.25 2017-04-15 22:51:00 2017-04-15 22:53:00 0.71 2017-04-16 11:35:00 2017-04-16 11:54:00 11.4 2017-04-16 11:58:00 2017-04-16 12:15:00 10.43 2017-04-17 10:44:00 2017-04-17 10:53:00 3.04 2017-04-17 10:55:00 2017-04-17 11:22:00 18.26 2017-04-17 18:09:00 2017-04-17 18:12:00 0.85 2017-04-17 18:21:00 2017-04-17 19:07:00 37.22 2017-04-18 02:07:00 2017-04-18 02:47:00 32.41 2017-04-18 10:55:00 2017-04-18 10:57:00 0.41 2017-04-18 11:02:00 2017-04-18 11:12:00 2.3 2017-04-18 11:15:00 2017-04-18 11:52:00 24.05 2017-04-18 16:59:00 2017-04-18 17:55:00 22.66 2017-04-19 00:46:00 2017-04-19 01:35:00 39.25 2017-04-19 10:57:00 2017-04-19 11:44:00 24.06 2017-04-19 13:23:00 2017-04-19 14:10:00 25.96 2017-04-19 16:21:00 2017-04-19 17:07:00 18.05 2017-04-19 23:32:00 2017-04-20 00:19:00 39.67 2017-04-20 10:47:00 2017-04-20 11:13:00 24.07 2017-04-20 16:21:00 2017-04-20 16:30:00 0.86 2017-04-20 16:36:00 2017-04-20 16:58:00 0.85 2017-04-20 17:41:00 2017-04-20 17:44:00 0.37 2017-04-20 17:49:00 2017-04-20 18:40:00 19.32 2017-04-20 22:22:00 2017-04-20 22:53:00 29.2 2017-04-20 23:07:00 2017-04-20 23:27:00 10.94 2017-04-21 08:29:00 2017-04-21 08:40:00 1.91 2017-04-21 11:30:00 2017-04-21 11:32:00 0.42 2017-04-21 11:38:00 2017-04-21 11:40:00 0.4 2017-04-21 11:42:00 2017-04-21 12:15:00 19.09 2017-04-21 16:50:00 2017-04-21 18:17:00 40.61 2017-04-21 18:55:00 2017-04-21 19:11:00 1.73 2017-04-21 22:20:00 2017-04-21 22:53:00 28.26 2017-04-21 23:01:00 2017-04-21 23:22:00 11.76 2017-04-22 08:56:00 2017-04-22 08:58:00 0.63 2017-04-22 09:04:00 2017-04-22 09:08:00 0.3 2017-04-22 09:12:00 2017-04-22 09:15:00 0.42 2017-04-22 16:48:00 2017-04-22 16:52:00 0.54 2017-04-22 17:06:00 2017-04-22 17:09:00 0.51 2017-04-22 17:10:00 2017-04-22 17:13:00 1.03 2017-04-22 17:22:00 2017-04-22 17:27:00 1.1 2017-04-23 08:13:00 2017-04-23 08:15:00 0.41 2017-04-23 08:19:00 2017-04-23 08:20:00 0.4 2017-04-23 08:21:00 2017-04-23 08:25:00 1.99 2017-04-23 11:41:00 2017-04-23 11:48:00 2.04 2017-04-23 12:35:00 2017-04-23 12:50:00 7.59 2017-04-23 14:08:00 2017-04-23 14:21:00 7.31 2017-04-23 14:33:00 2017-04-23 15:38:00 37.6 2017-04-24 00:26:00 2017-04-24 01:18:00 39.21 2017-04-24 10:24:00 2017-04-24 10:26:00 0.41 2017-04-24 10:31:00 2017-04-24 10:35:00 1.37 2017-04-24 10:38:00 2017-04-24 10:43:00 1.19 2017-04-24 10:49:00 2017-04-24 11:15:00 19.58 2017-04-24 17:13:00 2017-04-24 18:20:00 37.42 2017-04-24 19:02:00 2017-04-24 19:08:00 1.76 2017-04-24 19:49:00 2017-04-24 19:55:00 1.79 2017-04-24 20:41:00 2017-04-24 21:16:00 32.31 2017-04-25 10:53:00 2017-04-25 11:25:00 24.83 2017-04-25 15:15:00 2017-04-25 15:24:00 3.07 2017-04-25 15:30:00 2017-04-25 15:40:00 3.01 2017-04-25 17:34:00 2017-04-25 18:18:00 24.8 2017-04-26 09:59:00 2017-04-26 10:28:00 24.05 2017-04-26 12:56:00 2017-04-26 13:40:00 29.13 2017-04-26 14:37:00 2017-04-26 15:34:00 21 2017-04-27 08:57:00 2017-04-27 10:21:00 40.56 2017-04-27 16:12:00 2017-04-27 16:44:00 9.89 2017-04-27 17:09:00 2017-04-27 18:01:00 17.51 2017-04-28 05:18:00 2017-04-28 06:06:00 39.28 2017-04-28 12:57:00 2017-04-28 13:52:00 35.82 2017-04-28 16:48:00 2017-04-28 18:14:00 39.1 2017-05-01 11:41:00 2017-05-01 12:20:00 18.74 2017-05-01 18:53:00 2017-05-01 19:34:00 37.15 2017-05-01 23:08:00 2017-05-01 23:09:00 0.06 2017-05-01 23:18:00 2017-05-02 00:11:00 38.61 2017-05-02 11:05:00 2017-05-02 11:42:00 24.07 2017-05-02 17:34:00 2017-05-02 18:53:00 26.42 2017-05-03 12:13:00 2017-05-03 12:25:00 3.96 2017-05-03 12:25:00 2017-05-03 12:56:00 21.15 2017-05-03 13:26:00 2017-05-03 13:44:00 3.32 2017-05-03 13:57:00 2017-05-03 14:08:00 3.49 2017-05-03 18:39:00 2017-05-03 19:08:00 24.85 2017-05-03 19:09:00 2017-05-03 19:13:00 0.99 2017-05-03 19:29:00 2017-05-03 19:32:00 0.84 2017-05-04 10:38:00 2017-05-04 11:06:00 24.05 2017-05-04 13:34:00 2017-05-04 14:10:00 1.73 2017-05-04 17:14:00 2017-05-04 18:23:00 24.68 2017-05-05 20:38:00 2017-05-05 20:52:00 2.24 2017-05-06 11:45:00 2017-05-06 12:30:00 20.19 2017-05-06 14:36:00 2017-05-06 15:35:00 14.49 2017-05-06 15:48:00 2017-05-06 16:17:00 5.25 2017-05-06 17:11:00 2017-05-06 17:13:00 0.43 2017-05-06 17:19:00 2017-05-06 17:21:00 0.43 2017-05-07 08:16:00 2017-05-07 08:22:00 3.27 2017-05-07 12:09:00 2017-05-07 12:16:00 2.01 2017-05-07 17:28:00 2017-05-07 17:50:00 10.36 2017-05-07 17:54:00 2017-05-07 18:01:00 1.19 2017-05-07 18:02:00 2017-05-07 18:35:00 28.31 2017-05-07 21:48:00 2017-05-07 21:52:00 1.46 2017-05-07 22:01:00 2017-05-07 22:05:00 1.37 2017-05-08 00:59:00 2017-05-08 02:19:00 39.23 2017-05-08 11:30:00 2017-05-08 11:58:00 22.55 2017-05-08 18:08:00 2017-05-08 18:30:00 10.47 2017-05-08 18:33:00 2017-05-08 19:09:00 28.44 2017-05-08 22:25:00 2017-05-08 23:09:00 38.65 2017-05-08 23:14:00 2017-05-08 23:17:00 1.04 2017-05-09 11:35:00 2017-05-09 12:19:00 23.99 2017-05-09 17:57:00 2017-05-09 18:59:00 29.38 2017-05-09 20:03:00 2017-05-09 20:13:00 1.9 2017-05-10 10:18:00 2017-05-10 10:54:00 24.06 2017-05-10 15:43:00 2017-05-10 16:46:00 24.71 2017-05-11 12:28:00 2017-05-11 13:07:00 21.75 2017-05-11 18:00:00 2017-05-11 18:31:00 19.3 2017-05-12 08:26:00 2017-05-12 08:55:00 20.46 2017-05-12 13:00:00 2017-05-12 13:34:00 14.6 2017-05-13 08:44:00 2017-05-13 08:46:00 0.38 2017-05-13 08:57:00 2017-05-13 09:01:00 0.33 2017-05-13 14:22:00 2017-05-13 14:41:00 6.86 2017-05-13 15:17:00 2017-05-13 15:35:00 5.2 2017-05-13 18:10:00 2017-05-13 18:21:00 1.91 2017-05-14 11:22:00 2017-05-14 11:26:00 0.9 2017-05-14 11:36:00 2017-05-14 11:38:00 0.39 2017-05-14 14:56:00 2017-05-14 15:59:00 40.07 2017-05-14 16:34:00 2017-05-14 16:41:00 1.49 2017-05-14 16:56:00 2017-05-14 17:04:00 1.45 2017-05-14 19:05:00 2017-05-14 20:06:00 39.21 2017-05-15 11:24:00 2017-05-15 11:33:00 1.91 2017-05-15 11:41:00 2017-05-15 12:13:00 19.84 2017-05-15 17:41:00 2017-05-15 18:11:00 16 2017-05-15 18:15:00 2017-05-15 19:23:00 31.52 2017-05-15 23:41:00 2017-05-16 00:26:00 39.32 2017-05-16 09:49:00 2017-05-16 11:02:00 24.91 2017-05-16 16:08:00 2017-05-16 16:32:00 3.37 2017-05-16 17:11:00 2017-05-16 17:32:00 4.8 2017-05-16 17:42:00 2017-05-16 17:56:00 1.81 2017-05-16 18:13:00 2017-05-16 18:46:00 24.85 2017-05-16 21:07:00 2017-05-16 21:10:00 1.04 2017-05-16 21:26:00 2017-05-16 21:29:00 1.02 2017-07-28 16:10:00 2017-07-28 16:17:00 2.22 2017-07-28 16:17:00 2017-07-28 16:42:00 7.84 2017-08-10 12:00:00 2017-08-10 12:44:00 24.05 2017-08-10 14:56:00 2017-08-10 15:10:00 1.61 2017-08-10 18:51:00 2017-08-10 19:21:00 24.85 2017-08-10 19:46:00 2017-08-10 19:56:00 1.14 2017-08-10 20:08:00 2017-08-10 20:12:00 1.09 2017-08-11 12:44:00 2017-08-11 12:49:00 0.82 2017-08-11 12:59:00 2017-08-11 13:01:00 0.56 2017-08-11 13:18:00 2017-08-11 15:12:00 1.79 2017-08-11 15:14:00 2017-08-11 16:53:00 34.6 2017-08-11 19:27:00 2017-08-11 20:34:00 34.91 2017-08-12 13:52:00 2017-08-12 13:56:00 1.05 2017-08-12 13:59:00 2017-08-12 14:02:00 0.28 2017-08-12 14:10:00 2017-08-12 14:30:00 1.22 2017-08-12 17:15:00 2017-08-12 17:36:00 11.37 2017-08-12 20:49:00 2017-08-12 21:05:00 10.43 2017-08-13 12:16:00 2017-08-13 12:44:00 12.96 2017-08-13 16:03:00 2017-08-13 16:32:00 14.33 2017-08-13 18:19:00 2017-08-13 18:42:00 9.32 2017-08-13 18:52:00 2017-08-13 19:05:00 3.99 2017-08-13 21:42:00 2017-08-13 21:53:00 5.6 2017-08-14 08:50:00 2017-08-14 09:45:00 24.1 2017-08-14 13:22:00 2017-08-14 13:54:00 24.84 2017-08-14 14:02:00 2017-08-14 15:34:00 36.92 2017-08-14 15:58:00 2017-08-14 17:17:00 35.7 2017-08-14 17:35:00 2017-08-14 17:45:00 1.99 2017-08-14 18:07:00 2017-08-14 18:27:00 9.92 2017-08-15 10:15:00 2017-08-15 10:51:00 25 2017-08-15 19:23:00 2017-08-15 19:29:00 0.4 2017-08-15 19:51:00 2017-08-15 20:45:00 24.39 2017-08-15 20:56:00 2017-08-15 21:04:00 2.78 2017-08-15 21:09:00 2017-08-15 21:37:00 19.22 2017-08-16 00:03:00 2017-08-16 00:27:00 15.51 2017-08-16 00:36:00 2017-08-16 00:41:00 1.23 2017-08-16 00:46:00 2017-08-16 01:18:00 11.35 2017-08-16 09:38:00 2017-08-16 09:41:00 1.21 2017-08-16 09:41:00 2017-08-16 09:43:00 0.08 2017-08-16 09:47:00 2017-08-16 10:32:00 22.89 2017-08-16 16:51:00 2017-08-16 17:11:00 3.14 2017-08-16 17:12:00 2017-08-16 17:25:00 2.76 2017-08-16 17:41:00 2017-08-16 18:36:00 24.78 2017-08-17 09:34:00 2017-08-17 10:13:00 24.03 2017-08-17 12:32:00 2017-08-17 13:07:00 24.82 2017-08-17 13:35:00 2017-08-17 13:40:00 0.4 2017-08-17 13:47:00 2017-08-17 15:07:00 36.06 2017-08-17 15:18:00 2017-08-17 15:24:00 0.06 2017-08-17 16:03:00 2017-08-17 18:05:00 35.16 2017-08-18 09:47:00 2017-08-18 10:23:00 24.47 2017-08-18 16:04:00 2017-08-18 16:42:00 1.63 2017-08-18 17:56:00 2017-08-18 18:25:00 10.74 2017-08-18 18:27:00 2017-08-18 18:48:00 1.85 2017-08-19 00:07:00 2017-08-19 00:41:00 18.92 2017-08-19 00:52:00 2017-08-19 00:55:00 0.99 2017-08-19 11:52:00 2017-08-19 12:14:00 7.56 2017-08-19 15:57:00 2017-08-19 16:12:00 4.02 2017-08-19 16:37:00 2017-08-19 16:56:00 5.32 2017-08-19 23:32:00 2017-08-19 23:50:00 7.54 2017-08-19 23:51:00 2017-08-20 00:17:00 9.59 2017-08-20 09:03:00 2017-08-20 09:16:00 5.22 2017-08-20 19:17:00 2017-08-20 19:32:00 4.69 2017-08-21 09:24:00 2017-08-21 09:40:00 2.31 2017-08-21 10:59:00 2017-08-21 11:02:00 0.47 2017-08-21 13:40:00 2017-08-21 15:29:00 36.09 2017-08-21 15:54:00 2017-08-21 16:48:00 2.24 2017-08-21 16:57:00 2017-08-21 18:15:00 32.3 2017-08-22 08:38:00 2017-08-22 09:06:00 0.65 2017-08-22 09:18:00 2017-08-22 09:19:00 0.04 2017-08-22 09:22:00 2017-08-22 10:05:00 23.49 2017-08-22 14:30:00 2017-08-22 15:02:00 1.7 2017-08-22 16:37:00 2017-08-22 17:41:00 24.8 2017-08-23 17:16:00 2017-08-23 18:14:00 24.01 2017-08-23 18:27:00 2017-08-23 18:32:00 1.05 2017-08-23 19:24:00 2017-08-23 20:04:00 18.14 2017-08-23 22:01:00 2017-08-23 22:28:00 16.33 2017-08-23 22:46:00 2017-08-23 22:50:00 1.04 2017-08-24 09:41:00 2017-08-24 09:44:00 0.02 2017-08-24 09:59:00 2017-08-24 10:00:00 0.02 2017-08-24 13:57:00 2017-08-24 15:33:00 42.51 2017-08-24 16:43:00 2017-08-24 17:00:00 0.07 2017-08-24 17:06:00 2017-08-24 17:33:00 10.01 2017-08-24 18:12:00 2017-08-24 19:03:00 27.67 2017-08-25 09:36:00 2017-08-25 09:55:00 2.63 2017-08-25 10:01:00 2017-08-25 10:32:00 20.92 2017-08-25 20:40:00 2017-08-25 21:45:00 17.41 2017-08-25 21:49:00 2017-08-25 22:14:00 16.02 2017-08-26 00:10:00 2017-08-26 02:14:00 29.77 2017-08-26 16:31:00 2017-08-26 16:55:00 7.15 2017-08-26 17:54:00 2017-08-26 18:19:00 10 2017-08-26 20:07:00 2017-08-26 20:08:00 0.19 2017-08-26 20:08:00 2017-08-26 20:11:00 1.35 2017-08-27 12:39:00 2017-08-27 12:54:00 1 2017-08-27 12:55:00 2017-08-27 13:48:00 9.29 2017-08-27 14:00:00 2017-08-27 14:34:00 3.86 2017-08-27 15:56:00 2017-08-27 16:37:00 10.45 2017-08-27 16:44:00 2017-08-27 16:51:00 1.8 2017-08-27 16:55:00 2017-08-27 17:00:00 0.68 2017-08-27 17:04:00 2017-08-27 17:19:00 4.96 2017-08-27 17:28:00 2017-08-27 17:39:00 2.33 2017-08-27 17:47:00 2017-08-27 18:58:00 24.19 2017-08-27 22:17:00 2017-08-27 22:41:00 16.24 2017-08-28 00:33:00 2017-08-28 01:22:00 13.62 2017-08-28 12:48:00 2017-08-28 12:51:00 0.47 2017-08-28 14:01:00 2017-08-28 14:03:00 0.4 2017-08-28 14:12:00 2017-08-28 15:31:00 34.86 2017-08-28 15:56:00 2017-08-28 17:04:00 34.47 2017-08-28 22:15:00 2017-08-28 22:38:00 18.57 2017-08-29 01:42:00 2017-08-29 02:05:00 18.88 2017-08-29 11:40:00 2017-08-29 11:44:00 1.04 2017-08-29 11:48:00 2017-08-29 12:09:00 0.03 2017-08-29 12:18:00 2017-08-29 12:21:00 0.03 2017-08-29 12:26:00 2017-08-29 12:32:00 1.05 2017-08-29 12:35:00 2017-08-29 13:15:00 24.05 2017-08-29 19:40:00 2017-08-29 19:42:00 0.35 2017-08-29 19:50:00 2017-08-29 20:19:00 27.72 2017-08-29 20:25:00 2017-08-29 20:41:00 10.42 2017-08-30 10:00:00 2017-08-30 10:47:00 24.25 2017-08-30 14:31:00 2017-08-30 14:56:00 1.68 2017-08-30 17:19:00 2017-08-30 17:43:00 0.04 2017-08-30 17:43:00 2017-08-30 17:50:00 0.29 2017-08-30 17:56:00 2017-08-30 18:40:00 16.85 2017-08-30 22:57:00 2017-08-30 23:35:00 17.31 2017-08-31 11:30:00 2017-08-31 11:41:00 0.43 2017-08-31 14:04:00 2017-08-31 14:06:00 0.41 2017-08-31 14:24:00 2017-08-31 14:26:00 0.68 2017-08-31 14:31:00 2017-08-31 15:42:00 34.88 2017-08-31 16:01:00 2017-08-31 17:07:00 30.45 2017-08-31 20:54:00 2017-08-31 21:21:00 19.6 2017-09-01 10:30:00 2017-09-01 10:59:00 17.63 2017-09-01 14:07:00 2017-09-01 15:07:00 27.45 2017-09-01 17:17:00 2017-09-01 17:36:00 1.93 2017-09-01 18:16:00 2017-09-01 19:19:00 20.58 2017-09-01 19:25:00 2017-09-01 19:38:00 4.8 2017-09-01 21:30:00 2017-09-01 21:54:00 1.94 2017-09-02 15:46:00 2017-09-02 16:06:00 0.99 2017-09-02 16:13:00 2017-09-02 16:16:00 1.01 2017-09-02 16:56:00 2017-09-02 16:59:00 0.42 2017-09-02 17:04:00 2017-09-02 17:06:00 0.4 2017-09-02 22:52:00 2017-09-02 22:54:00 0.07 2017-09-02 22:55:00 2017-09-02 23:15:00 18.62 2017-09-03 01:46:00 2017-09-03 02:10:00 18.9 2017-09-03 14:49:00 2017-09-03 15:04:00 3.14 2017-09-03 15:50:00 2017-09-03 16:07:00 10.17 2017-09-03 16:21:00 2017-09-03 16:38:00 7.79 2017-09-03 16:47:00 2017-09-03 16:52:00 1.11 2017-09-03 18:32:00 2017-09-03 18:37:00 1.2 2017-09-03 18:37:00 2017-09-03 18:44:00 0.91 2017-09-04 15:50:00 2017-09-04 15:54:00 0.42 2017-09-04 15:59:00 2017-09-04 16:11:00 2.3 2017-09-04 16:21:00 2017-09-04 16:43:00 8.31 2017-09-04 17:05:00 2017-09-04 17:15:00 2.54 2017-09-04 17:26:00 2017-09-04 17:41:00 4.52 2017-09-04 17:49:00 2017-09-04 18:25:00 29.55 2017-09-04 19:36:00 2017-09-04 19:51:00 0.93 2017-09-04 19:54:00 2017-09-04 19:59:00 0.5 2017-09-04 21:21:00 2017-09-04 21:55:00 29.37 2017-09-05 11:08:00 2017-09-05 11:51:00 35.5 2017-09-05 12:36:00 2017-09-05 13:07:00 2.29 2017-09-05 13:19:00 2017-09-05 13:22:00 0.51 2017-09-05 13:26:00 2017-09-05 14:03:00 33.09 2017-09-05 14:13:00 2017-09-05 15:01:00 24.03 2017-09-05 17:33:00 2017-09-05 18:11:00 14.55 2017-09-05 19:01:00 2017-09-05 19:19:00 11.31 2017-09-06 09:21:00 2017-09-06 09:39:00 7.73 2017-09-06 10:14:00 2017-09-06 10:30:00 7.75 2017-09-06 10:37:00 2017-09-06 11:13:00 24.13 2017-09-06 16:48:00 2017-09-06 17:35:00 25.3 2017-09-06 17:49:00 2017-09-06 17:55:00 0.18 2017-09-06 17:58:00 2017-09-06 18:00:00 0.39 2017-09-06 18:38:00 2017-09-06 19:04:00 15.93 2017-09-06 23:45:00 2017-09-07 00:14:00 19.45 2017-09-07 00:26:00 2017-09-07 00:30:00 1.01 2017-09-07 10:42:00 2017-09-07 11:35:00 31.74 2017-09-07 14:04:00 2017-09-07 14:39:00 27.38 2017-09-07 14:43:00 2017-09-07 14:52:00 3.06 2017-09-07 14:54:00 2017-09-07 16:00:00 32.96 2017-09-07 16:32:00 2017-09-07 16:33:00 0.07 2017-09-07 16:38:00 2017-09-07 17:04:00 2.31 2017-09-07 17:23:00 2017-09-07 18:14:00 33.03 2017-09-08 10:02:00 2017-09-08 10:30:00 19.73 2017-09-08 18:09:00 2017-09-08 18:37:00 18.97 2017-09-08 19:04:00 2017-09-08 19:18:00 1.87 2017-09-09 02:25:00 2017-09-09 02:28:00 1.1 2017-09-09 02:33:00 2017-09-09 02:35:00 1.05 2017-09-10 17:09:00 2017-09-10 17:44:00 14.25 2017-09-10 22:50:00 2017-09-10 22:53:00 0.25 2017-09-10 22:56:00 2017-09-10 22:57:00 0.02 2017-09-10 23:00:00 2017-09-10 23:23:00 16.18 2017-09-11 00:01:00 2017-09-11 00:19:00 1.83 2017-09-11 09:59:00 2017-09-11 10:06:00 1.91 2017-09-11 10:12:00 2017-09-11 10:51:00 27.49 2017-09-11 13:39:00 2017-09-11 14:13:00 27.23 2017-09-11 14:31:00 2017-09-11 15:31:00 35.45 2017-09-11 16:03:00 2017-09-11 17:09:00 36.01 2017-09-11 17:39:00 2017-09-11 18:01:00 9.88 2017-09-11 23:01:00 2017-09-11 23:05:00 1.14 2017-09-11 23:16:00 2017-09-11 23:30:00 5.93 2017-09-11 23:30:00 2017-09-11 23:54:00 4.94 2017-09-12 02:56:00 2017-09-12 04:00:00 25.87 2017-09-12 10:06:00 2017-09-12 10:46:00 24.84 2017-09-12 16:33:00 2017-09-12 17:20:00 22.43 2017-09-12 19:38:00 2017-09-12 20:14:00 21.79 2017-09-13 06:24:00 2017-09-13 06:59:00 25.84 2017-09-13 07:02:00 2017-09-13 07:14:00 5.77 2017-09-13 11:14:00 2017-09-13 11:36:00 16.26 2017-09-13 16:01:00 2017-09-13 16:57:00 24.79 2017-09-13 17:07:00 2017-09-13 17:48:00 15.94 2017-09-13 23:13:00 2017-09-13 23:35:00 16.73 2017-09-14 12:00:00 2017-09-14 12:27:00 19.71 2017-09-14 12:28:00 2017-09-14 12:30:00 0.18 2017-09-14 14:36:00 2017-09-14 15:06:00 14.98 2017-09-14 15:11:00 2017-09-14 15:17:00 2.99 2017-09-14 15:26:00 2017-09-14 16:44:00 37.48 2017-09-14 17:03:00 2017-09-14 18:17:00 34.18 2017-09-14 18:32:00 2017-09-14 18:41:00 3.03 2017-09-15 10:25:00 2017-09-15 10:26:00 0.05 2017-09-15 10:45:00 2017-09-15 10:48:00 0.29 2017-09-15 10:59:00 2017-09-15 11:05:00 0.3 2017-09-15 11:09:00 2017-09-15 11:36:00 10.82 2017-09-15 13:00:00 2017-09-15 13:17:00 8.37 2017-09-15 13:36:00 2017-09-15 14:30:00 25.19 2017-09-15 14:37:00 2017-09-15 15:01:00 0.45 2017-09-15 15:04:00 2017-09-15 16:59:00 85.51 2017-09-15 17:06:00 2017-09-15 18:57:00 129.72 2017-09-15 19:03:00 2017-09-15 20:02:00 60.96 2017-09-16 10:18:00 2017-09-16 10:39:00 16.04 2017-09-16 11:52:00 2017-09-16 12:12:00 16.68 2017-09-16 12:28:00 2017-09-16 13:29:00 49 2017-09-16 18:36:00 2017-09-16 19:30:00 45.7 2017-09-16 19:39:00 2017-09-16 19:47:00 2.1 2017-09-17 13:32:00 2017-09-17 13:41:00 2.24 2017-09-17 14:19:00 2017-09-17 14:48:00 14.68 2017-09-17 18:25:00 2017-09-17 18:26:00 0.05 2017-09-17 18:36:00 2017-09-17 19:03:00 12.26 2017-09-18 07:52:00 2017-09-18 08:03:00 2.04 2017-09-18 08:21:00 2017-09-18 08:56:00 37.94 2017-09-18 09:01:00 2017-09-18 09:53:00 65.7 2017-09-18 10:04:00 2017-09-18 10:34:00 39.43 2017-09-18 10:46:00 2017-09-18 11:07:00 14.25 2017-09-18 11:19:00 2017-09-18 13:29:00 138.98 2017-09-18 14:24:00 2017-09-18 14:26:00 0.04 2017-09-18 14:28:00 2017-09-18 15:23:00 35.52 2017-09-18 15:53:00 2017-09-18 17:49:00 36.64 2017-09-19 09:24:00 2017-09-19 10:22:00 24.37 2017-09-19 15:55:00 2017-09-19 16:53:00 15.87 2017-09-19 16:53:00 2017-09-19 17:20:00 0.85 2017-09-19 17:33:00 2017-09-19 18:06:00 10.95 2017-09-19 18:10:00 2017-09-19 18:34:00 8.41 2017-09-19 21:06:00 2017-09-19 21:10:00 1.24 2017-09-19 21:17:00 2017-09-19 21:21:00 1.05 2017-09-20 11:12:00 2017-09-20 11:16:00 1.22 2017-09-20 11:18:00 2017-09-20 11:59:00 24.15 2017-09-20 17:20:00 2017-09-20 18:07:00 24.15 2017-09-20 18:50:00 2017-09-20 19:17:00 16.02 2017-09-20 22:05:00 2017-09-20 22:32:00 17.5 2017-09-21 13:38:00 2017-09-21 13:44:00 0.72 2017-09-21 13:50:00 2017-09-21 15:26:00 35.81 2017-09-21 15:59:00 2017-09-21 16:15:00 8.26 2017-09-21 16:19:00 2017-09-21 17:32:00 28.1 2017-09-21 18:49:00 2017-09-21 19:25:00 16.05 2017-09-21 22:30:00 2017-09-21 22:59:00 16.97 2017-09-22 10:19:00 2017-09-22 10:21:00 0.43 2017-09-22 10:25:00 2017-09-22 10:26:00 0.4 2017-09-22 10:30:00 2017-09-22 10:54:00 19.15 2017-09-22 11:58:00 2017-09-22 12:02:00 1.05 2017-09-22 18:32:00 2017-09-22 18:59:00 20.95 2017-09-23 08:34:00 2017-09-23 08:51:00 1.15 2017-09-23 09:19:00 2017-09-23 10:31:00 37.57 2017-09-23 11:09:00 2017-09-23 11:23:00 5.67 2017-09-23 11:51:00 2017-09-23 12:15:00 4.64 2017-09-23 12:47:00 2017-09-23 13:40:00 8.45 2017-09-23 13:56:00 2017-09-23 15:08:00 34.62 2017-09-23 15:37:00 2017-09-23 16:07:00 1.56 2017-09-24 14:59:00 2017-09-24 15:02:00 0.43 2017-09-24 15:14:00 2017-09-24 17:09:00 6.6 2017-09-24 17:37:00 2017-09-24 18:01:00 7.05 2017-09-24 18:05:00 2017-09-24 18:07:00 0.41 2017-09-24 19:35:00 2017-09-24 20:31:00 25.28 2017-09-25 00:24:00 2017-09-25 00:26:00 0.42 2017-09-25 00:30:00 2017-09-25 01:10:00 23.13 2017-09-25 12:12:00 2017-09-25 12:38:00 19.45 2017-09-25 14:22:00 2017-09-25 14:50:00 19.86 2017-09-25 14:52:00 2017-09-25 15:54:00 35.53 2017-09-25 16:37:00 2017-09-25 18:17:00 34.54 2017-09-25 20:36:00 2017-09-25 21:08:00 28.91 2017-09-26 01:46:00 2017-09-26 02:21:00 26.32 2017-09-26 09:36:00 2017-09-26 10:18:00 24.02 2017-09-26 14:05:00 2017-09-26 14:39:00 25.3 2017-09-26 15:49:00 2017-09-26 15:58:00 1.53 2017-09-26 16:15:00 2017-09-26 16:22:00 1.1 2017-09-27 09:15:00 2017-09-27 10:16:00 24.76 2017-09-27 16:26:00 2017-09-27 17:49:00 35.87 2017-09-27 17:58:00 2017-09-27 18:46:00 27.64 2017-09-27 18:51:00 2017-09-27 18:59:00 2.08 2017-09-27 19:10:00 2017-09-27 20:17:00 21.17 2017-09-27 20:25:00 2017-09-27 21:56:00 3.6 2017-09-27 22:04:00 2017-09-27 22:32:00 16.56 2017-09-28 06:46:00 2017-09-28 07:19:00 14.4 2017-09-28 09:05:00 2017-09-28 09:29:00 8.06 2017-09-28 10:41:00 2017-09-28 11:21:00 22.34 2017-09-28 14:26:00 2017-09-28 16:05:00 35.57 2017-09-28 16:09:00 2017-09-28 16:21:00 1.17 2017-09-28 20:37:00 2017-09-28 20:40:00 1.1 2017-09-28 20:56:00 2017-09-28 21:00:00 1.15 2017-09-29 09:32:00 2017-09-29 10:02:00 19.73
我想像下面的图一样绘制这些离散事件,但是2pi是一周而不是24小时,以便阐明这些事件的周期性,其中颜色表示距离。
我已经尝试修改此问题开头的解决方案,但是它并没有帮助我。我的新方法是修改此解决方案,但是除了水平和垂直线围绕螺旋形散布之外,我很难获得其他任何东西。使它们弯曲并显示在正确的位置非常困难。
我乐于接受任何方法来成功地在螺旋图中显示数据,而无需将其量化/组合为特定间隔,而是允许间隔本身描述沿连续螺旋时间轴的离散事件。同样,我对将其转换为原始的单点时间序列格式不感兴趣,在该格式中,我将有大量数据表示旅行之间的时间。我想以一种时间格式(一种描述时间窗口而不是特定时间的事件)来实现这一目标。
仍然需要工作,但这是从python和matplotlib开始的。
这个想法是在极坐标中绘制一个螺旋时间轴,周期为1周,每个事件都是该螺旋的弧线,其颜色取决于dist数据。
dist
尽管有很多重叠的时间间隔,但这种可视化效果往往会隐藏起来……如果精心选择颜色表,半透明的弧可能会更好。
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.patheffects as mpe import pandas as pd # styling LINEWIDTH=4 EDGEWIDTH=1 CAPSTYLE="projecting" COLORMAP="viridis_r" ALPHA=1 FIRSTDAY=6 # 0=Mon, 6=Sun # load dataset and parse timestamps df = pd.read_csv('trips.csv') df[['trip_start', 'trip_stop']] = df[['trip_start', 'trip_stop']].apply(pd.to_datetime) # set origin at the first FIRSTDAY before the first trip, midnight first_trip = df['trip_start'].min() origin = (first_trip - pd.to_timedelta(first_trip.weekday() - FIRSTDAY, unit='d')).replace(hour=0, minute=0, second=0) weekdays = pd.date_range(origin, origin + np.timedelta64(1, 'W')).strftime("%a").tolist() # # convert trip timestamps to week fractions df['start'] = (df['trip_start'] - origin) / np.timedelta64(1, 'W') df['stop'] = (df['trip_stop'] - origin) / np.timedelta64(1, 'W') # sort dataset so shortest trips are plotted last # should prevent longer events to cover shorter ones, still suboptimal df = df.sort_values('dist', ascending=False).reset_index() fig = plt.figure(figsize=(8, 6)) ax = fig.gca(projection="polar") for idx, event in df.iterrows(): # sample normalized distance from colormap ndist = event['dist'] / df['dist'].max() color = plt.cm.get_cmap(COLORMAP)(ndist) tstart, tstop = event.loc[['start', 'stop']] # timestamps are in week fractions, 2pi is one week nsamples = int(1000. * (tstop - tstart)) t = np.linspace(tstart, tstop, nsamples) theta = 2 * np.pi * t arc, = ax.plot(theta, t, lw=LINEWIDTH, color=color, solid_capstyle=CAPSTYLE, alpha=ALPHA) if EDGEWIDTH > 0: arc.set_path_effects([mpe.Stroke(linewidth=LINEWIDTH+EDGEWIDTH, foreground='black'), mpe.Normal()]) # grid and labels ax.set_rticks([]) ax.set_theta_zero_location("N") ax.set_theta_direction(-1) ax.set_xticks(np.linspace(0, 2*np.pi, 7, endpoint=False)) ax.set_xticklabels(weekdays) ax.tick_params('x', pad=2) ax.grid(True) # setup a custom colorbar, everything's always a bit tricky with mpl colorbars vmin = df['dist'].min() vmax = df['dist'].max() norm = mpl.colors.Normalize(vmin=vmin, vmax=vmax) sm = plt.cm.ScalarMappable(cmap=COLORMAP, norm=norm) sm.set_array([]) plt.colorbar(sm, ticks=np.linspace(vmin, vmax, 10), fraction=0.04, aspect=60, pad=0.1, label="distance", ax=ax) plt.savefig("spiral.png", pad_inches=0, bbox_inches="tight")
要看到它是一个永不重叠的螺旋形,并且也适用于较长的事件,您也可以绘制完整的时间线(此处LINEWIDTH=3.5用于限制莫尔条纹)。
LINEWIDTH=3.5
fullt = np.linspace(df['start'].min(), df['stop'].max(), 10000) theta = 2 * np.pi * fullt ax.plot(theta, fullt, lw=LINEWIDTH, path_effects=[mpe.Stroke(linewidth=LINEWIDTH+LINEBORDER, foreground='black'), mpe.Normal()])
这是一个随机数据集的图,该数据集200主要是短途旅行,偶尔还有1到2周的长途旅行。
200
N = 200 df = pd.DataFrame() df["start"] = np.random.uniform(0, 20, size=N) df["stop"] = df["start"] + np.random.choice([np.random.uniform(0, 0.1), np.random.uniform(1., 2.)], p=[0.98, 0.02], size=N) df["dist"] = np.random.random(size=N)
inferno_r彩色贴图,圆形或对接的线帽,半透明,粗体的边缘等( 点击 放大)
inferno_r