set graphics object ydata which is a cell

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

 采纳的回答

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 个评论

I didn't think to check the dimensions of h ! That works very well. Thank you so much!!!!!

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Creating, Deleting, and Querying Graphics Objects 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by