Figure changes during export

13 Ansichten (letzte 30 Tage)
Nathan Hogaboom
Nathan Hogaboom am 6 Aug. 2024
Kommentiert: Nathan Hogaboom am 7 Aug. 2024
Hello everyone. I have created a loop where my function would save a plot of a series of posterior tangents overlaying vertebrae of the cervical spine. The problem is, after my function runs (code displayed below) only 5 out of the 6 lines appear on the plot. If I run it in isolation in the command window, all 6 lines appear. I have attached the images, the plot pre export with all 6 lines (ran in command window) and post export with the incorrect number (run as a function). I have gone through a number of times and cannot figure out why one line disappears when exporting. Any ideas?
Thanks in advance.
PS I have commented out parts of the code that are not relevant for this question. I did not delete so you were not confused about the input/output variables of my function.
function [c1_c7_angle,c2_c7_angle,c2c3_tangent,c3c4_tangent,c4c5_tangent,c5c6_tangent,c6c7_tangent]=rotation_angles(c1x,c1y,c2x,c2y,c3x,c3y,c4x,c4y,c5x,c5y,c6x,c6y,c7x,c7y,new_filename,i2)
%define posterior corners.
c2post=[c2x(1) c2y(1); c2x(4) c2y(4)];
c3post=[c3x(1) c3y(1); c3x(4) c3y(4)];
c4post=[c4x(1) c4y(1); c4x(4) c4y(4)];
c5post=[c5x(1) c5y(1); c5x(4) c5y(4)];
c6post=[c6x(1) c6y(1); c6x(4) c6y(4)];
c7post=[c7x(1) c7y(1); c7x(4) c7y(4)];
%c2_angle=rad2deg(atan((c2post(2,2)-c2post(1,2))/(c2post(2,1)-c2post(1,1))));
%c3_angle=rad2deg(atan((c3post(2,2)-c3post(1,2))/(c3post(2,1)-c3post(1,1))));
%c4_angle=rad2deg(atan((c4post(2,2)-c4post(1,2))/(c4post(2,1)-c4post(1,1))));
%c5_angle=rad2deg(atan((c5post(2,2)-c5post(1,2))/(c5post(2,1)-c5post(1,1))));
%c6_angle=rad2deg(atan((c6post(2,2)-c6post(1,2))/(c6post(2,1)-c6post(1,1))));
%c7_angle=rad2deg(atan((c7post(2,2)-c7post(1,2))/(c7post(2,1)-c7post(1,1))));
%c2c3_tangent=c2_angle-c3_angle;
%c3c4_tangent=c3_angle-c4_angle;
%c4c5_tangent=c4_angle-c5_angle;
%c5c6_tangent=c5_angle-c6_angle;
%c6c7_tangent=c6_angle-c7_angle;
%calculate c21-c7 angle by defining angle of inferior vertebral points.
%c1_angle=rad2deg(atan((c1y(1)-c1y(2))/(c1x(2)-c1x(1))));
%c2_inf_ang=rad2deg(atan((c2y(3)-c2y(4))/(c2x(3)-c2x(4))));
%c7_inf_ang=rad2deg(atan((c7y(3)-c7y(4))/(c7x(3)-c7x(4))));
%c1_c7_angle=c7_inf_ang-c1_angle;
%c2_c7_angle=c7_inf_ang-c2_inf_ang;
vertebra_matrix=[c2post;c3post;c4post;c5post;c6post;c7post];
post_x=[c2x(1) c2x(4) c3x(1) c3x(4) c4x(1) c4x(4) c5x(1) c5x(4) c6x(1) c6x(4) c7x(1) c7x(4)];
post_y=[c2y(1) c2y(4) c3y(1) c3y(4) c4y(1) c4y(4) c5y(1) c5y(4) c6y(1) c6y(4) c7y(1) c7y(4)];
theta=zeros([1 6]);
x_diff=zeros([1 6]);
y_diff=zeros([1 6]);
V=zeros([6 2]);
factor_distance=2;
imshow(i2,'InitialMagnification',100);
hold on;
for h=1:6
f=h*2;
d=f-1;
x_diff(h)=post_x(d)-post_x(f);
y_diff(h)=post_y(f)-post_y(d);
theta(h)=rad2deg(atan(y_diff/x_diff));
V(h,:)=vertebra_matrix(d,:)-vertebra_matrix(f,:);
pext(h,:)=vertebra_matrix(h,:)+V(h,:)*factor_distance;
ax=gca;
output_filename=sprintf('%s_rotation.tif',new_filename);
exportgraphics(ax,output_filename);
plot([post_x(f),pext(h,1)],[post_y(f),pext(h,2)],'r-')
end
end

Akzeptierte Antwort

dpb
dpb am 6 Aug. 2024
Verschoben: dpb am 6 Aug. 2024
exportgraphics(ax,output_filename);
plot([post_x(f),pext(h,1)],[post_y(f),pext(h,2)],'r-')
The exportgraphics call is before the call to plot() so the last one hasn't yet been plotted...when the loop finishes at the command line, then the line shows on the image--but that last image isn't exported.
Reverse the order of those two lines and joy should/will ensue...
  4 Kommentare
dpb
dpb am 6 Aug. 2024
Bearbeitet: dpb am 7 Aug. 2024
OBTW, it would be more efficient to move the line
exportgraphics(ax,output_filename);
outside after the loop; no sense in rewriting the same file six times...one piece at a time; the final plot is the only one you're really interested in.
Nathan Hogaboom
Nathan Hogaboom am 7 Aug. 2024
Thank you!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Graphics Performance finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by