Octave 绘图快速入门指南

发布于:2025-05-11 ⋅ 阅读:(14) ⋅ 点赞:(0)

目录

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