我想用以下方法绘制双曲线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
的垂直渐近线)并导致:sec
tan
\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}