2个版本
使用旧的Rust 2015
0.1.3 | 2017年11月19日 |
---|---|
0.1.2 | 2017年11月19日 |
#1582 在 算法
31 每月下载次数
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
可以包含多个图表;图表可以包含多个系列和图表类型(lines
、points
、bars
)。
运行此程序的结果是创建 'simple.html',可以在您的浏览器中打开。
Page
可以设置一个标题,如果非空,则同时设置文档的标题并创建一个H1标题。同样,plot
方法也提供了一个标题,如果非空,将为图表提供一个居中的H2标题。
指定数据的方式
默认情况下,系列构造函数接受任何可以转换为 (f64,f64)
x-y 对的迭代器的值。请注意,这些调用会消耗向量 line_data
和 points_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);
(mapr
和 mapv
给出的迭代器可以提供任何可以 转换为 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.html
和 firefox --chrome doc.html
。
依赖项
~180KB