MATLAB Answers

set graphics object ydata which is a cell

2 views (last 30 days)
Matthew
Matthew on 10 Mar 2014
Edited: Matthew on 10 Mar 2014
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

  0 Comments

Sign in to comment.

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
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)

Sign in to answer this question.