TikZ:绘制轮廓线

TikZ:绘制轮廓线

我在实平面上有一个(连续)函数(例如f(x,y)=x^2-x*y),我想绘制轮廓线(例如f(x,y)=-1f(x,y)=1等等)。此外,我想调整执行此操作的区域(例如在正方形 [-3,3]² 上)。生成的图片应如下所示:

理想的情节

我知道如何在 MATLAB 中执行此操作(使用contour),但是否有可能在 TikZ 中执行此操作? 一个执行此操作的最小示例就很棒了!

(还有一个问题:我的实际函数是一个复数多项式的实部(例如f(z)=Re(z^2-1))。当然,我可以使用手动计算它z=x+iy,但是有没有一种优雅的方法可以在 TikZ 中直接使用这个复数项?)

答案1

pgfplots 手册中充满了轮廓图的示例。更新:我错过了轮廓在+1 -1。非常感谢@Mike 指出这一点!

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.16} 
\begin{document}
\begin{tikzpicture} \begin{axis}[
    title={$x^2-x\,y$},
    enlarge x limits,
    view={0}{90},
    xlabel=$x$, ylabel=$y$,
    small,
]
\addplot3[domain=-3:3,
        domain y=-3:3,
        contour gnuplot={levels={-1,1},labels=false},
        thick,samples=50,samples y=50,
    ] {x^2-x*y};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

既然无论如何都要使用gnuplot,你也可以让它完成所有的数字运算。这样速度会快得多,但当然,这需要一些关于的知识gnuplot。在你的情况下,你甚至必须使用选项raw gnuplot

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.15} 
\begin{document}
\begin{tikzpicture} \begin{axis}[
    title={$x^2-x\,y$},
    view={0}{90},
    xlabel=$x$, ylabel=$y$,
    small,
]
\addplot gnuplot[raw gnuplot,thick,mark=none]
    {
        unset surface;
        set cntrparam levels discrete -1,1;
        set contour;
        set yrange [-3:3];
        splot [x=-3:3] x**2-x*y;
    };
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容