目錄
1. 基本的 2D 繪圖
2. 自定義圖形樣式
3. 繪制散點圖
4. 繪制柱狀圖
5. 繪制直方圖
6. 3D 繪圖
6.6.1 3D 曲面圖
6.6.2 3D 散點圖
7. 繪制極坐標
8. 多子圖繪制
總結
Octave 是一個類似于 MATLAB 的開源數學軟件,廣泛用于數值計算和數據分析。它提供了許多用于繪圖和數據可視化的功能,適合快速繪制各種類型的圖形。下面是 Octave 繪圖 的快速入門指南:
1. 基本的 2D 繪圖
最常見的圖形類型是二維圖形。Octave 提供了簡單的 plot
函數來繪制折線圖。
繪制簡單的折線圖
x = 0:0.1:10; % 生成從 0 到 10 的數據,步長為 0.1
y = sin(x); % 計算 x 對應的正弦值
plot(x, y); % 繪制折線圖
title("Sine Wave",‘fontsize’,15); % 圖形標題
xlabel("X-axis",'fontsize',15); % X 軸標簽
ylabel("Y-axis",'fontsize',15); % Y 軸標簽 grid on; % 開啟網格
注意這里 ‘fontsize’ 屬性可以控制標題與標簽字體的大小。
運行結果:
折線的樣視,粗細和顏色都是可以改變的,我們在下面介紹。
繪制帶有多個數據集的圖:你可以在同一個圖形中繪制多個數據集。
x = 0:0.1:10;
y1 = sin(x);
y2 = cos(x);
plot(x, y1, 'r', x, y2, 'b'); % 'r' 表示紅色,'b' 表示藍色
legend("sin(x)", "cos(x)",'fontsize',15,'location','southwest'); % 圖例
legend boxoff;
title("Sine and Cosine Waves",'fontsize',15);
xlabel("X-axis",'fontsize',15);
ylabel("Y-axis",'fontsize',15);
grid on;
這里面我們使用了 legend 命令來為不同的折線標注。
運行結果:
注意我們改變了折線的顏色,用以區分不同的數據集。
2. 自定義圖形樣式
Octave 支持多種樣式來定制圖形的外觀。我們可以更改線型、顏色和標記。常用的樣式選項:
x = 0:0.1:10;
y = sin(x);
plot(x, y, '-ok'); % 'o' 表示圓圈標記,'k' 表示黑色線條
title("Sine Wave with Markers",'fontsize',15);
xlabel("X-axis",'fontsize',15);
ylabel("Y-axis",'fontsize',15);
grid on;
-:實線
--:虛線
::點線
o:圓形標記
x:十字標記
k:黑色,r:紅色,g:綠色,b:藍色等
運行結果:
用戶可以根據自己數據的需要和感覺,選擇最合適的樣式。
3. 繪制散點圖
散點圖(scatter plot)常用于顯示兩個變量之間的關系。
x = 0:0.1:10;
y = sin(x);
scatter(x, y, 50, 'r', 'filled'); % 50 是點的大小,'r' 是紅色,'filled' 填充圓圈 title("Sine Wave Scatter Plot",'fontsize',15);
xlabel("X-axis",'fontsize',15);
ylabel("Y-axis",'fontsize',15);
grid on;
注意 scatter 命令和 plot 的區別。
運行結果:
4. 繪制柱狀圖
柱狀圖常用于顯示離散的類別數據。
categories = {'A', 'B', 'C', 'D'};
values = [5, 8, 3, 6];
bar(values); % 繪制柱狀圖
set(gca, 'xticklabel', categories); % 設置 X 軸標簽為類別
title("Bar Chart Example",'fontsize',15);
xlabel("Categories",'fontsize',15);
ylabel("Values",'fontsize',15);
grid on;
注意這里我們使用了set() 命令將 x 軸的 label 和 tick 做了設置。
運行結果:
5. 繪制直方圖
直方圖用于展示數據的分布情況。
data = randn(1000, 1); % 生成1000個標準正態分布的隨機數
hist(data, 30); % 繪制30個柱的直方圖
title("Histogram Example",'fontsize',15);
xlabel("Value",'fontsize',15);
ylabel("Frequency",'fontsize',15);
grid on;
運行結果:
6. 3D 繪圖
Octave 還支持 3D 繪圖,可以繪制三維數據。
6.6.1 3D 曲面圖
[x, y] = meshgrid(-5:0.1:5, -5:0.1:5); % 創建網格
z = sin(sqrt(x.^2 + y.^2)); % 計算 z 值
surf(x, y, z); % 繪制三維曲面圖
title("3D Surface Plot",'fontsize',15);
xlabel("X-axis",'fontsize',15);
ylabel("Y-axis",'fontsize',15);
zlabel("Z-axis",'fontsize',15);
運行結果:
6.6.2 3D 散點圖
x = randn(100, 1);
y = randn(100, 1);
z = randn(100, 1);
scatter3(x, y, z); % 繪制 3D 散點圖
title("3D Scatter Plot",'fontsize',15);
xlabel("X-axis",'fontsize',15);
ylabel("Y-axis",'fontsize',15);
zlabel("Z-axis",'fontsize',15);
運行結果:
7. 繪制極坐標圖
極坐標圖用于在極坐標系中表示數據,適用于展示方向性數據。
theta = 0:0.1:2*pi; % 角度從0到2π
r = sin(2*theta) + cos(2*theta); % 計算半徑
polar(theta, r); % 繪制極坐標圖
title("Polar Plot Example",'fontsize',15);
注意 theta 是弧度不是角度。
運行結果:
個人感覺不常用,但是需要了解一下。
8. 多子圖繪制
你可以在一個窗口中繪制多個圖形。
subplot(2, 1, 1); % 創建2行1列的子圖,激活第1個子圖
plot(x, sin(x));
title("Sine Wave",'fontsize',15);
subplot(2, 1, 2); % 激活第2個子圖
plot(x, cos(x));
title("Cosine Wave",'fontsize',15);
subplot(2, 1, 1)? 兩行一列 第一幅圖
subplot(2, 1, 2)? 兩行一列 第二幅圖
運行結果:
多個子圖在某些情況下非常有用。
總結
通過 Octave 的強大繪圖功能,你可以輕松實現 2D 和 3D 圖形的可視化,包括折線圖、散點圖、柱狀圖、直方圖和極坐標圖等。Octave 的繪圖功能類似 MATLAB,適合數據分析、數學建模和科學計算的可視化需求。掌握這些基礎后,你可以更高效地展示數據并得出可視化結論。如果你有更具體的繪圖需求或問題,隨時可以提出來,我可以在今后的博客中為你提供更詳細的教程!