Octave 绘图快速入门指南
目录
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,适合数据分析、数学建模和科学计算的可视化需求。掌握这些基础后,你可以更高效地展示数据并得出可视化结论。如果你有更具体的绘图需求或问题,随时可以提出来,我可以在今后的博客中为你提供更详细的教程!