如何可视化时间间隔

数据挖掘 可视化
2021-10-11 14:23:44

我有一个熊猫表,每个条目都有一个开始和结束时间。它们不相交,但范围从几秒到几天不等。我想将它们可视化,理想情况下,x 轴是它们出现的日期,y 轴是时间。但是,我还没有找到实现这一目标的好方法。

一个想法是我使用 Boxplots(一个 Box,每个条目有一个开始和一个结束时间)并按 [年、月、日] 分组,但是当间隔开始和结束于不同的一天时,这个想法不起作用。

2个回答

Wolfram 最近发布了一个免费的 Wolfram 引擎,可以在 Python(和其他语言)中调用,因此您可以使用它的功能,例如TimelinePlot.

首先使用 2017 年飓风Interval的开始和结束日期获取一些 date 。"TropicalStorm"

ec = EntityClass["TropicalStorm", "Hurricanes2017"];
timeIntervals = Interval /@ EntityValue[ec, {"StartDate", "EndDate"}];

timeIntervals包含Intervals 个DateObject其中前 3 个是

timeIntervals[[;; 3]]

数学图形

一个基本TimelinePlottimeIntervals给予

TimelinePlot[timeIntervals]

数学图形

但是,TimelinePlot有很多选项可以自定义它。例如,取timeIntervals, 每个集合中第一个间隔的第一个日期(请参阅),并使用每个集合的 s 作为图例键添加一个。GatherBy "Month"SortByPartAutomatic LineLegend"MonthShortName"

With[{
  byMonth = 
   SortBy[#[[1, 1, 1]] &]@GatherBy[timeIntervals, DateValue[#[[1, 1]], "Month"] &]
  },
 TimelinePlot[
  byMonth,
  PlotLegends -> 
   LineLegend[Automatic, DateValue[#[[1, 1, 1]], "MonthNameShort"] & /@ byMonth]
  ]]

数学图形

希望这可以帮助。

在不知道细节的情况下,我只能提出一般性的想法:

  • 最自然的表示是一维线,每个条目简单地表示为例如与其开始和结束时间相对应的彩色或粗体段。假设完整的时间跨度不是太长,这是可以的,因为条目不重叠。短条目将仅显示为一个点。
  • 如果合适,另一种方法是在 Y 轴上表示持续时间,并使用箱线图在 X 轴上按时间单位表示一组条目,例如周或月。缺点是这不能代表例如一天中的时间或一周中的一天中出现条目的时间。