如何使用 gnuplot 和 tikz-pgf 平滑地绘制隐函数?

如何使用 gnuplot 和 tikz-pgf 平滑地绘制隐函数?

我想使用 tikz 和 gnuplot 在 Latex 中绘制隐式函数。我的代码的一个最小示例如下:

\documentclass{article}
  \usepackage{tikz}
\begin{document}
  \begin{tikzpicture}[xscale=1,yscale=.25]
    \draw plot[id=curve, raw gnuplot] function{
      f(x,y) = y**2 + (x**2 - 5)*(4*x**4 - 20*x**2 + 25);
      set xrange [-4:4];
      set yrange [-15:15];
      set view 0,0;
      set isosample 1000,1000;
      %set size square;
      set cont base;
      set cntrparam levels incre 0,0.1,0;
      unset surface;
      splot f(x,y)
    };
  \end{tikzpicture}
\end{document}

这会产生以下丑陋的输出。我期望得到一个流畅的图。 代码生成的输出

问题发生在 Windows 7 上的 MikTex 2.9 上。根据 Miktex 包管理器,pgf 的版本是 3.0.0,根据命令 \pgfversion,版本是 2.10。我假设“正确”的版本号是 3.0.0,因为我的 pgf 目录中的文件最后一次修改是在 2013-12-13,这与 Sourceforge 上 3.0.0 版本的修改日期是同一天(http://sourceforge.net/projects/pgf/files/pgf/

我还尝试在 Ubuntu 上使用 \pgfversion 2.10 编译该文档。结果与在 Windows 上相同。

这里也出现了同样的问题:

如何使用“原始输出”的结果创建平滑的图

上述帖子中描述的问题应该自2013-07-31起得到解决,请参阅:

http://sourceforge.net/p/pgf/bugs/149/#e1ce

在 SO 问题中,Pieter 进一步提出了一个比较 hackish 的解决方案,我尝试了一下,但是它并没有改变情节。

感谢您的帮助!

答案1

只是为了用 PSTricks 来找点乐子的解决方案。

\documentclass[pstricks,border=15pt,12pt]{standalone} 
\usepackage{pst-func} 

\begin{document} 
\begin{psgraph}[Dy=2](0,0)(-3,-12)(3,12){12cm}{12cm}
    \psplotImp[algebraic,linecolor=red,stepFactor=.3](-2.5,-12)(2.5,12){y^2 + (x^2-5)*(4*x^4-20*x^2+25)}
\end{psgraph}
\end{document}

在此处输入图片描述

答案2

感谢这些有用的评论,我发现要解决的问题是让 pdflatex 使用 pgf 3.0.0 版本。

由于 Miktex 包管理器说我安装了 3.0.0 版本,并且 pgf 包不可更新,但 \pgfversion 显示版本 2.1,我认为我的 MikTex 安装(出于未知原因)已损坏。因此我决定卸载并重新安装 Miktex。

这解决了我的问题。我现在得到了预期的输出,正如 Harish Kumar 所说:

代码正确输出

相关内容