Rust生成CSV数据并使用Veusz绘制函数像

使用Rust编写的程序由于是编译型的语言,其速度远超Python等脚本程序,所以本文尝试使用Rust编写一段\(f(x)=x^2\)在区间\((0,10)\)上的值,并将其保存在function_data.csv文件中,以供veusz调用,绘制函数图像。

编写Rust程序

  1. 建立项目: drawfunction

    1
    2
    cargo new drawfunction
    cd drawfunction

  2. 确保Cargo.toml文件中添加了必要的依赖项:

    1
    2
    [dependencies]
    csv = "1.1"

  3. 编辑源码:

    drawfunction/src/main.rs
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    use csv::Writer;
    use std::error::Error;

    fn main() -> Result<(), Box<dyn Error>> {
    let mut wtr = Writer::from_path("function_data.csv")?;

    // 写入CSV头部
    wtr.write_record(&["x", "x_squared"])?;

    // 生成数据并写入CSV
    for x in 0..=100 { // 使用0到10之间的101个点
    let x_val = (x as f64) / 10.0;
    let y_val = x_val.powi(2);
    wtr.write_record(&[x_val.to_string(), y_val.to_string()])?;
    }

    wtr.flush()?;
    println!("CSV data has been written.");
    Ok(())
    }

    使用cargo run运行这个程序将会在当前目录下生成一个名为function_data.csv的文件,其中包含了我们计算的数据。

  4. 编译程序:

    1
    2
    cargo build --release
    ./drawfunction/target/release/montecarlo

    第1行为编译程序,第2行为运行这个程序. 可以明显的感觉到程序运行时,瞬间在当前目录下生成一个名为function_data.csv的文件,其中包含了我们计算的数据。

使用Veusz绘图

  1. 启动veusz: 打开Veusz应用程序。
  2. 导入数据:通过“数据->导入”菜单选项导入你用Rust生成的function_data.csv文件。
  3. 创建图表:
  • Veusz中,选择Insert-->add Graph以创建一个新的图形窗口。
  • 在工具栏中选择Plot points with lines and eorrbars.
  • 选中上述组件,在X data 中选择 x , Y data 中选择x_squared.