14个版本 (7个重大更新)
0.9.0 | 2024年6月29日 |
---|---|
0.8.4 | 2023年7月9日 |
0.8.3 | 2022年11月6日 |
0.7.0 | 2022年1月1日 |
0.4.1 | 2020年3月26日 |
#2 in 可视化
每月下载量14,238
在 33 个crate中使用
4MB
12K SLoC
目录
简介
一个由Plotly.js驱动的Rust绘图库。
文档和大量交互式示例可在Plotly.rs书籍、examples/目录和docs.rs中找到。
有关上次版本以来的更改,请参阅变更日志。
基本用法
将其添加到您的Cargo.toml
[dependencies]
plotly = "0.9.0"
导出交互式图表
任何图形都可以使用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");
默认情况下,Plotly JavaScript库将通过CDN包含,这会导致文件大小较小,但首次加载会略微变慢,因为必须首先下载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.9.0", 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.9.0", 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/目录中找到。
crate功能标志
以下是一些可用的功能标志
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–16MB
~175K SLoC