matlab画图:实现将一个图局部放大,并放置在同一张图里
使用matlab,将一张图局部放大,绘制在同一幅图内。
·
方法一:直接在figure上调整
优点: 比较方便
缺点:坐标轴不能直接修改,会直接复制母图。
以绘制的三维散点图为例(二维以及折线(plot)等类似):
原始图像:

现想将绿色部分局部放大。
- 首先滑动鼠标滚轮

- 点击白色箭头

- 复制(ctrl+c 或者 鼠标右键->复制)
- 左上角点击 工具->还原视图
- 粘贴(ctrl+v 或者 鼠标右键->粘贴)

- 点击四个角点进行缩放和位置移动

- 双击文字可进行修改和删除
- 多余的图例或者颜色栏可通过点击删除

- 保存(ctrl+s)

PS:示例代码(二维以及折线等类似):
figure;
scatter3(x, y, z, 50, t, 'filled'); % 绘制三维散点图
%plot绘制折线图类似
xlabel('x(m)', 'FontSize', 24); % 设置 x 轴标签
ylabel('y(m)', 'FontSize', 24); % 设置 y 轴标签
zlabel('Z(m)', 'FontSize', 24); % 设置 Z 轴标签
title('乱点', 'FontSize', 24); % 设置标题
colormap(jet); % 使用 'jet' 渐变色
colorbar; % 添加颜色条
caxis([min(t) max(t)]); % 设定颜色条范围
grid on;
set(gca, 'FontSize', 24, 'LineWidth', 1.5); % 设置字体和线宽
方法二:在代码中调整
优点:修改更加自由随意
缺点:不断调试位置和大小
最重要的其实就一句代码
axes('Position', [0.6, 0.7, 0.15, 0.25]);
- left = 0.6:新坐标轴的左边缘距离主图左边缘 60% 的位置。
- bottom = 0.7:新坐标轴的底边缘距离主图底边缘 60% 的位置。
- width = 0.15:新坐标轴的宽度为主图宽度的 25%。
- height = 0.25:新坐标轴的高度为主图高度的 25%。

仍旧以上述上述代码示例:
figure;
scatter3(x, y, z, 50, t, 'filled'); % 绘制三维散点图
%plot绘制折线图类似
xlabel('x(m)', 'FontSize', 24); % 设置 x 轴标签
ylabel('y(m)', 'FontSize', 24); % 设置 y 轴标签
zlabel('Z(m)', 'FontSize', 24); % 设置 Z 轴标签
title('乱点', 'FontSize', 24); % 设置标题
colormap(jet); % 使用 'jet' 渐变色
colorbar; % 添加颜色条
caxis([min(t) max(t)]); % 设定颜色条范围
grid on;
set(gca, 'FontSize', 24, 'LineWidth', 1.5); % 设置字体和线宽
xlim1 = -1.5;xlim2 = 1.5;ylim1 = -1.5;ylim2 = 1.5;zlim1 = -1.5;zlim2 = 1.5;
xlim_local = [xlim1, xlim2];
ylim_local = [ylim1, ylim2];
zlim_local = [zlim1, zlim2];
% 创建小的 axes 坐标轴用于局部放大
axes('Position', [0.48, 0.66, 0.15, 0.25]); % 设置局部放大图的位置和大小 (相对位置和大小)
% 绘制局部放大图
scatter3(x(x >= xlim_local(1) & x <= xlim_local(2) & ...
y >= ylim_local(1) & y <= ylim_local(2) & ...
z >= zlim_local(1) & z <= zlim_local(2)), ...
y(x >= xlim_local(1) & x <= xlim_local(2) & ...
y >= ylim_local(1) & y <= ylim_local(2) & ...
z >= zlim_local(1) & z <= zlim_local(2)), ...
z(x >= xlim_local(1) & x <= xlim_local(2) & ...
y >= ylim_local(1) & y <= ylim_local(2) & ...
z >= zlim_local(1) & z <= zlim_local(2)), ...
50, t(x >= xlim_local(1) & x <= xlim_local(2) & ...
y >= ylim_local(1) & y <= ylim_local(2) & ...
z >= zlim_local(1) & z <= zlim_local(2)), 'filled');
% 隐藏局部放大图的边框和坐标轴
ax = gca;
ax.Box = 'off'; % 隐藏边框
ax.XColor = 'none'; % 隐藏 x 轴刻度
ax.YColor = 'none'; % 隐藏 y 轴刻度
ax.ZColor = 'none'; % 隐藏 z 轴刻度
% 添加网格
grid on;
colormap(jet); % 使局部图的颜色一致
tips:调整视角
如果想要手动旋转会发现:旋转局部图的时候,大图会一起转,但旋转大图的时候局部图不会转;所以想要调整视角,先转小图再转大图。
当然不止可以绘制一个~~~
更多推荐


所有评论(0)