Include legends based on column names in for loop

39 visualizzazioni (ultimi 30 giorni)
I have a loop which processes three tables. Each table has ten columns (in addition, each column includes column names). When I plot the three figures in the loop, I want to include legends which state the column name of each variable within the plot. I know how to make this manually by typing the legends in the Matlab code. However, since the column names are changing depending on table I want to perform this automatically in the script. My though is to use "Display" but I do not know how to apply this kind of approach. In terms of code procedure, I thought something similar to this (not working unfortunately):
for v = 1:numTables
%Processing of the code
legend show
Grateful for any advice.
  1 Commento
Vlatko Milic
Vlatko Milic il 12 Gen 2022
Thank you! I made some changes to the code and now it works for several tables.
All the best

Accedi per commentare.

Risposta accettata

KSSV il 12 Gen 2022
id = (1:10)' ;
x = rand(10,1) ;
y = rand(10,1) ;
z = rand(10,1) ;
T = table(id,x,y,z)
T = 10×4 table
id x y z __ ________ ________ ________ 1 0.60378 0.39943 0.005615 2 0.039465 0.2604 0.33861 3 0.24765 0.47166 0.71508 4 0.33116 0.064591 0.014081 5 0.87429 0.19372 0.8671 6 0.80526 0.74176 0.52277 7 0.61993 0.51138 0.34342 8 0.37336 0.11143 0.9837 9 0.73479 0.22456 0.58077 10 0.14989 0.96124 0.2604
hold on
for i = 2:4

Più risposte (1)

Mathieu NOE
Mathieu NOE il 12 Gen 2022
see my little demo below to use the table varibales names as legend
the csv data file is attached
%get the data from table
T = readtable('pH_Data.csv'); %Reads Table or CSV File
vnames=T.Properties.VariableNames; % {'DateAndTimeRun1'} {'Time_s_Run1'} {'Voltage_mV_Run1'} {'pHRun1'}
time = T.Time_s_Run1; % time (s)
data = table2array(T(:,3:end)); % data
lgstr = vnames(3:end); % use vnames to make legend strings
% legend strings convert underscore to blanks for better legend readability
for ck = 1:numel(lgstr)
tmp = char(lgstr(ck));
ind = strfind(tmp,'_');
tmp(ind) = ' ';
lgstr{ck} = tmp; % update
  7 Commenti
Vlatko Milic
Vlatko Milic il 16 Mag 2022
it works perfectly, thank you so much!
I had forgotten to remove some of the code I was working on, hence the comment in the code from my side.
Thank you!

Accedi per commentare.


Scopri di più su 2-D and 3-D Plots in Help Center e File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by