How to scatter plot a cell array

4 views (last 30 days)
Weihao Fan
Weihao Fan on 10 Feb 2020
Answered: Weihao Fan on 12 Feb 2020
I have a 1x18 cell array like the picture. The indices of the cells (1:18) represent the depths of my system. And each depth includes corresponding amount of data (for example, the 1st depth has 529 data). Now I want to plot these data as a function of depth. How can I achieve that? Should I use scatter function? But scatter function requires the length of x, y dimension to be same.
  3 Comments
Adam Danz
Adam Danz on 11 Feb 2020
Weihao Fan's answer moved here as a comment.
Yeah that is my goal. And what do you mean by explaining the correspondence between depths
Adam Danz
Adam Danz on 11 Feb 2020
Edited: Adam Danz on 12 Feb 2020
" what do you mean by explaining the correspondence between depths"
As you can see in the demo in my answer, each stack of dots has a different number of dots. So, if you expected to see trend lines connecting the dots between x values, you'd need to explain how those values are related since there is not a 1:1 mapping.

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 11 Feb 2020
Input: data, an 18x1 cell array where each element is a 1xn double precision vector varying in size.
Output: a figure with x values 1:18 and y values defined by the elements of data.
% Create data that loosly match OP's description
data = arrayfun(@(i){rand(1,i)},randi(500,18,1)+27);
% Define Depths (x values_
depths = 1:numel(data);
% Create figure and plot each element of data
clf()
hold on % important
arrayfun(@(i)plot(depths(i),data{i},'o'),1:numel(depths));
% Specify the color here -----------^
200211 154948-Figure 1.png

More Answers (1)

Weihao Fan
Weihao Fan on 12 Feb 2020
It works for me. Thank you.

Tags

Community Treasure Hunt

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

Start Hunting!