set graphics object ydata which is a cell

2 views (last 30 days)
I am trying to adjust the heights of a boxplot.
boxplot(1:10,[zeros(1,5) ones(1,5)], 'colorgroup', [0 1], 'colors', 'rb', 'orientation', 'horizontal')
h = findobj(gcf, 'tag', 'Box');
ydata = get(h, 'YData');
celldisp(ydata);
ydata{1} = ydata{1}*0.60;
set(h, 'YData', ydata);
Note that celldisp(ydata) displays:
ydata{1} =
1.8500 1.8500 2.1500 2.1500 1.8500
ydata{2} =
0.8500 0.8500 1.1500 1.1500 0.8500
And the above code gives the error:
Error using set
Conversion to double from cell is not possible.
How do I set 'YData', as it is a cell?
Please note, this is a simplified extraction from much more complicated code. In general, the elements of the cell ydata are NOT all the same length, hence you cannot just use cell2mat or something on ydata

Accepted Answer

Sean de Wolski
Sean de Wolski on 10 Mar 2014
If you look at h it's actually a 1x2 vector of handles. Thus you're getting the ydata from two separate handles and you'll need to change it for each individually. Simplest way is to use a for-loop
boxplot(1:10,[zeros(1,5) ones(1,5)], 'colorgroup', [0 1], 'colors', 'rb', 'orientation', 'horizontal')
h = findobj(gcf, 'tag', 'Box');
ydata = get(h, 'YData');
for ii = 1:numel(h)
set(h(ii),'YData',ydata{ii});
end
  1 Comment
Matthew
Matthew on 10 Mar 2014
Edited: Matthew on 10 Mar 2014
I didn't think to check the dimensions of h ! That works very well. Thank you so much!!!!!

Sign in to comment.

More Answers (0)

Categories

Find more on Data Type Identification in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!