«Перекос» происходит потому, что биплот перенормирует оценки, поэтому самый дальний результат - расстояние 1.axis equal
не собирается это исправить.Вы должны использовать scatter3
вместо biplot
data = rand(30,3);
group = scores(1:10,:)
scatter3(group(:,1), group(:,2), group(:,3), '.b')
hold all
group = scores(11:20,:)
scatter3(group(:,1), group(:,2), group(:,3), '.r')
group = scores(21:30,:)
scatter3(group(:,1), group(:,2), group(:,3), '.g')
hold off
title('Data')
xlabel('X')
ylabel('Y')
zlabel('Z')
или изменить строки scatter3 вашего кода так, чтобы маркеры были разных цветов.Параметр после 'marker' указывает, какой символ и какой символ и цвет наносить на график.Например, «.r» - красная точка.См. Linespec для параметров маркера и цвета.
scatter3(plotdataholder(1:14,1),plotdataholder(1:14,2),plotdataholder(1:14,3),35,[1 0 0],'marker', '.b');
hold on;
scatter3(plotdataholder(15:28,1),plotdataholder(15:28,2),plotdataholder(15:28,3),35,[0 0 1],'marker', '.r') ;
scatter3(plotdataholder(29:42,1),plotdataholder(29:42,2),plotdataholder(29:42,3),35,[0 1 0],'marker', '.g');