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
  1. 确保Cargo.toml文件中添加了必要的依赖项:
1
2
[dependencies]
csv = "1.1"
  1. 编辑源码:
 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(())
}

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

  1. 编译程序:
1
2
cargo build --release
./drawfunction/target/release/montecarlo

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

使用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.