Вы ошибаетесь, предполагая, что h(1)
- это то, что было создано вашей первой hist
командой:
data1=normrnd(10,1,10000,1);
data2=normrnd(20,1,10000,1);
figure;
hold on;
hist(data1);
hist(data2);
h = findobj(gca, 'Type','patch');
set(h(1), 'FaceColor','r', 'EdgeColor','w') % color h1 plot red
set(h(2), 'FaceColor','b', 'EdgeColor','w') % color h2 plot blue
производит

, показывающеечто данные1 (со средним значением 10) изображены синим цветом, доказывая, что их дескриптор равен h (2), даже если он был нанесен первым.
Следовательно, для решения вашей проблемы вы можете написать
h = flipud(findobj(gca, 'Type','patch'));
чтобы привести ручки в h
в том порядке, в котором вы ожидаете.