Matlab绘制多个曲线的图及局部放大细节展示

绘制多个曲线的图及局部放大细节展示

在科学研究中,经常需要绘制多个曲线并展示局部放大的细节(如下图)。
Matlab绘制多个曲线的图及局部放大细节展示

本篇博客介绍了如何使用MATLAB绘制多个曲线,并在同一张图中添加局部放大图,以展示具体细节。

示例数据

首先,我们准备了一些示例数据,这些数据包括自变量 x 和三个因变量 y1、y2、y3,分别表示 sin(x)、cos(x) 和 exp(-x/5) * cos(2x)。

x = linspace(0, 10, 100);
y1 = sin(x);
y2 = cos(x);
y3 = exp(-x/5) .* cos(2*x);

绘制多个曲线的图

我们将使用MATLAB的 plot 函数来绘制多个曲线,并为每个曲线选择不同的颜色、线型和标记。

colors = lines(3); % 颜色方案
line_styles = {
    
    '-', '-', '-'}; % 曲线线型
marker_styles = {
    
    'none', 'none', 'none'}; % 曲线标记

figure;
for i = 1:3
    plot(x, eval(['y', num2str(i)]), 'Color', colors(i,:), 'LineStyle', line_styles{
    
    i}, 'Marker', marker_styles{
    
    i}, 'LineWidth', 1.5);
    hold on;
end

legend('sin(x)', 'cos(x)', 'exp(-x/5)*cos(2*x)', 'Location', 'best');
title('包含多个曲线的图');
xlim([0, 10]);
ylim([-1.2, 3]);
xlabel('X轴');
ylabel('Y轴');

以上代码会创建一个新的图形窗口,并绘制了三个曲线,分别对应 sin(x)、cos(x) 和 exp(-x/5) * cos(2x)。我们选择了明亮的颜色方案,并为曲线选择了适当的线型和标记。同时,我们设置了图例和坐标轴的标签、标题以及范围。

展示局部放大图的细节

除了绘制多个曲线的整体图,我们还希望能够展示其中一个区域的细节。为此,我们将创建一个新的坐标系,并在该坐标系中绘制局部放大图。

ax = axes('Position',[0.2 0.6 0.25 0.25]);
box on;
hold on;

for i = 1:3
    plot(x, eval(['y', num2str(i)]), 'Color', colors(i,:), 'LineStyle', line_styles{
    
    i}, 'Marker', marker_styles{
    
    i},LineWidth=1.5);
end

xlim([zoom_x_start, zoom_x_end]);
ylim([zoom_y_start, zoom_y_end]);
xlabel('X轴');
ylabel('Y轴');
title('局部放大图

 - 细节显示');

grid on;
linkaxes([gca, ax], 'xy');

在上述代码中,我们使用 axes 函数创建了一个新的坐标系,并设置了它的位置和大小。然后,我们在新的坐标系中绘制了与整体图相同的三个曲线。通过设置坐标轴的范围,我们将局部放大的区域展示出来。同时,我们添加了网格线以增强可读性,并使用 linkaxes 函数将两个坐标系的缩放和平移功能链接起来。

至此,我们成功绘制了多个曲线的图,并在同一张图中展示了局部放大的细节。这种绘图方式可以帮助我们更好地理解数据的特征和细节,对于科研工作和论文写作非常有用。

完整代码如下

% 示例数据
x = linspace(0, 10, 100);
y1 = sin(x);
y2 = cos(x);
y3 = exp(-x/5) .* cos(2*x);

% 创建新图形窗口
figure;

% 绘制曲线
colors = lines(3); % 颜色方案
line_styles = {
    
    '-', '-', '-'}; % 曲线线型
marker_styles = {
    
    'none', 'none', 'none'}; % 曲线标记

for i = 1:3
    plot(x, eval(['y', num2str(i)]), 'Color', colors(i,:), 'LineStyle', line_styles{
    
    i}, 'Marker', marker_styles{
    
    i},LineWidth=1.5);
    hold on;
end

% 图例
legend('sin(x)', 'cos(x)', 'exp(-x/5)*cos(2*x)', 'Location', 'best');
title('包含多个曲线的图');

% 设置坐标轴范围和标签
xlim([0, 10]);
ylim([-1.2, 3]);
xlabel('X轴');
ylabel('Y轴');

% 创建新的坐标系
ax = axes('Position',[0.2 0.6 0.25 0.25]); % 设置新坐标系的位置和大小
box on; % 绘制坐标系边框
hold on; % 在新坐标系上绘制多个曲线

% 绘制局部放大图
for i = 1:3
    plot(x, eval(['y', num2str(i)]), 'Color', colors(i,:), 'LineStyle', line_styles{
    
    i}, 'Marker', marker_styles{
    
    i},LineWidth=1.5);
end

% 设置局部放大图坐标轴范围和标签
xlim([zoom_x_start, zoom_x_end]);
ylim([zoom_y_start, zoom_y_end]);
xlabel('X轴');
ylabel('Y轴');
title('局部放大图 - 细节显示');

% 添加网格线
grid on;

% 链接缩放和平移
linkaxes([gca, ax], 'xy');

希望本篇博客能够对您在MATLAB中绘制多个曲线和局部放大图有所帮助。感谢阅读!如有任何问题或建议,请在评论区留言。

猜你喜欢

转载自blog.csdn.net/qq_42818403/article/details/131484174
今日推荐