I'm trying to draw an arrow using the recommended approach, i.e., using axxy2figxy, and maintain the flexibility to use commands like axis square and change the XLim properties after drawing my arrow. The code below illustrates two problems. First, after using the axis square command, the arrow is misaligned. Second, I can get my arrow in the right place, but if I then change the axis limits, the arrow stays in the same physical location, but I want it to move so that it maintains the same place relative to the changed axes. Such a simple requirement!!! The most important thing for me is to get a square axis rather than a rectangular one.
close allxCoords = [-0.5,0];yCoords = [-0.5,-0.5];set(gca,'XLim',[-1,3]);set(gca,'YLim',[-1,3]);axis square[axx,axy] = axxy2figxy(gca,xCoords,yCoords);h = annotation('arrow',axx,axy);disp('The arrow is in the wrong place because of the ''axis square'' command');input('Hit any key to continue\n')plot([-2,3],[-2,3],'color','w');[axx,axy] = axxy2figxy(gca,xCoords,yCoords);h = annotation('arrow',axx,axy);disp('This kludge creates an arrow in the right place');input('Hit any key to continue\n')disp('Now resetting the xlimits shifts the axes but not the arrow');set(gca,'XLim',[-3,3])
Best Answer