在 table 的 for 循环中将条形图绘制为子图,以便在每次迭代时更新 w.r.t 行元素
Plot a bar chart as subplot in a for loop from a table so that it updates at each iteration w.r.t row elements
我在主题的 for 循环中有几个子图。我想从 20x2 table 绘制主题明智的表现。我如何制作一个单独的子图 - 同一个图形上的条形图,在第一次迭代时它更新并将第一行的元素分别绘制为 Space 和时间,然后在第二行的第二次迭代中,等等上,从性能上来说table?下面给出了我的代码的摘录。
在此先感谢您的帮助!
最好的,
A
for s=1:size(SubjectFolder,2)
% ..... some code
figure(1)
subplot(423)
f_psd = Grand_AvgTF_Space.freq;
[trash,f_psd_plot] = min(abs(f_psd-which_f));
PSD = mean(abs(squeeze(Grand_AvgTF_Space.powspctrm(s,:,:,:))),3); % [ch x freq] PSD of space or time condition
semilogy(f_psd,PSD,'color','b')
hold on,
semilogy(f_psd, mean(PSD),'linewidth',3,'color','r')
hold on
line([which_f which_f],[min(PSD(:)) max(PSD(:))],'color','g','linewidth',3)
xlabel('Frequency (Hz)')
ylabel('Power (dB/Hz)')
title( 'Space' )
ylim([min(PSD(:)) max(PSD(:))])
title( 'Space' )
subplot(424), % topoplot space
data_megin.avg = repmat(PSD(:,f_psd_plot),1,length(data_megin.time));
cfg.parameter = 'avg' %
ft_topoplotER(cfg, data_megin );
title(['Topolot for Space Freq = ' num2str(f_psd(f_psd_plot)) ' Hz'])
%..... some code
end
% 20x2 Table looks like this without variable names. Suppose I wanna give 1st col name as Space and 2nd col as Time in the required subplot, where each row represents subject1 to subject20.
96 100
85 89
. .
. .
80 87
在 bar()
和 plot()
调用中指示坐标轴
这可能不完全适合您的确切用例,但如果您只是想在条形图中添加一个条形图,该条形图是每次迭代的子图的一部分,此示例可能会有所帮助。这里 subplot(4,2,3)
轴被分配给变量 Bar_Graph_Axes
。 Bar_Graph_Axes
可以在 bar()
调用中调用,以指示要绘制的特定轴。传递轴名称是修改现有绘图的好方法,因为调用 hold on
将自动允许您修改最后调用的绘图。下面是一个 playground 脚本,您可以修改它以适合您的实现。 pause(1)
用于可视化目的,以显示添加的每个栏。
游乐场脚本:
Number_Of_Graphs = 20;
Table = rand(20,2);
Table(:,1) = (1:20);
for Graph_Index = 1: Number_Of_Graphs
Bar_Graph_Axes = subplot(4,2,3);
hold on
bar(Bar_Graph_Axes,Table(Graph_Index,1),Table(Graph_Index,2));
title("Bar Graph Subplot");
pause(1);
end
如果数组中的数据已经格式化
如果数据只是在一个数组中,其中类别由调用函数的列定义bar()
,在这种情况下将自动生成双条形图。
Number_Of_Iterations = 20;
Performance_Space_Time = rand(Number_Of_Iterations,2);
bar(Performance_Space_Time);
xticks(1:Number_Of_Iterations);
title("Bar Graph");
xlabel("Iteration, s"); ylabel("Value");
legend("Space","Time");
运行 使用 MATLAB R2019b
这方面的一些东西可能会奏效,不幸的是,没有我求助于使用占位符图的数据。条形图的大小和颜色很可能也可以更改。在这里,我假设地形地块可以毫无问题地占用一个子地块槽。我对地形图的绘制 characteristics/behaviour 不够熟悉,无法判断这是否会按预期工作。
对于较小的条形图,将此行从:
subplot(4,3,[3 6 9 12]); Bar_Graph = bar(Bar_Data);
至:
subplot(4,3,[6 9]); Bar_Graph = bar(Bar_Data);
Table = round(100*rand(20,2));
Placeholder = zeros(500,1000);
for Figure_Index = 1: 20
figure(Figure_Index);
subplot(4,3,1); imshow(Placeholder); title("Plot 1");
subplot(4,3,2); imshow(Placeholder); title("Topoplot 1");
subplot(4,3,4); imshow(Placeholder); title("Plot 2");
subplot(4,3,5); imshow(Placeholder); title("Topoplot 2");
subplot(4,3,7); imshow(Placeholder); title("Plot 3");
subplot(4,3,8); imshow(Placeholder); title("Topoplot 3");
subplot(4,3,10); imshow(Placeholder); title("Plot 4");
subplot(4,3,11); imshow(Placeholder); title("Topoplot 4");
Bar_Data = Table(Figure_Index,:);
subplot(4,3,[3 6 9 12]); Bar_Graph = bar(Bar_Data);
text(1:length(Bar_Data),Bar_Data,num2str(Bar_Data'),'vert','bottom','horiz','center');
Bar_Graph.BaseLine.Visible = 'off';
axis off
end
运行 使用 MATLAB R2019b
我在主题的 for 循环中有几个子图。我想从 20x2 table 绘制主题明智的表现。我如何制作一个单独的子图 - 同一个图形上的条形图,在第一次迭代时它更新并将第一行的元素分别绘制为 Space 和时间,然后在第二行的第二次迭代中,等等上,从性能上来说table?下面给出了我的代码的摘录。
在此先感谢您的帮助!
最好的, A
for s=1:size(SubjectFolder,2)
% ..... some code
figure(1)
subplot(423)
f_psd = Grand_AvgTF_Space.freq;
[trash,f_psd_plot] = min(abs(f_psd-which_f));
PSD = mean(abs(squeeze(Grand_AvgTF_Space.powspctrm(s,:,:,:))),3); % [ch x freq] PSD of space or time condition
semilogy(f_psd,PSD,'color','b')
hold on,
semilogy(f_psd, mean(PSD),'linewidth',3,'color','r')
hold on
line([which_f which_f],[min(PSD(:)) max(PSD(:))],'color','g','linewidth',3)
xlabel('Frequency (Hz)')
ylabel('Power (dB/Hz)')
title( 'Space' )
ylim([min(PSD(:)) max(PSD(:))])
title( 'Space' )
subplot(424), % topoplot space
data_megin.avg = repmat(PSD(:,f_psd_plot),1,length(data_megin.time));
cfg.parameter = 'avg' %
ft_topoplotER(cfg, data_megin );
title(['Topolot for Space Freq = ' num2str(f_psd(f_psd_plot)) ' Hz'])
%..... some code
end
% 20x2 Table looks like this without variable names. Suppose I wanna give 1st col name as Space and 2nd col as Time in the required subplot, where each row represents subject1 to subject20.
96 100
85 89
. .
. .
80 87
在 bar()
和 plot()
调用中指示坐标轴
这可能不完全适合您的确切用例,但如果您只是想在条形图中添加一个条形图,该条形图是每次迭代的子图的一部分,此示例可能会有所帮助。这里 subplot(4,2,3)
轴被分配给变量 Bar_Graph_Axes
。 Bar_Graph_Axes
可以在 bar()
调用中调用,以指示要绘制的特定轴。传递轴名称是修改现有绘图的好方法,因为调用 hold on
将自动允许您修改最后调用的绘图。下面是一个 playground 脚本,您可以修改它以适合您的实现。 pause(1)
用于可视化目的,以显示添加的每个栏。
游乐场脚本:
Number_Of_Graphs = 20;
Table = rand(20,2);
Table(:,1) = (1:20);
for Graph_Index = 1: Number_Of_Graphs
Bar_Graph_Axes = subplot(4,2,3);
hold on
bar(Bar_Graph_Axes,Table(Graph_Index,1),Table(Graph_Index,2));
title("Bar Graph Subplot");
pause(1);
end
如果数组中的数据已经格式化
如果数据只是在一个数组中,其中类别由调用函数的列定义bar()
,在这种情况下将自动生成双条形图。
Number_Of_Iterations = 20;
Performance_Space_Time = rand(Number_Of_Iterations,2);
bar(Performance_Space_Time);
xticks(1:Number_Of_Iterations);
title("Bar Graph");
xlabel("Iteration, s"); ylabel("Value");
legend("Space","Time");
运行 使用 MATLAB R2019b
这方面的一些东西可能会奏效,不幸的是,没有我求助于使用占位符图的数据。条形图的大小和颜色很可能也可以更改。在这里,我假设地形地块可以毫无问题地占用一个子地块槽。我对地形图的绘制 characteristics/behaviour 不够熟悉,无法判断这是否会按预期工作。
对于较小的条形图,将此行从:
subplot(4,3,[3 6 9 12]); Bar_Graph = bar(Bar_Data);
至:
subplot(4,3,[6 9]); Bar_Graph = bar(Bar_Data);
Table = round(100*rand(20,2));
Placeholder = zeros(500,1000);
for Figure_Index = 1: 20
figure(Figure_Index);
subplot(4,3,1); imshow(Placeholder); title("Plot 1");
subplot(4,3,2); imshow(Placeholder); title("Topoplot 1");
subplot(4,3,4); imshow(Placeholder); title("Plot 2");
subplot(4,3,5); imshow(Placeholder); title("Topoplot 2");
subplot(4,3,7); imshow(Placeholder); title("Plot 3");
subplot(4,3,8); imshow(Placeholder); title("Topoplot 3");
subplot(4,3,10); imshow(Placeholder); title("Plot 4");
subplot(4,3,11); imshow(Placeholder); title("Topoplot 4");
Bar_Data = Table(Figure_Index,:);
subplot(4,3,[3 6 9 12]); Bar_Graph = bar(Bar_Data);
text(1:length(Bar_Data),Bar_Data,num2str(Bar_Data'),'vert','bottom','horiz','center');
Bar_Graph.BaseLine.Visible = 'off';
axis off
end
运行 使用 MATLAB R2019b