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 轴添加标签,显示网格线等。相关命令说明如下:
xlabel
和ylabel
命令添加 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 提供的基本颜色选项如下:
Color | Code | Color | Code |
---|---|---|---|
White | w | Cyan | c |
Black | k | Green | g |
Blue | b | Magenta | m |
Red | r | Yellow | y |
在 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] 吴恩达《机器学习》课程