1 个不稳定版本
0.8.4 | 2023 年 10 月 9 日 |
---|
#153 在 可视化
每月下载 29 次
4MB
11K SLoC
目录
简介
由 Plotly.js 驱动的 Rust 绘图库。
文档和众多交互式示例可在 Plotly.rs 书籍、examples/ 目录和 docs.rs 中找到。
有关上次版本以来的更改,请参阅 变更日志。
基本用法
将其添加到您的 Cargo.toml
[dependencies]
plotly = "0.8.4"
导出交互式绘图
任何图形都可以使用 Plot.write_html()
方法保存为 HTML 文件。这些 HTML 文件可以在任何网络浏览器中打开以访问完全交互式的图形。
use plotly::{Plot, Scatter};
let mut plot = Plot::new();
let trace = Scatter::new(vec![0, 1, 2], vec![2, 1, 0]);
plot.add_trace(trace);
plot.write_html("out.html");
默认情况下,将通过 CDN 包含 Plotly JavaScript 库,这会导致文件大小较小,但第一次加载速度略慢,因为需要先下载 JavaScript 库。要直接将 JavaScript 库(大小为几个兆字节)嵌入到 HTML 文件中,可以执行以下操作
// <-- Create a `Plot` -->
plot.use_local_plotly();
plot.write_html("out.html");
如果您只想快速在浏览器中查看图形,请使用 Plot.show()
方法。
// <-- Create a `Plot` -->
plot.show(); // The default web browser will open, displaying an interactive plot
导出静态图像
要将图形保存为静态图像,需要 kaleido
功能
# Cargo.toml
[dependencies]
plotly = { version = "0.8.4", features = ["kaleido"] }
启用此功能后,图形可以保存为 png
、jpeg
、webp
、svg
、pdf
和 eps
等格式。请注意,图形将是静态图像,即它们将是非交互式的。
Kaleido 二进制文件在编译时从官方 Kaleido 发布页面 下载到您系统的体系结构。此库目前支持 Linux 和 Windows 上的 x86_64
,以及 macOS 上的 x86_64
和 aarch64
。
导出简单图形的示例如下
use plotly::{ImageFormat, Plot};
let mut plot = Plot::new();
let trace = Scatter::new(vec![0, 1, 2], vec![2, 1, 0]);
plot.add_trace(trace);
plot.write_image("out.png", ImageFormat::PNG, 800, 600, 1.0);
在 Wasm 环境中使用
通过启用 wasm
功能,在基于 Wasm 的前端框架中使用 Plotly.rs
是可能的。
# Cargo.toml
[dependencies]
plotly = { version = "0.8.4", features = ["wasm"] }
首先,请确保您的基 HTML 模板中包含 Plotly JavaScript 库。
<!-- index.html -->
<!doctype html>
<html lang="en">
<head>
<!-- snip -->
<script src="https://cdn.plot.ly/plotly-2.14.0.min.js"></script>
</head>
<!-- snip -->
</html>
以下是一个简单的 Plot
组件示例,使用 Yew
作为前端框架的示例。
use plotly::{Plot, Scatter};
use yew::prelude::*;
#[function_component(PlotComponent)]
pub fn plot_component() -> Html {
let p = yew_hooks::use_async::<_, _, ()>({
let id = "plot-div";
let mut plot = Plot::new();
let trace = Scatter::new(vec![0, 1, 2], vec![2, 1, 0]);
plot.add_trace(trace);
async move {
plotly::bindings::new_plot(id, &plot).await;
Ok(())
}
});
use_effect_with_deps(move |_| {
p.run();
|| ()
}, (),
);
html! {
<div id="plot-div"></div>
}
}
更详细的自包含示例可以在 examples/ 目录中找到。
包特性标志
以下是一些可用的功能标志:
kaleido
为以下格式添加了保存图表的功能:png
、jpeg
、webp
、svg
、pdf
和 eps
。
plotly_image
添加了特质实现,以便可以更直接地使用 image::RgbImage
和 image::RgbaImage
与 plotly::Image
迹。
plotly_ndarray
添加了对使用 ndarray 类型直接创建图表的支持。
wasm
启用对 wasm32-unknown-unknown
目标的编译,并提供了一个包含围绕 plotly.js 库导出函数的包装器的 bindings
模块。
贡献
许可证
Plotly.rs
在 MIT 许可证的条款下分发。
有关详细信息,请参阅 LICENSE-MIT 和 COPYRIGHT。
依赖关系
~3–9MB
~131K SLoC