How do I use matlab to plot a graph where the x,y axes do not intersect?
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
cui,xingxing
am 27 Apr. 2021
Kommentiert: Adam Danz
am 30 Apr. 2021
How can I use matlab to plot a graph where the x,y axes do not intersect? Similar to the image below, note that the bottom left corner does not cross.The x- and y-axes are shown with specified ranges
5 Kommentare
Akzeptierte Antwort
Jonas
am 28 Apr. 2021
not elegant, but possible if i'm not mistaken:
fig=figure;
% amount of shift of x and y axis in normalized coordinates
dx=0.05;
dy=0.05;
plotAx=axes('Position',[0.1 0.1 0.85 0.85],'Color','none');
% create shifted y axis
yax=axes('Position',plotAx.Position-[dx 0 -dx 0],'Color','none','XColor','none');
yax.XGrid='off';
% create shifted x axis
xax=axes('Position',plotAx.Position-[0 dy 0 -dy],'Color','none','YColor','none');
xax.YGrid='off';
axes(plotAx); % set curr axis
% plot sample data
x=-2:0.1:2;
y=(x-1).^2+1;
plot(plotAx,x,y)
grid off;
linkaxes([plotAx,yax,xax]);
yticklabels([]);
xticklabels([]);
% remove rulers
plotAx.XColor='none';
plotAx.YColor='none';
5 Kommentare
Adam Danz
am 30 Apr. 2021
I'm not so sure disconnected axes is a very popular idea. What's the benefit of doing this, by the way? Curious.
Weitere Antworten (1)
Bob Thompson
am 27 Apr. 2021
Create your figure first, then create the axes. This will allow you to specify what they are before the data gets populated, and should allow you to fix their positions.
I have not looked at the documentation in enough detail to confirm it will do exactly what you want, but it should be in the axes command.
2 Kommentare
Adam Danz
am 28 Apr. 2021
cui is correct here. There are no axes properties that can achive this. There are, however, undocumented ruler properties that can achieve at least some of it.
Siehe auch
Kategorien
Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!