我正在尝试调整箱线图的高度。简单的例子:
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; % adjust height
set(h, 'YData', ydata);
请注意celldisp(ydata)
显示:
ydata{1} =
1.8500 1.8500 2.1500 2.1500 1.8500
ydata{2} =
0.8500 0.8500 1.1500 1.1500 0.8500
上面的代码给出了错误:
Error using set
Conversion to double from cell is not possible.
如何设置'YData',因为它是一个单元格?
请注意,这是从更复杂的代码中提取的简化方法。一般来说,单元格ydata的元素都是 NOT 所有相同的长度,因此你不能只在ydata上使用cell2mat
或其他东西
答案 0 :(得分:1)
事实证明,h
是句柄的数组,因为此图中有多个对象。
因此,必须分别在数组 h
中的每个条目中执行操作。
e.g。
ydata = get(h(1), 'YData');
% do stuff to ydata,
set(h(1), 'YData', ydata);
ydata = get(h(2), 'YData');
% do stuff to ydata,
set(h(2), 'YData', ydata);