Octave 入门教程:绘图

Octave 入门教程目录,请点击: https://blog.csdn.net/benzhujie1245com/article/details/83146777



  本内容将介绍在 Octave 中绘制图形。

一、绘制基本图形

1.1 简单绘图

  在 Octave 中绘制函数图形的步骤如下:

  • 先定义变量 x x x,指定变量 x x x 值的取值范围;
  • 然后定义函数 y = f ( x ) y = f(x) y=f(x)
  • 最后调用 plot 命令,如 plot(x, y)。

  例子:绘制函数 y = x 2 y = x^2 y=x2。在 Octave 中输入以下代码:

x1 = [-100: 20: 100];  % x1 的取值范围是(-100,100),增量为 20
y1 = x1.^2;            % y1 = x1*x1
plot(x1, y1);
hold on;
x2 = [-100: 5: 100];   % x2 的取值范围是(-100,100),增量为 5
y2 = x2.^2 + 2000;     % y2 = x2*x2 + 2000
plot(x2, y2);

运行以上代码,将绘制出如下图形:
在这里插入图片描述
  我们可以看到增量为 5 的 x 2 x2 x2 绘制出来的图形比 增量为 20 为 x 1 x1 x1 的图形更加平滑。所以减少增量,能够绘制出更加平滑的图形
  上面我们用到了 hold on,它的作用是:将新图像画在旧图像上面,而不是覆盖旧图像。如果将上面代码中的 hold on 删除,最终只会显示 y 2 = ( x 2 ) 2 + 2000 y2 = (x2)^2+2000 y2=(x2)2+2000 的图形。

1.2 在图形中添加标题,标签,网格线

  我们可以在图形中添加标题,为 x 轴和 y 轴添加标签,显示网格线等。相关命令说明如下:

  • xlabelylabel 命令添加 x 轴和 y 轴的标签。
  • 标题命令(title)添加标题。
  • 网格命令(grid on)显示网格线。
  • 轴等于命令(axis equal)允许生成与同等规模因素和空间两个坐标轴上的积点。
  • 轴方形命令生成一个正方形的积点。

  在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = sin(x);
plot(x, y);
xlabel('x');             % 添加 x 轴标签
ylabel('Sin(x)');        % 添加 y 轴标签
title('Sin(x) Graph');   % 添加标题
grid on;                 % 显示网格线
axis equal;

运行以上代码,将绘制出如下图形:
在这里插入图片描述

1.3 在同一张图中绘制多个函数

  在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = sin(x);
h = cos(x);
plot(x, y, x, h, '.-');
legend('Sin(x)', 'Cos(x)');

运行以上代码,将绘制出如下图形:
在这里插入图片描述
  上面我们用到了 legend,它的作用是:在图形中添加图例。如果将上面代码中的 legend 语句删除,上面图形中右上角将不会显示图例。

1.4 在图形上的颜色设置

  Octave 提供的基本颜色选项如下:

ColorCodeColorCode
WhitewCyanc
BlackkGreeng
BluebMagentam
RedrYellowy

  在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = sin(x);
h = cos(x);
plot(x, y, 'r', x, h, 'g'); % 使用红色绘制 y = sin(x) 的图形,使用绿色绘制 y = cos(x) 的图形
legend('Sin(x)', 'Cos(x)');

运行以上代码,将绘制出如下图形:
在这里插入图片描述

1.5 设置轴刻度

  通过 axis 命令可以设置轴的刻度,即设置 x 和 y 轴的最小值和最大值,使用方式如下:

axis([xmin xmax ymin ymax])

  在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = exp(-x).*sin(2*x+3);
plot(x, y);
axis([0 10 -1 1]);

运行以上代码,将绘制出如下图形:
在这里插入图片描述

1.6 生成子图

  使用 subplot 命令创建子图,使用方式如下:

subplot(m, n, p)

其中,m 和 n 为积阵列的行数和列数(即将图像分割成 m*n 个格子),p 表示把当前图形绘制在哪个子图中(即使用第几个格子绘制下面的图形)。subplot 命令建立的每个图形都可以有其自己的特点。
  在 Octave 中输入以下代码:

x = [0: 0.01: 10];
y = sin(x);
% 在第 1 个格子中显示 y=sin(x) 的图形
subplot(1, 2, 1);
plot(x, y, 'b'), xlabel('x'), ylabel('sin(x)');
h = cos(x);
% 在第 2 个格子中显示 y=cos(x) 的图形
subplot(1, 2, 2);
plot(x, h, 'r'), xlabel('x'), ylabel('cos(x)');

运行以上代码,将绘制出如下图形:
在这里插入图片描述

1.7 其他一些命令
命令说明
figure给图形标号
print -dpng ‘myPlot.png’保存图形,保存图形到 ‘myPlot.png’ 文件中,保存目录为当前工作路径。
close关闭图形
clf清除图形

二、绘制二维条形图

  使用 bar 命令绘制二维条形图。
  在 Octave 中输入以下代码:

x = [1:10];
y = [75, 90, 87, 68, 50, 88, 78, 99, 60, 66];
bar(x, y), xlabel('Student'), ylabel('Score'), title('First Sem');

运行以上代码,将绘制出如下图形:
在这里插入图片描述

三、绘制等高线图

  生成的等高线图,显示了对于一个给定的功能的轮廓线 g = f ( x , y ) g=f(x,y) g=f(x,y)。这个函数有两个变量,因此,我们将生成两个独立的变量,即两个数据集 x x x y y y,通过调用 meshgrid 命令实现。
  meshgrid 命令是用于产生一个矩阵的元素,赋予 x x x y y y 的范围内进行了在每一种情况下的增量同规格一起。
  例子:绘制 g = x 2 + y 2 g=x^2+y^2 g=x2+y2 的等高线,在 Octave 中输入以下代码:

[x, y] = meshgrid(-5: 0.1: 5, -3: 0.1: 3); %
g = x.^2 + y.^2;           % 函数 g
[C, h] = contour(x, y, g); % 绘制等高线图
set(h, 'ShowText', 'on', 'TextStep', get(h, 'LevelStep')*2);

运行以上代码,将绘制出如下图形:
在这里插入图片描述

四、绘制三维图

  三维图显示有两个自变量的函数的表面, g = f ( x , y ) g=f(x,y) g=f(x,y)
  首先使用 meshgrid 命令创建一组 ( X , Y ) (X,Y) (X,Y);然后,设置输入函数;最后使用 surf 命令绘制图形。
  在 Octave 中输入以下代码:

[x, y] = meshgrid(-2: .2: 2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g);  % 绘制三维图

运行以上代码,将绘制出如下图形:
在这里插入图片描述

参考:
[1] https://www.w3cschool.cn/matlab/
[2] 吴恩达《机器学习》课程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值