如何用 addplot 绘制双曲线

如何用 addplot 绘制双曲线

我想用以下方法绘制双曲线pgfplots

(x+1)^2/4-(y-2)^2/9=1

答案1

正如评论中所述,您可以使用根问题将方程重新表述为“y = f(x)”。

另一种方法是将其解释为“f(x,y)= (x+1)^2/4-(y-2)^2/9”并绘制轮廓“f(x,y) = 1”:

\documentclass{standalone}

\usepackage{pgfplots}

\pgfplotsset{compat=1.13}


\begin{document}

\begin{tikzpicture}
    \begin{axis}[view={0}{90}]
    \addplot3[domain=-10:10,
        contour gnuplot={labels=false,levels={1}}
    ] {(x+1)^2/4-(y-2)^2/9};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

该值domain=-10:10决定了计算范围。由于domain y缺少,pgfplots 假定它也应该使用-10:10

请注意,您需要通过来编译它,pdflatex -shell-escape file.tex并且需要gnuplot安装。

请注意,这种方法适用于任何类型的绘图程序,而不仅仅是pgfplots

答案2

我强烈建议您通过 Google 搜索 tikz/pgf 教程,至少自学基础知识。这样您会学到更多。

x < -3这里最直接的方法是使用或求解 y=2±√(9*(x+1)^2/4-9) 1 < x。绘制此图需要四个命令,结果是

\begin{tikzpicture}
    \begin{axis}[xmin=-10,xmax=10,ymin=-10,ymax=10]
        \addplot[domain=-10:-3] {2+sqrt(9*(x+1)^2/4-9)};
        \addplot[domain=-10:-3] {2-sqrt(9*(x+1)^2/4-9)};
        \addplot[domain=1:10] {2+sqrt(9*(x+1)^2/4-9)};
        \addplot[domain=1:10] {2-sqrt(9*(x+1)^2/4-9)};
    \end{axis}
\end{tikzpicture}

第一个情节

这不是一个好的图(左侧有明显的间隙,如果仔细观察,您会发现右侧在顶点附近有一些直线段和角度)。为了解决这个问题,我们可以更改为参数图: 。绘制此图仍然需要两个命令(以避免和x=2*sec(t)-1, y=3*tan(t)+2的垂直渐近线)并导致:sectan

\documentclass{standalone}

\usepackage{pgfplots}

\pgfplotsset{compat=1.13}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[xmin=-10,xmax=10,ymin=-10,ymax=10]
        \addplot[domain=-89:89] ({2*sec(x)-1},{3*tan(x)+2});
        \addplot[domain=91:269] ({2*sec(x)-1},{3*tan(x)+2});
    \end{axis}
\end{tikzpicture}

\end{document}

最终情节

答案3

文本

\documentclass[border=2pt]{standalone} 
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-10,xmax=10, ymin=-15, ymax=15,
   restrict x to domain=-20:20]% remove crossing lines at t=90 and t=270
  \addplot[variable=t,domain=0:360,samples=200] ({2*sec(t)-1}, {3*tan(t)+2});
\end{axis}
\end{tikzpicture}
\end{document}

演示

相关内容