Kat*_*tyB 13 matlab plot matlab-figure
请考虑以下示例代码:
load sumsin;
s = sumsin+10; % example data series
time = linspace(0,5*24,1000);
figure(1);
subplot(311);
plot(time,s,'k');
subplot(312);
plot(time,s,'k');
hold on;
[s_denoised,~, ~] = wden(s,'minimaxi','s','sln',1,'db4');
plot(time,s_denoised,'r');
subplot(313);
plot(time,s,'k');
hold on;
plot(time,s_denoised,'r');
xlim([20 40]);
Run Code Online (Sandbox Code Playgroud)
导致
我想通过在子图2和3之间插入线来改变这个图,以表明子图3是subplot2的一部分.例如:
如何在matlab中实现这一目标?
编辑:
我想到的是在整个图形上生成一个不可见轴的线条,获得每个子图的位置,20和40的位置将是子图宽度的一定百分比,所以我可以使用此处的注释命令开始一行,然后将相同的方法应用于第三个子图,以将线连接到所需的位置.我试过这个,但到目前为止还没有解决方法.
Eit*_*n T 12
只是为了答案,你可以annotation objects
用来获得你正在寻找的效果,正如在评论中正确建议的那样.请注意,它们的坐标必须相对于图形窗口标准化为[0,1]范围,因此调整它们可能相当繁琐.
这确实完成了工作,但它太可怕了.不要这样做.
由于我没有你的原始数据,我会画一些我自己的(但与你的相似):
t = linspace(0, 120, 1000);
s_denoised = sin(t / 2);
s = s_denoised + 0.2 * randn(size(s_denoised));
subplot(3, 1, 1), plot(t, s, 'k')
subplot(3, 1, 2), plot(t, s, 'k', t, s_denoised, 'r')
subplot(3, 1, 3), plot(t, s, 'k', t, s_denoised, 'r'), xlim([20 40])
Run Code Online (Sandbox Code Playgroud)
现在让我们添加你想要的"注释"行:
annotation('doublearrow', [.26 .39], [.38 .38]); %// Top double-arrow line
annotation('doublearrow', [.13 .9], [.34 .34]); %// Bottom double-arrow line
annotation('line', [.325 .325], [.38 .37]); %// Top little connector
annotation('line', [.515 .515], [.35 .34]); %// Bottom little connector
annotation('line', [.325 .515], [.37 .35]); %// Line
Run Code Online (Sandbox Code Playgroud)
结果:
在游戏中稍晚,但知道文件交换(FEX)上可用的这些可选工具仍然是有益的:
inset2DAbsolute - 创建一个使用较大轴定义的轴插入和相应的注释.
图形放大镜 - 是同一绘图中图像的2D图形的缩放工具.它由两个块(次轴和放大镜)组成.辅助轴可以在图的范围内任意分配,显示由放大镜标记的区域.
归档时间: |
|
查看次数: |
2411 次 |
最近记录: |