问题 18359

问题 18359

我想使用 TikZ 绘制一个简单方程式(如 x^2+xy+2y^2=1)的图形。这里有一些关于隐式图的帖子,但对我而言都不起作用。

我正在使用 TeXShop 版本 3.92 和\documentclass{book}

答案1

问题 18359

回答问题 18359对我有用。更改后的行:

splot x^2 + x*y + 2*y^2 - 1;

我添加了一行

set samples 500;

以获得更平滑的曲线。

完整示例:

\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;
      set samples 500;
      splot x^2 + x*y + 2*y^2 - 1;
    };
  \end{axis}
\end{tikzpicture}

\end{document}

此解决方案需要格努普特已安装并可在命令行上使用。根据 TeX 配置(texmf.cnf在 TeX Live 中),通常需要 TeX 编译器的选项-shell-escape(TeX Live)/ -enable-write18(MiKTeX) 来运行示例,请参阅评论莎丽。

结果

问题 285246

例如问题 285246还可与以下函数配合使用:

f(x,y) = x**2 + x*y + 2*y**2 - 1;

(x 2表示为x**2。)

完整示例:

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

结果

答案2

那这个呢?

\documentclass{article}
\usepackage{pgfplots} % It is based on tikz!
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot3[
surf,
samples=20,
domain=-100:100,
y domain=-100:100
] 
{x^2+x*y+2*y^2-1};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

如果您不介意非 tikz 解决方案,那么mfpicMetaPost 语言包接口似乎可以通过其\levelcurve命令很好地解决此类问题。

\documentclass[border=3bp]{standalone}
\usepackage[metapost, mplabels, truebbox]{mfpic}
  \setlength{\mfpicunit}{1cm}
  \opengraphsfile{\jobname}
\begin{document}
\begin{mfpic}[2]{-1.5}{1.5}{-1.5}{1.5}
  \drawcolor[gray]{0.7}
  \gridlines{.5,.5}
  \drawcolor{black}
  \levelcurve{origin, .01}{x**2 + x*y + 2(y**2) < 1}
  \doaxes{xy}
  \tlpointsep{3bp}
  \tlabels{[tc]{(-1, 0)}{$-1$} [tc]{(1, 0)}{$1$} [tc]{(\xmax, 0)}{$x$}}
  \tlabels{[cr]{(0, -1)}{$-1$} [cr]{(0, 1)}{$1$} [cr]{(0, \ymax)}{$y$}}
\end{mfpic}
\closegraphsfile
\end{document}

使用 TeXShop,先用 (PDF)LaTeX 处理该 TeX 文件,然后再用 MetaPost 处理,最后再次用 LaTeX 处理。

在此处输入图片描述

查看mfpic文档有关此最有用命令的更多信息,请参见第 44-45 页。

答案4

\begin{tikzpicture}
    \begin{axis}[hide axis,xmin=-2,xmax=2,ymin=-2,ymax=2,]
    \addplot [blue,thick,domain=0:360,samples=200]({(cos(x)+sin(x)},{sin(x)});
    \end{axis}
\end{tikzpicture}

相关内容