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