仅使用Unicode字符为数字生成迷你图。
sparklines的Python项目详细描述
这个python包实现了edward tufte的sparklines概念,但是 仅限于文本,例如:~9601;__(我可能没有显示 在每个浏览器中都正确)。您可以找到有关迷你图的更多信息 on Wikipedia。此代码主要是为运行 如下图1所示的传感器网络的合理性测试:
图1:命令行上此类“迷你图”的示例用例, 显示物联网传感器值(此处不包括生成代码)。
由于可用的Unicode字符的限制,当 价值观是积极的。即使是真正的火花看起来更像线条 不像酒吧是一个真正的挑战,因为他们需要多个 在不同垂直位置有一条水平线的字符。这个 只能使用专用字体,这远远超出了 工具,这将大大复杂化其使用。所以我们坚持这些 字符:“__ ~9605;__”,对于缺少的值使用空白。
这段代码在Python2.6到2.7和3.2到3.5中测试得很好。
样本输出
这是一个记录的示例会话,演示如何使用sparklines(作为 github不呈现嵌入的Asciinema录制,您将在这里看到一个图像 指向各自的 asciicast):
下面是命令行上的一些输出示例(请注意 浏览器可以显示这些块字符的垂直对齐方式 稍有错误,下面引用的其他回购协议也有同样的效果:
下面的代码示例:
$ sparklines 27182818 ▂▇▁█▂█▁█ $ echo27182818| sparklines ▂▇▁█▂█▁█ $ sparklines < numbers.txt ▂▇▁█▂█▁█ $ sparklines 02. 1e0 ▁█▅
安装
可以使用Python Package Index中的pip install sparklines安装此包。 您还可以克隆此存储库并通过^{tt3}安装它$ 或pip install -e .。 安装后,您将可以访问整个系统(或在您的virtualenv中 如果您已经使用了它)来sparklines,则可以通过 具有相同名称的命令行工具。
测试
要运行(仍然很小的)“测试套件”,请下载并解压缩此存储库 或者克隆它,并在解包的 档案文件。这将使用包含的pytest包的缩小版本 在这个包中的文件test/runtests.py。如果你有优秀的 pytest包已安装您也可以从 已下载存储库的根文件夹。
用法
请注意下面的示例可能看起来有点古怪(错位或 即使是彩色的)在一些浏览器中,但当您打印时应该是完全正确的 这在您的终端、python或ipython会话或您选择的python ide中实现。 下面的图2可能比复制的示例更好 此后的代码:
图2:来自python和ipython会话的调用示例。
命令行
下面是从命令行调用的两个示例,复制到此自述文件中:
$ sparklines 12345.0 null 321▁▃▅▆█ ▅▃▁ $ sparklines -n 212345.0 null 321 ▁▅█ ▁ ▁▅███ █▅▁
编程
下面是来自交互式python会话的调用示例,复制到 这个自述文件。以编程方式使用的主要函数是 sparklines.sparklines():
In[1]:fromsparklinesimportsparklinesIn[2]:forlineinsparklines([1,2,3,4,5.0,None,3,2,1]):...:print(line)...:▁▃▅▆█▅▃▁In[3]:forlineinsparklines([1,2,3,4,5.0,None,3,2,1],num_lines=2):print(line)...:▁▅█▁▁▅████▅▁
参考文献
这段代码的灵感来自zach holman的spark,转换成python模块 由Kenneth Reitz作为spark.py 并通过regkrieg发送到一个名为pysparklines的python包。 罗杰·艾伦提供了一个均衡的shorter spark.py。
但是由于它很短而且易于用python编写代码,我们可以添加一些 我缺少的其他功能,如:
- 使用每个迷你图的多个输出行提高分辨率
- 显示输入数字中缺少数据的间隙
- 对负值发出警告(允许,但有误导性)
- 使用不同的 颜色(如果termcolor包可用)
- 以最大长度包装长迷你图
- (待办事项)添加以固定间隔使用分隔符,如:。