当前位置: 首页 > news >正文

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

    相关文章:

  • Java云原生到底是啥,有哪些技术
  • 【目录】学习如何使用dify建设专业知识库
  • C语言_程序的段
  • 蔚来三品牌大整合:乐道产品研发、销售体系并入蔚来各集群|36氪独家
  • Ceph集群故障处理 - PG不一致修复
  • FPGA笔试题review
  • Java大数据可视化在城市空气质量监测与污染溯源中的应用:GIS与实时数据流的技术融合
  • OSPF综合性实验
  • 判断点与椭球的位置关系及计算连线交点的数学原理与Babylon.js实现
  • 记录 ubuntu 安装中文语言出现 software database is broken
  • visual studio 2015 安装闪退问题
  • 1 计算机网络
  • 无线网络设备中AP和AC是什么?有什么区别?
  • OpenAI API JSON 格式指南与json_repair错误修复
  • React文档-State数据扁平化
  • 利用大型语言模型有效识别网络威胁情报报告中的攻击技术
  • 前端面试题:说说你对 Vue 中异步组件的理解
  • Kotlin Android LeakCanary内存泄漏检测实战
  • python打卡day21
  • 第二个简单的SpringBoot和Vue前后端全栈的todoapp案例
  • 玉渊谭天丨中方为何此时同意与美方接触?出于这三个考虑
  • 时隔14个月北京怀柔区重启供地,北京建工以3.59亿元摘得
  • 中国证监会印发2025年度立法工作计划
  • 安徽亳州涡阳县司法局党组书记刘兴连落马
  • 远离军事前线的另一面暗斗:除了“断水”,印度还试图牵制对巴国际援助
  • 溢价26.3%!保利置业42.4亿元竞得上海杨浦宅地,楼板价80199元/平方米