#dioxus #plot #drawing #chart #plotters-rs

plotters-dioxus

适用于 dioxus 的 plotters-rs 组件

4 个版本

0.2.2 2024年2月26日
0.2.1 2024年2月23日
0.2.0 2024年2月22日
0.1.0 2024年2月19日

157可视化 分类中

Download history 15/week @ 2024-03-11 11/week @ 2024-04-01

每月下载 170

MIT 许可证

10KB
147 代码行

Plotters-dioxus

为 Rust 库 Plotters 实现 Dioxus 后端。

alt text

安装

要使用 plotters-dioxus,您可以将以下行添加到您的 Cargo.toml 中

[dependencies]
plotters-dioxus = "0.2.2"

用法

以下代码允许您绘制散点图


#![allow(non_snake_case)]
use dioxus::prelude::*;
use plotters::prelude::*;
use plotters_dioxus::{ Plotters, DioxusDrawingArea };

fn main() {
    dioxus_desktop::launch(App);
}

fn App(cx: Scope) -> Element {
    render!(Plotters {
        size: (400, 400),
        init: move |drawing_area: DioxusDrawingArea| {
            drawing_area.fill(&WHITE).expect("The drawing area filling is expected");
            let mut simple_ctx = ChartBuilder::on(&drawing_area)
                .caption("Simple plot", ("sans-serif", 14, &BLACK))
                .margin(10)
                .x_label_area_size(40)
                .y_label_area_size(40)
                .build_cartesian_2d(0f64..1f64, 0f64..1f64)
                .expect("Simple context creation is expected");

            let original_style = ShapeStyle {
                color: BLACK.mix(1.0),
                filled: true,
                stroke_width: 1,
            };

            simple_ctx
                .configure_mesh()
                .disable_x_mesh()
                .disable_y_mesh()
                .y_label_style(("sans-serif", 11, &BLACK).into_text_style(&drawing_area))
                .x_label_style(("sans-serif", 11, &BLACK).into_text_style(&drawing_area))
                .x_desc("Count")
                .y_desc("Data")
                .axis_style(original_style)
                .axis_desc_style(("sans-serif", 11, &BLACK).into_text_style(&drawing_area))
                .draw()
                .expect("Simple configuration creation is expected");
            simple_ctx
                .draw_series(
                    vec![(0.1f64, 0.5f64), (0.5f64, 0.5f64), (0.5f64, 0.1f64)]
                        .iter()
                        .map(|e| Circle::new(*e, 3i32, BLUE))
                )
                .expect("Draw is expected");

            drawing_area
                .present()
                .expect(
                    "Unable to write result to file, please make sure 'plotters-doc-data' dir exists under current dir"
                );
        },
    })
}

查看 示例项目 以获得更互动的示例。

鸣谢

依赖项

~25–70MB
~883K SLoC