使用 pgfplots 绘制隐函数

使用 pgfplots 绘制隐函数

使用 绘制隐函数的正确方法是什么pgfplots?请考虑以下示例:

\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}
  \begin{axis}
    \addplot+[mark=none] function[raw gnuplot] {
      set contour base;
      set cntrparam levels discrete 0.0;
      unset surface;
      set view map;
      set isosamples 500;
      splot exp(x)*cos(y)-1-x;
    };
  \end{axis}
\end{tikzpicture}

\end{document}

该函数如下所示gnuplot

预期结果

pgfplots然而,连接了函数的段,这是出乎意料的:

pgfplots 结果不正确

答案1

PGFPlots 的开发版本包含一个empty line可用于影响行为的选项。它设置为jump,当遇到空行时会中断绘图。如果您使用的是 TeXLive,您可以通过 tlmgr 临时使用存储库来更新 PGFPlotshttp://tlcontrib.metatex.org/2010

交叉点处的间隙是 gnuplot 引入的数值伪影。它无法完全修复,但通过用较粗的线绘图,并选择稍微不同的轮廓线来绘制,可以掩盖它:

\documentclass{article}
\usepackage{pgfplots}

\pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}
  \begin{axis}
    \addplot +[no markers,
      raw gnuplot,
      thick,
      empty line = jump % not strictly necessary, as this is the default behaviour in the development version of PGFPlots
      ] gnuplot {
      set contour base;
      set cntrparam levels discrete 0.003;
      unset surface;
      set view map;
      set isosamples 500;
      splot exp(x)*cos(y)-1-x;
    };
  \end{axis}
\end{tikzpicture}

\end{document}

pgfplots/gnuplot 等高线图

相关内容