You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust Plotters示例无法生成图片,添加present()后报错

Rust Plotters生成图片失败及报错解决方法

问题描述

我尝试运行Rust Plotters用户指南中的示例,但运行后没有在images/目录或项目其他位置生成图片。添加root_drawing_area.present().unwrap();语句后,运行报错提示找不到文件或目录。

相关代码

use plotters::prelude::*;

fn main() {
    let root_drawing_area = BitMapBackend::new("images/0.1.png", (1024, 768))
        .into_drawing_area();

    root_drawing_area.fill(&WHITE).unwrap();

    let mut chart = ChartBuilder::on(&root_drawing_area)
        .build_cartesian_2d(-3.14..3.14, -1.2..1.2)
        .unwrap();

    chart.draw_series(LineSeries::new(
        (-314..314).map(|x| x as f64 / 100.0).map(|x| (x, x.sin())),
        &RED
    )).unwrap();

    root_drawing_area.present().unwrap();
}

报错信息

% cargo run
   Compiling plotters v0.1.0 (/Users/sledge/Sandbox/plotters)
    Finished dev [unoptimized + debuginfo] target(s) in 0.82s
     Running `target/debug/plotters`
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: BackendError(DrawingError(ImageError(IoError(Os { code: 2, kind: NotFound, message: "No such file or directory" }))))', src/main.rs:18:33
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

解决方法

问题核心是**images目录不存在**,Plotters不会自动创建缺失的目标目录;而最初未生成图片是因为缺少present()方法触发文件写入操作。

方法1:手动创建目录

在项目根目录执行以下命令创建目录:

mkdir images

之后重新运行cargo run即可正常生成图片。

方法2:代码中自动创建目录(推荐)

通过std::fs模块在初始化Backend前检查并递归创建目录,修改后的代码如下:

use plotters::prelude::*;
use std::fs;

fn main() {
    // 递归创建images目录,父目录不存在时也会自动创建
    fs::create_dir_all("images").unwrap();

    let root_drawing_area = BitMapBackend::new("images/0.1.png", (1024, 768))
        .into_drawing_area();

    root_drawing_area.fill(&WHITE).unwrap();

    let mut chart = ChartBuilder::on(&root_drawing_area)
        .build_cartesian_2d(-3.14..3.14, -1.2..1.2)
        .unwrap();

    chart.draw_series(LineSeries::new(
        (-314..314).map(|x| x as f64 / 100.0).map(|x| (x, x.sin())),
        &RED
    )).unwrap();

    root_drawing_area.present().unwrap();
}

内容的提问来源于stack exchange,提问作者Sledge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:20:26