【MATLAB】MATLAB 可视化之绘图基础

本文档介绍了如何在MATLAB中创建二维图形,包括自定义线条样式、指定坐标轴范围、反转轴方向、显示通过原点的轴线、添加图形标题、坐标轴标签、图例以及创建双y轴图。此外,还讨论了如何合并多个绘图,如使用'hold on'在同一坐标系中叠加图形,以及通过'subplot'函数在不同坐标区上绘制图形。
摘要由CSDN通过智能技术生成

翻译自 MATLAB 官方文档

创建二维图形并自定义线条

x = linspace(0,2*pi,100);
y = sin(x);
figure
plot(x,y)

figure % new figure window
stairs(x,y) % 阶梯图

y1 = sin(x);
y2 = sin(x-pi/4);
figure
plot(x,y1,x,y2) % 同时绘制多个线条  

figure
plot(x,y1,'--g',x,y2,':r') % 给定 LineSpec

plot

plot2d

使用 figure 命令打开一个新图窗窗口。如果未打开新图窗窗口,则默认情况下,MATLAB 会清除现有图形并在当前图窗中绘制。

LineSpec:自定义颜色、线型和标记

这里写图片描述

三者组合成为不同样式的线条

  • '--or' 是带有圆圈标记的红色虚线

更多细节,参看 plot – MATLAB.

指定坐标轴范围

可以设置 x 轴、y 轴和 z 轴范围,以控制数据在坐标区上的显示位置。您也可以更改 x 轴线和 y 轴线的显示位置(仅适用于二维绘图),或反转值沿每条轴递增的方向。

更改坐标轴范围

使用 xlimylim 函数指定坐标轴范围。对于三维绘图,加上 zlim 函数。将 [min max] 形式的二元素向量传递给函数。

x = linspace(-10,10,200); 
y = sin(4*x)./exp(x);
plot(x,y)
xlim([0 10])
ylim([-0.4 0.8])

使用半自动坐标轴范围

将 x 轴范围最大值设为 0,y 轴范围最小值设为 -1。其他范围则由 MATLAB 选择。对于自动计算的范围最小值或最大值,分别使用 -inf 或 inf。

[X,Y,Z] = peaks;
surf(X,Y,Z)
xlabel('x-axis')
ylabel('y-axis')
xlim([-inf 0]) 
ylim([-1 inf])

还原为默认范围

xlim auto
ylim auto
zlim auto

反转坐标轴方向

通过设置 Axes 对象的 XDir 和 YDir 属性,可控制 x 轴和 y 轴值递增的方向。这些属性可以设置为 'reverse''normal'(默认值)。使用 gca 命令可访问 Axes 对象。

stem(1:10)
ax = gca;
ax.XDir = 'reverse';
ax.YDir = 'reverse';

显示通过原点的轴线

默认情况下,x 轴和 y 轴沿坐标区的外边界显示。通过设置 Axes 对象的 XAxisLocation 和 YAxisLocation 属性来更改轴线位置,以使轴线在原点 (0,0) 处交叉。将 XAxisLocation 设置为 ‘top’、’bottom’ 或 ‘origin’。将 YAxisLocation 设置为 ‘left’、’right’ 或 ‘origin’。这些属性仅适用于二维视图中的坐标区。

x = linspace(-5,5);
y = sin(x);
plot(x,y)

ax = gca;
ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin';

删除坐标轮廓区

box off

向图形添加标题、坐标轴标签和图例(Title, axis & legend)

title('Graph of Sine and Cosine Between -2\pi and 2\pi') % 添加标题
xlabel('-2\pi < x < 2\pi') % x-axis label
ylabel('sine and cosine values') % y-axis label
legend('y = sin(x)','y = cos(x)') % 图例
legend('y = sin(x)','y = cos(x)','Location','southwest')
legend('y = sin(x)','y = cos(x)','Location','southwestoutside')

文本中用到的希腊字母,用 LATEX L A T E X 书写。

创建包含双 y 轴的图(double Y axis)

x = linspace(0,25);
y = sin(x/2);
yyaxis left
plot(x,y);


r = x.^2/2; // elementwise square
yyaxis right
plot(x,r);

yyaxis left
title('Plots with Different y-Scales')
xlabel('Values from 0 to 25')
ylabel('Left Side')

yyaxis right
ylabel('Right Side')

hold on

yyaxis left
y2 = sin(x/3);
plot(x,y2);
y3 = sin(x/4);
plot(x,y3);

yyaxis right
load count.dat;
m = mean(count,2);
e = std(count,1,2);
errorbar(m,e)

hold off

使用 hold on命令,会在当前figure继续绘制图形。新绘图不会重置标题或轴标签等坐标区属性,但是,坐标区范围和刻度值会进行调整以适应新数据。
对于双Y轴而言,新图采用和对应 y 轴一样的颜色代表同一族曲线,但循环使用线型序列,以示区分。hold on同时影响左右两侧。
对于单Y轴而言,新绘图将根据坐标区的 ColorOrder 和 LineStyleOrder 属性循环使用颜色和线型。
hold off之后,下一个新绘图将清除现有绘图,并重置标题等坐标区属性。

xx

合并多个绘图

使用hold on 在同一坐标系下合并

x = linspace(0,10,50);
y1 = sin(x);
figure
plot(x,y1)
title('Combine Plots')

hold on
y2 = sin(x/2);
plot(x,y2)

y3 = 2*sin(x);
scatter(x,y3) 
hold off

使用 subplot 函数在同一个window 上绘制不同的坐标区

figure
ax1 = subplot(2,1,1);
x = linspace(0,10,50);
y1 = sin(2*x);
plot(ax1,x,y1)
title(ax1,'Subplot 1')
ylabel(ax1,'Values from -1 to 1')

ax2 = subplot(2,1,2);
y2 = rand(50,1);
scatter(ax2,x,y2)
title(ax2,'Subplot 2')
ylabel(ax2,'Values from 0 to 1')

添加超级标题

f = figure;
p = uipanel('Parent',f,'BorderType','none'); 
p.Title = 'My Super Title'; 
p.TitlePosition = 'centertop'; 
p.FontSize = 12;
p.FontWeight = 'bold';


subplot(1,2,1,'Parent',p) 
x = linspace(0,10,50);
y1 = sin(2*x);
plot(x,y1)
title('Subplot 1') 

subplot(1,2,2,'Parent',p) 
y2 = rand(50,1);
scatter(x,y2)
title('Subplot 2')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值