#图表 #命令行 #图形 #生成HTML

flot

使用Flot生成带有嵌入式图表的HTML文档

2个版本

使用旧的Rust 2015

0.1.3 2017年11月19日
0.1.2 2017年11月19日

#1582算法

31 每月下载次数

MIT许可证

32KB
559

一个用于生成Flot文档的Rust库

Flot 是一个用于生成吸引人的数据图表的JavaScript库。虽然通常用于增强交互式网站,但 flot-rs 为命令行程序创建带有图表的独立HTML文档提供了一个很好的方法。默认情况下,这些文档引用在线源,因此可以将其交给其他人进行显示。

extern crate flot;

fn main() {
    let line_data = vec![(0.0,1.0),(1.0,4.5)];
    let points_data = vec![(0.5,1.2),(0.8,4.0)];

    let page = flot::Page::new("");

    let p = page.plot("Lines and Points");
    p.lines("lines",line_data).fill(0.3).line_width(0);
    p.points("points",points_data).symbol("circle");

    page.render("simple.html").expect("i/o error");
}

一个 Page 可以包含多个图表;图表可以包含多个系列和图表类型(linespointsbars)。

运行此程序的结果是创建 'simple.html',可以在您的浏览器中打开。

Page 可以设置一个标题,如果非空,则同时设置文档的标题并创建一个H1标题。同样,plot 方法也提供了一个标题,如果非空,将为图表提供一个居中的H2标题。

指定数据的方式

默认情况下,系列构造函数接受任何可以转换为 (f64,f64) x-y 对的迭代器的值。请注意,这些调用会消耗向量 line_datapoints_data

如果您有一个不是 (f64,f64) 的元组源,那么 flot::to_f64 将将其转换为 flot-rs 可以接受的形式,前提是这些类型可以干净地转换为 f64

或者,您可以使用函数映射一个引用迭代器 - flot::mapr 生成所需的点迭代器,在这里我们将它们收集到一个向量中。

extern crate flot;

fn make_gaussian(xvalues: &[f64], m: f64, s: f64) -> Vec<(f64,f64)> {
    use std::f64::consts::PI;
    let s2 = 2.0*s*s;
    let norm = 1.0/(s2*PI).sqrt();
    flot::mapr (
        xvalues,
        move |x| norm*(-(x-m).powi(2)/s2).exp()
    ).collect()
}

fn main() {
    let page = flot::Page::new("");

    let p = page.plot("Normal distribution").size(500,300);
    let xvalues: Vec<_> = flot::range(0.0,10.0,0.1).collect();
    p.lines("norm σ=1.0",make_gaussian(&xvalues,5.0,1.0));
    p.lines("norm σ=0.7",make_gaussian(&xvalues,6.0,0.5));

    page.render("normal.html").unwrap();
}

range 是一个方便的迭代器,用于生成浮点数范围(随后我发现 itertools-num crate 提供了类似的东西 - 查看 linspace)。

flot::mapv 类似,但它接受一个值的迭代器。以下是0到9所有整数的平方

    page.plot().legend_pos(Corner::TopLeft)
        .bars("squares",mapv(0..10,|x| x*x))
        .width(0.75);

(maprmapv 给出的迭代器可以提供任何可以 转换为 f64 的值,因此整数范围是有效的。)

最后,flot::zip 可以接受两个引用迭代器,它们将被合并成点元组。如果你有分别作为切片或向量的x和y数据,这很有用。

使用 flot-rs 作为个人显示引擎

默认情况下,flot-rs 使用 Cloudflare CDN 提供的 jQuery (3.2.1) 和 Flot (0.8.3),这意味着这些 HTML 文档是可移植的,并且任何有互联网连接的人都可以查看。浏览器会缓存这些依赖项,因此通常这些文档渲染得很快。然而,如果你直接下载 Flot,那么你可以设置环境变量 FLOT 为其位置。例如,我设置了 export FLOT=/home/steve/Downloads/flot

作为一个命令行用户,我倾向于使用适当的命令打开生成的 HTML 文档,例如 Windows 上的 start,MacOS 上的 open,Linux 上的 gnome-open。有一些针对特定浏览器的选项,可以在没有工具栏等元素的窗口中打开文档,例如 Firefox 上的 google-chrome --app=doc.htmlfirefox --chrome doc.html

依赖项

~180KB