使用 Rust Plotly 實現數據可視化

Plotly 是一個強大的數據可視化工具,可以使用它爲 Rust 項目創建令人驚歎的圖形、圖表和其他可視化效果。Plotly 是一個基於流行的 Plotly.js 庫構建的開源庫,它提供了一個用於創建交互式繪圖的高級接口。

Plotly 對於處理數據密集型項目非常方便,可以幫助創建美觀且信息豐富的可視化效果,以便於溝通。該庫易於使用,其高級接口簡化到了僅用幾行代碼就能創建複雜可視化的過程。在本文中,我們將介紹如何使用 Plotly 庫開始繪圖。

開始使用 Plotly

創建一個新的 Rust 項目:

cargo new plotly-tutorial

然後打開 Cargo.toml 文件,將 Plotly 添加到項目依賴項中:

[dependencies]
plotly = "0.6.0"

下面是如何使用 Plotly 創建一個簡單的散點圖,在 src/main.rs 中寫入如下代碼:

use plotly::common::{Mode, Title};
use plotly::layout::{Axis, Layout};
use plotly::{Plot, Scatter};

fn main() {
    let trace = Scatter::new(vec![1,  2, 3], vec![4, 5, 6]).mode(Mode::Markers);

    let layout = Layout::new().x_axis(Axis::new().title(Title::from("X Axis")))
        .y_axis(Axis::new().title(Title::from("Y Axis")))
        .title(Title::from("My Plot"));

    let mut plot = Plot::new();
    plot.add_trace(trace);
    plot.set_layout(layout);
    plot.show();
}

在 main 函數中,trace 變量創建一個新的 Scatter 對象,其中包含 X 軸和 Y 軸的兩個數據點向量。mode 函數調用散點對象,將數據點顯示爲繪圖上的標記。

Layout::new 函數用 x_axis 和 y_axis 函數創建一個新的 Layout 對象,這兩個函數指定軸和標籤。title 函數爲圖表指定一個名稱。

最後,程序創建了一個繪圖,並用 add_trace 和 set_layout 函數將它們添加到繪圖中。show 函數在瀏覽器的新窗口中顯示繪圖。

下面是運行程序時的結果圖:

使用 Plotly 創建基本圖表

使用 Plotly,可以創建各種繪圖類型,從折線圖、散點圖到條形圖等。

用 Plotly 繪製折線圖

需要使用 Plotly 的 Plot、Scatter 和 Title 模塊來繪製折線圖,下面是如何用兩個 Vector 表示 X 和 Y 值來繪製折線圖:

use plotly::{Plot, Scatter};
use plotly::common::Title;

fn main() {
    // 爲折線圖創建數據
    let x_values = vec![1, 2, 3, 4, 5];
    let y_values = vec![2, 4, 6, 8, 10];

    // 用數據創建散點圖
    let scatter = Scatter::new(x_values, y_values).name("Line Chart");

    // 創建一個圖並添加散點
    let mut plot = Plot::new();
    plot.add_trace(scatter);

    // 自定義圖表佈局
    plot.set_layout(plotly::Layout::new().title(Title::from("折線圖")));

    // 在瀏覽器窗口中顯示該圖
    plot.show();
}

x_values 和 y_values 是折線圖數據的向量,scatter 變量使用數據創建了一個散點圖。plot 變量是新圖表的一個實例。

用 Plotly 繪製條形圖

需要 Bar 模塊來使用 Plotly 繪製條形圖,在創建繪圖佈局和添加痕跡佈局之前,將首先爲條形圖定義數據並創建條形痕跡:

use plotly::{Plot, Bar};
use plotly::common::{Title};
use plotly::layout::{Axis, Layout};

fn main() {
    // 爲條形圖定義數據
    let x_data = vec!["蘋果""橘子""香蕉"];
    let y_data = vec![10, 20, 15];

    // 創建條形痕跡
    let trace = Bar::new(x_data, y_data)
        .name("水果銷售");

    // 創建圖表佈局
    let layout = Layout::new()
        .title(Title::new("水果銷售"))
        .x_axis(Axis::new().title(Title::new("水果")))
        .y_axis(Axis::new().title(Title::new("銷售")));

    // 創建圖表,並添加痕跡和佈局
    let mut plot = Plot::new();
    plot.add_trace(trace);
    plot.set_layout(layout);

    // Show the plot in the default browser
    plot.show()
}

代碼用 x_data 和 y_data 變量在瀏覽器上繪製水果銷售的條形圖。

更改顏色和線條樣式

顏色給圖表增加了變化和趣味,Plotly 提供了許多顏色和線條樣式來定製你的繪圖。需要使用 NamedColor 模塊來處理 Plotly 中的顏色。

下面是如何創建帶有兩條軌跡的散點圖,並使用 Plotly 指定顏色:

use plotly::common::Mode;
use plotly::{NamedColor, Plot, Scatter};

fn main() {
    // 定義一些示例數據
    let x_values: Vec<f64> = vec![1.0, 2.0, 3.0, 4.0, 5.0];
    let y_values_1: Vec<f64> = vec![2.0, 4.0, 3.0, 1.0, 5.0];
    let y_values_2: Vec<f64> = vec![4.0, 1.0, 3.0, 2.0, 5.0];

    // 創建一個帶有兩條軌跡的散點圖
    let trace1 = Scatter::new(x_values.clone(), y_values_1.clone())
        .mode(Mode::Lines)
        .name("Trace 1")
        .line(plotly::common::Line::new().color(NamedColor::Black).width(5 as f64).dash(plotly::common::DashType::LongDashDot));
    let trace2 = Scatter::new(x_values, y_values_2)
        .mode(Mode::Lines)
        .name("Trace 2")
        .line(plotly::common::Line::new().color(NamedColor::LightSeaGreen).width(5 as f64).dash(plotly::common::DashType::DashDot));

    let mut plot = Plot::new();
    plot.add_trace(trace1);
    plot.add_trace(trace2);

    plot.show();
}

程序創建了一個帶有兩條軌跡的散點圖。顏色函數改變繪圖的顏色。第一個 trace 的顏色是 Black,第二個 trace 的顏色是 lightsegreen。

可以使用 DashType 爲繪圖指定虛線類型的線條樣式。第一個軌跡具有 LongDashDot 線條樣式,第二個軌跡具有 DashDot 線條樣式:

總結

在 Rust 中構建交互式 web 應用程序時,Plotly 是一個有用的工具。在本文中,我們學習瞭如何使用 Plotly 繪製各種圖表,以及如何自定義這些圖表。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/qA2A8b1DST3HED3vwvsfEQ