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.

 채택된 답변

Matt J
Matt J 2023년 10월 5일
편집: Matt J 2023년 10월 5일
plot([data.BO], vertcat(data.tota),'o')

댓글 수: 2

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

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

릴리스

R2023a

질문:

2023년 10월 5일

편집:

2023년 10월 5일

Community Treasure Hunt

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

Start Hunting!

Translated by