How do I use matlab to plot a graph where the x,y axes do not intersect?

13 visualizaciones (últimos 30 días)
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 comentarios
Adam Danz
Adam Danz el 28 de Abr. de 2021
> So look out for future versions with more axes to customise and personalise
@cui, what does that mean?
cui,xingxing
cui,xingxing el 29 de Abr. de 2021
Oh, what I meant to say was that I hope that future versions will enhance the personalisation of axes properties.
PS: I am not very good at English, sorry

Iniciar sesión para comentar.

Respuesta aceptada

Jonas
Jonas el 28 de Abr. de 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 comentarios
cui,xingxing
cui,xingxing el 30 de Abr. de 2021
@Adam DanzI'm very glad to hear that! But I personally think that these "basic issues" should be left to the mathworks development engineers, and that the new version should enhances these shortcomings.
Adam Danz
Adam Danz el 30 de Abr. de 2021
I'm not so sure disconnected axes is a very popular idea. What's the benefit of doing this, by the way? Curious.

Iniciar sesión para comentar.

Más respuestas (1)

Bob Thompson
Bob Thompson el 27 de Abr. de 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 comentarios
cui,xingxing
cui,xingxing el 28 de Abr. de 2021
I can't find any customisation of axes properties related to axis position lengths etc. in the axes properties rulers, not in the documentation at the moment.
It would be nice to have a concrete and elegant code implementation.
Adam Danz
Adam Danz el 28 de Abr. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by