MATLAB:在 for 循环中绘制子图

标签 matlab for-loop plot matlab-figure subplot

我正在尝试在一个图中绘制多个子图。 子图的总数取决于矩阵中的最大值:“i”的最大值。 我想为 i 的每个值在两个子图中绘制两个变量:slagtijd_start & slagfrequentie_start

因此,当 i = 3 的最大值时,我们有一个 2x3 轴的子图矩阵, 如果 i = 4 --> 2x4 轴等。

在正确的位置上绘图是有效的,只是 matlab 会删除之前的子图(之前的 i 值)。在本例中,i = 3,图中仅显示两个最新的子图。我尝试过“坚持”等不同的方法,但我不明白。这可能是一个简单的技巧。

我已经在下面发布了我的代码和结果图,

提前致谢,

莫奇杰

figure(6)
hold on

for i = 1:max(piektijden_start(:,2))
    startnummer = find(piektijden_start(:,2) == i); 
    slagtijd_start= diff(piektijden_start(startnummer)); 
    slagfrequentie_start= (60./slagtijd_start);
    subplot(2,i,i),plot(piektijden_start(startnummer(1:end-1),1),slagtijd_start)
    hold on
    xlabel('Tijd [s]')
    ylabel('Slagtijd [s]')
    title('Slagtijd')

    subplot(2,i,i+i),plot(piektijden_start(startnummer(1:end-1),1),slagfrequentie_start)
    hold on
    plot(piektijden_start(startnummer(1:end-1),1),slagfrequentie_start,'.r')
    xlabel('Tijd [s]')
    ylabel('Slagfrequentie [N/min]')
    title('Slagfrequentie')
end

enter image description here

最佳答案

使用类似的东西

figure(6)
hold on
max_i = max(piektijden_start(:,2));
for i = 1:max_i
    %// ...
    subplot(2, max_i, i)
    %// ...
    subplot(2, max_i, i+max_i)
    %// ...
end

subplot 的第二个参数是子图的列数。第三个是已寻址的子图,这样第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推

关于MATLAB:在 for 循环中绘制子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30217340/

相关文章:

在c程序中调用codegen matlab生成的.dll文件

matlab - 来自 3d 矩阵的 3d 补丁

c++ - for语句中的多个条件

r - scale_datetime 移动 x 轴

matlab - 在 matlab 中设置位置导致意外位置

C vs MATLAB(制作一个元素为均匀分布的随机数的矩阵)

python - 在 python 中的循环中编写循环的更简洁的方法

JavaScript for循环 "jump over value"

r - 在 R 中迭代生成名称以存储绘图

python - 获取绘制在图形上的所有对象(艺术家)