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

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80530.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    RabbitMQ--基础篇

    RabbitMQ 简介:RabbitMQ 是一种开源的消息队列中间件,你可以把它想象成一个高效的“邮局”。它专门负责在不同应用程序之间传递消息,让系统各部分能松耦合地协作 优势: 异步处理:比如用户注册后,主程序将发…

    【MySQL】事务(重点)

    目录 一、什么是事务: 二、事务的前置知识了解 引擎是否支持事务 事务的提交方式 事务操作的前置准备: 三、事务回滚: 四、事务崩溃: 原子性: 持久性: 五、自动提交和手动提交: 六、…

    C++STL——stack,queue

    stack与queue 前言容器适配器deque 前言 本篇主要讲解stack与queue的底层,但并不会进行实现,stack的接口 queue的接口 ,关于stack与queue的接口在这里不做讲解,因为通过前面的对STL的学习,这些接口都是大同小异的。 …

    STM32智能手表:基于FreeRTOS

    引言 随着物联网和可穿戴设备的快速发展,智能手表作为典型代表,集成了传感器数据采集、实时显示、无线通信等多项功能。本文将深入剖析一个基于STM32和FreeRTOS的智能手表项目,从硬件架构到软件设计,逐步讲解如何构建一个完整的嵌…

    leetcode504.七进制数

    标签:进制转换 机试真题 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。 示例 1: 输入: num 100 输出: "202" 示例 2: 输入: num -7 输出: "-10" 思路:求n进制就是循环取余数,…

    中国古代史2

    夏朝(公元前2070-公元前1600年) 1.禹建立了我国历史上第一个奴隶制国家–夏朝,定都阳城。禹传启,世袭制代替禅让制。 2.夏代都城:二里头遗址位于今河南洛阳偃师二里头村。发现了大型绿松石龙形器,被命名为…

    死锁的形成

    死锁的形成 背景学习资源死锁的本质 背景 面试可能会被问到. 学习资源 一个案例: https://www.bilibili.com/video/BV1pz421Y7kM 死锁的本质 互相持有对方的资源. 存在资源竞争都没有释放. 可能出现死锁. insert into demo_user (no, name) values (6, ‘test1’) on dupl…

    MapReduce架构-打包运行

    (一)maven打包 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序(例如:jar…

    C++发起Https连接请求

    需要下载安装openssl //stdafx.h #pragma once #include<iostream> #include <openssl/ssl.h> #include <openssl/err.h> #include <iostream> #include <string>#pragma comment(lib, "libssl.lib") #pragma comment(lib, "lib…

    ADI ADRV902x的射频模拟信号输入输出端口的巴伦匹配

    根据规格书可知ADRV902x系列的&#xff1a; 【1】输入阻抗是100Ω差分&#xff0c;包括RX端口和ORX端口。 【2】输出阻抗是50Ω差分&#xff0c;包括TX端口。 而射频系统通常采用50Ω的单端走线&#xff0c;所以需要通过正确规格的巴伦完成差分转单端/单端转差分的处理。 巴…

    【计算机视觉】OpenCV实战项目:Athlete-Pose-Detection 运动员姿态检测系统:基于OpenCV的实时运动分析技术

    运动员姿态检测系统&#xff1a;基于OpenCV的实时运动分析技术 1. 项目概述1.1 技术背景1.2 项目特点 2. 技术架构与算法原理2.1 系统架构2.2 核心算法2.3 模型选择 3. 项目部署与运行指南3.1 环境准备硬件要求软件依赖 3.2 项目配置3.3 运行项目基本运行模式高级参数 4. 常见问…

    linux perf top分析系统性能

    1,看到内核宏是否支持perf功能 perf top -g 查看linux 内核宏定义 CONFIG_PERF_EVENTS=y CONFIG_HAVE_PERF_EVENTS=y CONFIG_FRAME_POINTER=y # 确保帧指针支持以捕获完整堆栈 2,使用perf top -g 报错 Access to performance monitoring and observability operations is l…

    gin + es 实践 08

    自动扩缩容 本文档详细介绍如何在Kubernetes环境中实现Go-ES应用的自动扩缩容&#xff0c;包括水平Pod自动扩缩容(HPA)、垂直Pod自动扩缩容(VPA)和集群自动扩缩容。 1. 自动扩缩容概述 自动扩缩容是指根据负载变化自动调整计算资源的过程&#xff0c;主要目标是&#xff1a;…

    【比赛真题解析】混合可乐

    这次给大家分享一道比赛题:混合可乐。 洛谷链接:U561549 混合可乐 【题目描述】 Jimmy 最近沉迷于可乐中无法自拔。 为了调配出他心目中最完美的可乐,Jimmy买来了三瓶不同品牌的可乐,然后立马喝掉了一些(他实在是忍不住了),所以 第一瓶可口可乐最大容量为 a 升,剩余 …

    AI Coding的发展之路:从概念到改变世界的旅程

    AI Coding的发展之路:从概念到改变世界的旅程 引言:当代码开始自己写代码 还记得第一次接触编程时的手足无措吗?那些复杂的语法规则、难以捉摸的逻辑错误,让多少人在深夜对着屏幕抓狂。而今天,一个全新的时代正在来临——AI开始帮我们写代码了。这不是科幻电影,而是正在…

    基于DQN的自动驾驶小车绕圈任务

    1.任务介绍 任务来源: DQN: Deep Q Learning &#xff5c;自动驾驶入门&#xff08;&#xff1f;&#xff09; &#xff5c;算法与实现 任务原始代码: self-driving car 最终效果&#xff1a; 以下所有内容&#xff0c;都是对上面DQN代码的改进&#…

    Spring 必会之微服务篇(2)

    经过上一篇文章的介绍,应该对微服务有了基本的认识,以及为什么要用微服务和微服务要面临的挑战和对应的解决问题,这一期继续聊聊关于微服务的相关知识。 服务拆分 为什么拆 对于大多数的小型项目来说,一般是先采用单体架构,但是随着后面的用户规模变大,业务越来越复杂…

    word换行符和段落标记

    换行符&#xff1a;只换行不分段 作用&#xff1a;我们需要对它进行分段&#xff0c;但它是一个信息群组&#xff0c;我希望它们有同样的段落格式&#xff01; 快捷键&#xff1a;shiftenter 段落标记&#xff1a;分段 快捷键&#xff1a;enter 修改字体格式或段落格式 …

    JSON|cJSON 介绍以及具体项目编写

    一、JSON介绍 JSON&#xff08;JavaScript Object Notation 即JavaScript对象表示法&#xff09;是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。 JSON是一种数据交换格式.JSON独立于编程语言(你不必学习JavaScript).JSON表达数据的方式对通…

    【LLaMA-Factory】使用LoRa微调训练DeepSeek-R1-Distill-Qwen-7B

    【LLaMA-Factory】使用LoRa微调训练DeepSeek-R1-Distill-Qwen-7B 本地环境说明禁用开源驱动nouveau安装nvidia-smi安装Git环境安装Anaconda(conda)环境下载DeepSeek-R1-Distill-Qwen-7B模型安装LLaMA-Factory下载LLaMA-Factory安装LLaMA-Factory依赖修改环境变量安装deepspeedA…