如何使用Perl绘制时间序列图?

Jaz*_*azz 10 perl plot graph

我有一些来自数据库(SQLite)的数据,将值(整数)映射到日期.日期是具有以下格式的字符串:YYYY-MM-DD hh:mm.日期不均匀分布.我想绘制一个带有日期的线图X和值Y.使用Perl最简单的方法是什么?

我试过DBIx :: Chart但是我无法让它识别我的日期.我也试过GD :: Graph,但正如文档所说:

GD :: Graph不支持数值x轴.X轴的数据应相等

小智 11

你可以使用Chart :: Clicker的Axis :: DateTime:

#!/usr/local/bin/perl -w
use strict;
use Chart::Clicker;
use Chart::Clicker::Axis::DateTime;
use Chart::Clicker::Data::Series;
use Chart::Clicker::Data::DataSet;
use Chart::Clicker::Renderer::Point;

my $cc = Chart::Clicker->new;
my $series = Chart::Clicker::Data::Series->new(
    values    => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ],
    keys      => [
        1256147117, 1256148117, 1256149117, 1256150117, 1256151117, 1256152117,
        1256153117, 1256154117, 1256155117, 1256156117
    ],
);
my $ctx = $cc->get_context('default');
$ctx->domain_axis(Chart::Clicker::Axis::DateTime->new(position => 'bottom', orientation     => 'horizontal'));
my $ds = Chart::Clicker::Data::DataSet->new(series => [ $series ]);
$cc->add_to_datasets($ds);
$cc->write_output('foo.png');
Run Code Online (Sandbox Code Playgroud)

您必须将您的时间转换为Unix时间戳,但它是DWIM.

  • Axis :: DateTime使用取决于范围的格式自动格式化日期.如果您不喜欢它的选择,您可以使用DateTime的`strftime`可接受的任何格式化字符串调用其`format`方法,它将使用它.您可以使用Chart :: Clicker :: Axis中的`ticks`或`tick_values`方法控制刻度线的数量和/或位置. (4认同)

Sin*_*nür 8

你可以使用Chart :: Gnuplot来驱动gnuplot.

或者,如果SVG是可接受的输出格式,则存在SVG :: TT :: Graph.

  • +1到Chart :: Gnuplot.这是我最喜欢的图表模块,以及gnuplot的最佳界面,我发现它不涉及管道原始命令. (2认同)