Drawing hyperbola using patch function.

I have to draw points in matlab which show trade-off (i.e, inversely relationship) for this reason I have to draw the hyperbola-like shape. I used the code shown below to draw points by using patch file now I need to hyperbola by using patch function.
% line([.1 .1 6 6 .1 .1],[.81 2.735 164 48.6 .81 2.735],'Marker','*','Color','k','LineStyle','-');
% line([4 4 6 6],[57 95 57 95],'Color','b','LineStyle','-');
patch([1.5 13.84 1.5],[13.8 1 288],'c','LineStyle','-')
%%%%%%%%%%%%%%%%P2 %%%%%%%%%%%%%%%%%%%%
x = [0.76 0.69];
y = [0.78 0.83];
annotation('textarrow',x,y,'String','P_{2}(29,405)')
% % %%%%%%%%%%%%%%%%%%%%P1 %%%%%%%%%%%%%%%
x = [0.65 0.60];
y = [0.47 0.55];
annotation('textarrow',x,y,'String','P_{1}(24,288)')
% % %%%%%%%%%%%%%P3%%%%%%%%%%%%
x = [0.76 0.69];
y = [0.60 0.65];
annotation('textarrow',x,y,'String','P_{3}(29,334)')

6 个评论

Why does it need to be patch()? Do you need to draw a line that changes color? Do you need to texturemap on top of it? Do you need to make semi-transparent lines?
Have you considered using fill() or area() ?
Dear Roberson!!! I have an inverse relationship between two quantities and I want to draw that relationship which is like a hyperbola. I have patch files to draw many other functions but unable to draw hyperbola with patch function thats why I am asking this question. Thank you for your reply
Have you considered using area() ? It creates a patch() but with a syntax that is more convenient.
I have considered points on x-axis and y-axis to plot as shown in the code. Similarly, I have points to draw hyperbola. and I have no idea of area or syntax etc, as you have mentioned. Thank you, Walter Roberson.
Are you looking for something that draws an area, or are you looking for something that draws a curved line?

请先登录,再进行评论。

 采纳的回答

%%hyperobola equation
% x^2/a^2-y^2/b^2=1
% hyperbola parameters
a = 1; b = 1;
% define the x-space
xmin = 5;
xmax = 5;
% convert in t-space
tmin = acosh(xmin/a);
tmax = acosh(xmax/a);
% hyperbola computation
t = linspace(-tmin,tmax,10);
x = a*cosh(t);
y = b*sinh(t);
% final plot
figure, set(gcf,'color',[1 1 1])
patch(x,y,'b')
hold on
patch(-x,y,'b')

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by