Графики не отображаются должным образом в подзаговоре в MATLAB - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть файл данных , который имеет 3 столбца, 1-й столбец - это поле для данных, или вы можете сказать другой индекс.2-й столбец - данные оси X, а 3-й столбец - данные оси Y.Теперь у меня есть похожие файлы данных для разных переменных, например, 8 файлов.Я хочу построить весь график на одной фигуре в MATLAB.Для моей проблемы, я показываю только один участок.Этот файл данных субплота должен отображать 5 «линейных графиков» для 5 индексов (1-й столбец).Но когда я строю сюжет в качестве сюжета, он показывает только 1 сюжет.Вот мой код ниже:

% open Zdiff Odd Mode data file
fid = fopen('Data_test.txt');
% Read data in from csv file
readData = textscan(fid,'%f %f %f','Headerlines',1,'Delimiter',',');
fclose(fid);

% Extract data from readData
index_Data = readData{1,1}(:,1);
% Identify the unique indices
uni_idx=unique(index_Data);
xData = readData{1,2}(:,1);
yData = readData{1,3}(:,1);


% Plot Data
f = figure;
%Top Title for all the subplots
p = uipanel('Parent',f,'BorderType','none'); 
p.Title = 'Electrical Characteristics'; 
p.TitlePosition = 'centertop'; 
p.FontSize = 14;
p.FontWeight = 'bold';

cla; hold on; grid on, box on;

ax1 = subplot(2,4,1,'Parent',p);
% Loop over the indices to plot the corresponding data
for i=1:length(uni_idx)
   idx=find(index_Data == uni_idx(i));
   plot(xData(idx,1),yData(idx,1))
end

График показывает, как показано ниже: enter image description here

Когда я отображаю данные в виде полной цифры, графикидеально.Но так как у меня есть много данных, которые можно отобразить на одной фигуре в виде вспомогательных участков, мне нужно знать, что не так в моем коде подзаговора.

Вот мой код для всей фигуры данных без подзаговора

Перед построением кода он такой же, как и раньше:

% Plot Data
f1 = figure(1);
cla; hold on; grid on;

% Loop over the indices to plot the corresponding data

for i=1:length(uni_idx)
   idx=find(index_Data == uni_idx(i));
   plot(xData(idx,1),yData(idx,1))
end

Полученный результат приведен ниже: enter image description here

Что такоечто-то не так с моим кодом построения в подзаговоре?Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 12 сентября 2018

Это ваша последовательность команд и что они делают:

f = figure;

Создает пустую фигуру, здесь еще не определены оси.

cla

Очищает текущие оси, поскольку текущих осей нет, создается одна.

hold on

Устанавливает свойство hold для текущих осей

grid on, box on

Устанавливает некоторые другие свойства текущих осей

ax1 = subplot(2,4,1,'Parent',p);

Создает новые оси. Поскольку он перекрывает ранее созданные оси, они удаляются.

plot(xData(idx,1),yData(idx,1))

Графики с текущими осями (т. Е. Созданными subplot). Эти оси не имеют установленного свойства hold, поэтому последующие команды plot будут перезаписывать данные, представленные здесь.

Решение, как и , предложенное Андером в комментарии , состоит в том, чтобы установить свойство "hold" осей, созданных subplot. Заменить:

cla; hold on; grid on, box on;
ax1 = subplot(2,4,1,'Parent',p);

с:

ax1 = subplot(2,4,1,'Parent',p);
hold on; grid on, box on;

(обратите внимание, что cla не требуется, поскольку вы рисуете на новую пустую фигуру).

...