
Plotting functions with removable singularities
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Modesto Rosado
il 21 Mag 2020
Commentato: John D'Errico
il 23 Mag 2020
Hello, I have a rather simple question about 2D plots. Is it possible to plot functions like f(x)=x if x=/=a and f(x)=b if x=a in such a way that we can avoid a 'spike' at the point of discontinuity. Specifically I would like to give a plot of f(x) where the discontinuity is emphasized in the following way:

Is it even possible to do this in a straightforward way? I came up with a rather complicated solution (basically programming everything from scratch), but the result wasn't exactly what I was looking for and was very time-consuming. I should also mention that I'm new to Matlab so I'm not familiar with the most advanced features.
0 Commenti
Risposta accettata
John D'Errico
il 21 Mag 2020
Modificato: John D'Errico
il 21 Mag 2020
I can't really think of anything obviously easy.
I might do it like this:
F = @(x) x + 3;
fplot(F,[-3,3],'m')
hold on
H1 = plot(1,F(1),'o');
H2 = plot(1,2,'o');
H1.Color = 'm';
H1.MarkerFaceColor = 'w';
H2.MarkerFaceColor = 'm';
H0 = gca;
H0.YAxisLocation = 'origin';

That has pretty much the look of what you indicated.
I won't even try to claim how I did it was trivially easy. It was not truly difficult either. Those words apply to the eye of the person doing the work, and easy to someone is not so to someone else. It might even be what you chose to do.
2 Commenti
John D'Errico
il 23 Mag 2020
(Smile) Ok. I was not sure.
Much/most of what I did was the use of graphics handles. So I overlaid a white circle at the point of interest on the curve, then plotted another below it in a different color. Note the use of hold on to tell MATLAB I wanted to continue plotting in the same figure.
If you are not used to the idea of how graphics handles work, you might want to just play around with them.
For example, if you return an argument from essentially any tool that generates something in a figure window, you will get a handle.
H = plot(1:5)
H =
Line with properties:
Color: [0 0 1]
LineStyle: '-'
LineWidth: 0.5
Marker: 'none'
MarkerSize: 6
MarkerFaceColor: 'none'
XData: [1 2 3 4 5]
YData: [1 2 3 4 5]
ZData: [1×0 double]
Show all properties
Those are the default properties associated with what I just plotted. Now you can modify these properties by doing things as I did, and the figure immediately updates to show the change made.
H.Color = 'b';
will make the line blue.
There are also the functions gca and gcf, which will also return handles to the set of axes (gca = get current axes) and gcf (get current figure). This allows you to control aspects of the axes in a figure and the figure itself.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Axis Labels in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!