如何在 pgfplots 上绘图?

如何在 pgfplots 上绘图?

axis我怎样才能在上绘图pgfplots?我已经发现,我必须axis cs:在坐标前面使用 (这是什么cs意思?),但以下示例不会绘制椭圆:

\begin{tikzpicture}
  \begin{axis}
    \draw (axis cs:0,0) ellipse (1cm,1cm);
  \end{axis}
\end{tikzpicture}

我做错了什么?在轴图上绘图的一般方法是什么?

答案1

让我们分解一下:

路径运算符的“旧语法”ellipseellipse (<x radius> and <y radius>)

但是,有一种更新更好的语法。我同意手册中的说法:

注意:对于圆 [和椭圆] 也存在一种较旧的语法,其中圆的半径在圆命令后紧接着的括号中给出,如circle (1pt)。虽然这种语法更简洁一些,但对于代码读者来说更难理解,并且使用括号表示坐标以外的内容是不明智的。

  — PGF 手册,第 14.7 节“圆和椭圆操作”,第 148 页

以下语法更具可读性:

\draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];

您还可以添加scale选项rotate或者在样式中使用它们every circle……

但仍然没有椭圆的输出。:(

阅读第 4.16 节“自定义注释”,第 263 页及后续页面pgfplots手动的我们可以找到几个使用路径运算符的示例,其中始终给出轴限值。如果环境不包含单个图,ellipse则需要这些。axis

因此,这是可行的:

\begin{axis}%[xmin=-1,xmax=1,ymin=-1,ymax=1]
  \addplot {x^2 - x + 4};
  \draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
\end{axis}

这不会:

\begin{axis}%[xmin=-1,xmax=1,ymin=-1,ymax=1]
  \draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
\end{axis}

但是这个:

\begin{axis}[xmin=-1,xmax=1,ymin=-1,ymax=1]
  \draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
\end{axis}

您还可以使用pgfplots方向向量中给出的半径,这些半径会自动使用axis direction cscs代表坐标系,坐标系本身在 PGF 手册中有一整章)。为此,您至少需要设置 compat=1.5.1

只需省略尺寸单位并pgfplots自动假设axis direction cs

\draw (axis cs:0,0) ellipse [x radius=2,  y radius=.5];

代码

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[xmin=-1,xmax=1,ymin=-1,ymax=1]
%    \addplot {x^2 - x +4};
    \draw (axis cs:0,0) ellipse [x radius=1cm, y radius=1cm];
    \draw (axis cs:0,0) ellipse [x radius=2,  y radius=.5];
  \end{axis}
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容