跳转到主要内容

一个用于从JSON创建干净SVG时间轴的库。

项目描述

Pytimeline

pytimeline是一个命令行工具,用于从JSON创建SVG时间轴。

Simple example

[!注意] 这是对Jason Reisman的旧时间轴脚本的重写,大部分工作归功于他。我只是整理了一下,并使其成为一个具有命令行界面的包。

安装

该包与Python 3.9+兼容,并可以使用pip在您的当前环境中安装。

python -m pip install pytimeline

用法

当该包安装到您的激活环境中时,可以通过python -m pytimeline来调用它。详细用法如下

Usage: python -m pytimeline [OPTIONS]

Options:
  --inputfile PATH                Path to the input JSON file with the
                                  timeline data.  [required]
  --outputfile PATH               Path at which to write the output SVG file.
                                  [default: timeline.svg]
  --logging [trace|debug|info|warning|error|critical]
                                  Sets the logging level.  [default: info]
  --help                          Show this message and exit.

该脚本将解析您的输入文件,并在提供的输出文件夹中导出SVG文档,或者如果未提供,则在输入文件的同一目录中。

否则,可以导入包中的高级对象并直接使用它

from pytimeline import Timeline

timeline = Timeline(inputfile="your_input.json")
timeline.build()
timeline.save("timeline.svg")

输入数据格式

输入文件是一个描述时间轴的起点和终点、主轴上的刻度以及指向特定日期/时间的调用和突出显示时间段的纪元的JSON文档。

所有日期字段都可以使用几种常见的日期格式描述,并且可以可选地包括一天中的时间(例如“3/14/15 9:26am”)。日期时间的解析由pendulum包处理,所有接受的日期格式可以在相关的文档中找到。

必填和可选字段

必填字段是widthstartend。所有其他字段都是可选的。

必填

  • width描述输出SVG文档的宽度,高度将自动确定。
  • start是轴上最左侧的日期/时间。
  • end是轴上最右侧的日期/时间。

可选

  • num_ticks控制从startend日期/时间之间的刻度数(包括)。如果此字段不存在,则不会生成刻度,除了startend日期的刻度。
  • tick_format描述轴上刻度的字符串格式。请参阅pendulum包的有效格式

特殊字段

注释

轴上的注释在callouts列表中描述,其中每个条目本身也是一个包含两个到三个字符串值的列表

  • 第一个值是注释的description(例如,“π日”)。它是必需的。
  • 第二个值是注释的date/time(例如,“3/14/15 9:26am”)。它是必需的。
  • 第三个值可以指定注释的color,可以是十六进制代码或有效的SVG颜色别名。它是可选的。

注释示例

["Ultimate Pi Day", "3/14/15 9:26am"]

或者,使用自定义注释颜色

["Ultimate Pi Day", "3/14/15 9:26am", "#CD3F85"]

时代

时代是突出显示的时间段,并在eras列表中描述。与callouts列表一样,时代列表中的每个条目本身也是一个包含三个或四个字符串值的列表

  • 第一个值是时代的description(例如,“夏天”)。它是必需的。
  • 第二个值是时代的开始date/time(例如,“6/21/15 12am”)。它是必需的。
  • 第三个值是时代的结束date/time(例如,“9/20/15 11:59pm”)。它是必需的。
  • 第四个值可以指定时代的color,可以是十六进制代码或有效的SVG颜色别名。它是可选的。

时代示例

["Summer 2015", "6/21/15 12am", "9/20/15 11:59pm"]

或者,使用自定义时代颜色

["Summer 2015", "6/21/15 12am", "9/20/15 11:59pm", "Orange"]

简单示例

README顶部示例时间线的JSON输入是

{
    "width" : 750,
    "start" : "Oct 8 2015",
    "end" : "Oct 15 2015",
    "num_ticks" : 14,
    "tick_format" : "%b %d, %Y - %I:%M%p",
    "callouts" : [
        ["ABC easy as 123", "Oct 14, 2015 3pm"],
        ["Midnight Event A", "12am Oct 10, 2015", "#DD0000"],
        ["Noon Event A", "12pm Oct 10, 2015"],
        ["5pm Event A", "5pm Oct 10, 2015"],
        ["Something amazing happening", "Oct 11, 2015"],
        ["Awesome Event B", "Oct 12, 2015", "#DD0000"],
        ["C", "Oct 13, 2015"],
        ["Event E", "Oct 14, 2015"]
    ],
    "eras" : [
        ["Era 1", "12pm Oct 8, 2015", "3am Oct 12, 2015", "#CD3F85"],
        ["Era 2", "8am Oct 12, 2015", "12am Oct 15, 2015", "#C0C0FF"]
    ]
}

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

pytimeline-0.3.0.tar.gz (208.4 kB 查看哈希值)

上传时间

构建分布

pytimeline-0.3.0-py3-none-any.whl (9.6 kB 查看哈希值)

上传于 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面