我想使用 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 所说: