Octave - 将多个系列绘制到循环中的特定 figure/axes
Octave - plotting multiple series to specific figure/axes in a loop
我正在尝试使用 for 循环在一个图形上绘制来自多个传感器的数据。目前代码循环遍历多个数据文件并绘制每个文件的频谱图,每个都在一个单独的图中,但我还想在最后将所有数据的 PSD 一起绘制在一张图中。有没有比复制整个循环更优雅的方法来做到这一点?换句话说,我能以某种方式预定义我的轴吗,例如
figure,
psd_plots = axes();
然后当我通过我的循环时,具体绘制到那个数字。类似于:
for i=1:length(files):
file = fopen(files{i},'r');
data = fread(file);
# plot spectrogram in its own figure
figure, specgram(data),
# add PSD to group figure
[psd,f] = periodogam(data)
plot(f,psd, axes=psd_plots)
end
根据现有的 'axes' 对象,这似乎应该是可能的,但是从文档中,我看不到一旦定义它们如何实际绘制到轴上,或者如何关联它们与一个数字。想法?
您可以使用figure(unique_id_of_the_figure)
指定您需要绘制的图形,这里是一个最小的例子:
close all
% Create the figure #1 but we do not display it now.
figure(1,'visible','off')
% Set hold to on
hold on
for ii = 1:4
% Create a new figure to plot new stuff
% if we do not specify the figure id, octave will take the next available id
figure()
plot(rand(1,10))
% Plot on the figure #1
figure(1,'visible','off')
plot(rand(1,10))
end
% Display figure #1
figure(1)
我正在尝试使用 for 循环在一个图形上绘制来自多个传感器的数据。目前代码循环遍历多个数据文件并绘制每个文件的频谱图,每个都在一个单独的图中,但我还想在最后将所有数据的 PSD 一起绘制在一张图中。有没有比复制整个循环更优雅的方法来做到这一点?换句话说,我能以某种方式预定义我的轴吗,例如
figure,
psd_plots = axes();
然后当我通过我的循环时,具体绘制到那个数字。类似于:
for i=1:length(files):
file = fopen(files{i},'r');
data = fread(file);
# plot spectrogram in its own figure
figure, specgram(data),
# add PSD to group figure
[psd,f] = periodogam(data)
plot(f,psd, axes=psd_plots)
end
根据现有的 'axes' 对象,这似乎应该是可能的,但是从文档中,我看不到一旦定义它们如何实际绘制到轴上,或者如何关联它们与一个数字。想法?
您可以使用figure(unique_id_of_the_figure)
指定您需要绘制的图形,这里是一个最小的例子:
close all
% Create the figure #1 but we do not display it now.
figure(1,'visible','off')
% Set hold to on
hold on
for ii = 1:4
% Create a new figure to plot new stuff
% if we do not specify the figure id, octave will take the next available id
figure()
plot(rand(1,10))
% Plot on the figure #1
figure(1,'visible','off')
plot(rand(1,10))
end
% Display figure #1
figure(1)