Plot a struct field that is an array of doubles

I have data stored in a struct with fields 'BO' and 'tota' which I want to plot something like:
plot([data.BO], [data.tota])
but the problem is that each element of the 'tota' field is an array. I want to plot all of the array as multiple y values for the single x value. Example data structure and plot below (plotting was accomplished by breaking the single struct into multiple standalone matrix).
In truth, I want to do something like:
figure; hold on;
plot([data.BO],[data.tota(:,1:end-2)],'o')
plot([data.BO],[data.tota(:,end-1)])
plot([data.BO],[data.tota(:,end)])
The best I can do is
b = cell2mat({data.tota}');
plot([data.BO],b(:,1:end-2),'o')
...
But I was wondering if there is a more elegant way to plot directly from the struct without needing to duplicate data into a bunch of temporary variables.

 Respuesta aceptada

Matt J
Matt J el 5 de Oct. de 2023
Editada: Matt J el 5 de Oct. de 2023
plot([data.BO], vertcat(data.tota),'o')

2 comentarios

Brett Wingad
Brett Wingad el 5 de Oct. de 2023
Thanks!, that should have been obvious. There is no way (without saving off to a new variable) to easily index in and limit the plotting to only a subset of the columns?
Thanks!
You're quite welcome. Please Accept-click the answer if it fulfills what you were looking for
There is no way (without saving off to a new variable) to easily index in and limit the plotting to only a subset of the columns?
No, but you can easily suppress certain lines after the fact, e.g.,
data=rand(10,4);
H=plot(data,'-o');
[H(1:2).Visible]=deal('off'); %suppress first 2 lines

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Productos

Versión

R2023a

Preguntada:

el 5 de Oct. de 2023

Editada:

el 5 de Oct. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by