Я строю заполненные круги и эллипсы на графике xy.Эллипсы получены из тензорных данных 2x2.Направления x и y имеют совершенно разные единицы измерения в зависимости от типа данных, которые я строю.Я хочу, чтобы эллипс отображался в некотором (x, y) месте на графике, но я хочу, чтобы соотношение сторон построенного эллипса сохранялось независимо от единиц по осям x и y.Обратите внимание, что axis equal
здесь не вариант, потому что шкалы x и y очень разные.Если я попытаюсь сделать axis equal
, это просто сделает сюжет очень маленьким.
Ниже приведен простой пример.В этом примере первый эллипс всегда является идеальным кругом для справки, чтобы увидеть, как его искажает фигура.Любая помощь приветствуется.
x = 100*[1 2 3 4]; %x direction is several orders of magnitude larger than y direction
y = [1 2 3 4]; %y direction
data = randn(4,1); %data to fill ellipse (irrelevant to the question)
nrot = 36; %Number of points on each ellipse
for i = 1:4
%Elements of 2x2 tensor to make the ellipse
r1 = randn; r2 = randn; r3 = randn; r4 = randn;
for irot=1:nrot %Loop to get ellipse points
rot_ang = (irot-1)*360/(nrot-1);
v = [cosd(rot_ang),sind(rot_ang)]; %Rotating vector components
if i == 1 %Ensure that the first ellipse is a perfect circle
r1 = 0; r4 = 0; r3 = r2;
end
plot_vec = [r1 r2; r3 r4]*v';
%x component of ellipse to plot
ex(irot) = plot_vec(1);
%y component of ellipse to plot
ey(irot) = plot_vec(2);
end
%Plot the ellipse at the x-y location
xp = x(i)+ex;
yp = y(i)+ey;
fill(xp,yp,data(i)); hold on %Plot ellipses filled with "data".
end
%"Axis equal" does not work in this case
%axis equal