Rustでplottersを使ってグラフのアニメーションを作る

今回は、以前からやりたいなぁと思っていた、Rustでのグラフのアニメーションが出来たのでその備忘を書き残します。

Pythonではmatplotlibで簡単に出来ますが、Rustではplottersというグラフ描画ライブラリを使用して実現しました。

以下がコードです。

// plotters = "0.3.1"

use plotters::prelude::*;

fn main() {
    let area = BitMapBackend::gif(
        "./animated.gif", // アニメーションファイルの名前。この名前で保存される
        (600, 400),       //  グラフのサイズ(幅x高さ)
        100,              //  1フレームの時間。単位は [ms]
    )
    .unwrap()
    .into_drawing_area();

    for i in 0..=50 {
        area.fill(&WHITE).unwrap();

        let mut ctx = ChartBuilder::on(&area)
            .set_label_area_size(LabelAreaPosition::Left, 40)
            .set_label_area_size(LabelAreaPosition::Bottom, 40)
            .build_cartesian_2d(-0.0..5.0, -1.2..1.2)
            .unwrap();

        ctx.configure_mesh().draw().unwrap();

        // グラフに描画するデータを生成する
        let x_kps: Vec<_> = (0..=100).map(|x| x as f64 / 20.0).collect();
        ctx.draw_series(LineSeries::new(
            x_kps.iter().map(|x| (*x, (x + i as f64).sin())),
            &RED,
        ))
        .unwrap();

        // グラフを更新する
        area.present().unwrap();
    }
}

どんなグラフかは是非このコードを実行して確認してみてください。

説明もなく簡単ですが今回はここまでです。