График MATLAB: автоматически используя переменную столбца (Имя) в качестве отображаемого имени в легенде - PullRequest
0 голосов
/ 22 октября 2018

Итак, у меня есть серия регистраторов температуры, у каждого из которых есть определенное имя, и я хочу построить их следующим образом:

example of the plot

Теперь, какВы можете увидеть в примере, который я добавил, легенда автоматически помечает линии как data1, data2, data3,....Тем не менее, мне нужна легенда, чтобы показать имена регистраторов.Поскольку существует много регистраторов, мне нужно, чтобы MATLAB делал это автоматически, потому что потребовалось бы несколько часов, чтобы использовать DisplayName и ввести каждое имя регистратора вручную.Кто-нибудь знает, как я могу выбрать столбец в моей таблице данных в качестве имени для моих строк?Моя таблица построена следующим образом:

Name of logger 1| Date | Temperature | Name of logger 2 | Date | Temperature % and so on

Это часть кода, который я использую для графиков:

hold on
for i=2:2:35
   plot(data{:,1}, data{:,i})
end
hold off

структура

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете использовать DisplayName аргумент plot вместе с динамическим извлечением имен табличных переменных, чтобы сделать это автоматически.

vNames = data.Properties.VariableNames;
for ii = 2:2:35
    plot( data{:,1}, data{:,ii}, 'DisplayName', vNames{ii} );
end

Теперь, когда вы вызываете legend, серия будетиметь имена в соответствии с именами табличных переменных.


Обратите внимание, что, получив имена переменных, вы можете эквивалентно индексировать таблицу по ним (вместо ii напрямую), например так:

vNames = data.Properties.VariableNames;
for ii = 2:2:35
    plot( data.Date, data.(vNames{ii}), 'DisplayName', vNames{ii} );
end    
...