Plotting functions with removable singularities

조회 수: 21 (최근 30일)
Modesto Rosado
Modesto Rosado 2020년 5월 21일
댓글: John D'Errico 2020년 5월 23일
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.

채택된 답변

John D'Errico
John D'Errico 2020년 5월 21일
편집: John D'Errico 2020년 5월 21일
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
Modesto Rosado
Modesto Rosado 2020년 5월 21일
Your solution seems easy enough. I only need to figure out the commands you used. Trust me. What I was trying to do was incredibly more complicated.
John D'Errico
John D'Errico 2020년 5월 23일
(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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Graphics Object Identification에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by